高并发架构设计的一些思考
高并发架构设计先从 What,Why,How 简单三方面来梳理:
What ?
能力
单位时间内(秒)系统能够并发处理的读写请求
主要指标
响应时间:系统对请求做出响应的时间。可以简单理解为一个http请求返回客户端所用的时间
吞吐量:单位时间内处理的请求数量。
QPS:每秒可以处理的请求数
并发用户数:同时承载正常使用系统功能的用户数量。多人同时使用该系统,并且系统正常运行。此时用户数量就是并发用户数
Why?
价值 :用户体验
业绩增长: 抢购活动 红包活动
How?
问题 : 先搞清楚问题的本质
做: 分层;垂直扩展;水平扩展
垂直扩展
提升单机处理能力
增强单机硬件性能
- 增加CPU核数 如32核
- 升级更好的网卡 如万兆
- 升级更好的硬盘 如SSD
- 扩充硬盘容量 如2T
- 扩充系统内存 如128G
提升单机架构性能
- 热点Cache减少IO次数
- 异步化增加单服务吞吐量
- 无锁化减少响应时间
在互联网业务发展非常迅猛的早期,如果预算不是问题,强烈建议使用“增强单机硬件性能”的方式提升系统并发能力,因为这个阶段,公司的战略往往是发展业务抢时间,而“增强单机硬件性能”往往是最快的方法。
水平扩展
不管是提升单机硬件性能,还是提升单机架构性能,都有一个致命的不足:单机性能总是有极限的。所以互联网分布式架构设计高并发终极解决方案还是水平扩展。
分层架构中,各层次水平扩展的实践又有所不同:
(1)负载均衡层:可以是DNS,可以是LVS,可以是反向代理;通过在不同的层次中的负载均衡方式来进行水平扩展;
(2)网关层:可以通过统一的接入网关来进行统一入口;
(3)服务层:可以通过拆分服务和连接池来进行水平扩展;
(4)存储层:可以按照数据规模,进行分库分表,主备,主从,集群,分片等多种方式进行水平扩展;
各层实施水平扩展后,能够通过增加服务器数量的方式来提升系统的性能,做到理论上的性能无限。
提升认知和格局
- 了解问题的本质
- 站在更高的角度上思考问题,以及看待人和事。
搭建技术知识体系结构
丰富自己的知识点
- 深挖各知识点,理解底层的原理
- 跳出局部思维,建立索引自己的知识索引
- 多总结归纳各知识点,能点、线、面串起来。
提升自身的能力
提升发现问题、分析问题、解决问题的能力。
后续会系统性更新一些架构设计的文章。