2023-04-05 21:22:53
高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,通常指通过设计保证系统能够同时并行处理大量请求。其核心目标是优化系统性能,确保在多用户、高请求场景下仍能稳定运行。以下是详细解析:
一、高并发的核心指标通过提升单机性能来增强并发能力,分为两种方式:
增强单机硬件性能
增加CPU核数(如32核)、升级网卡(如万兆)、使用SSD硬盘、扩充内存(如128G)等。
适用场景:业务发展初期,预算充足且需快速抢占市场时优先选择。
局限性:单机性能存在物理极限,无法无限扩展。
提升单机架构性能
使用缓存减少IO次数(如Redis缓存热点数据)。
采用异步处理增加单服务吞吐量(如消息队列解耦任务)。
使用无锁数据结构降低响应时间(如ConcurrentHashMap)。
局限性:优化复杂度高,且仍受单机资源限制。
通过增加服务器数量线性扩充系统性能,是互联网高并发架构的终极解决方案。
互联网系统通常分为以下层次,各层水平扩展方式如下:
1. 客户端层DNS服务器为域名配置多个IP,每次解析请求轮询返回不同IP。
新增Nginx服务器并配置外网IP即可扩展孝吵性能。
优势:理论上可实现无限高并发。
修改Nginx配置文件(nginx.conf),添加多个Web后端服务器。
新增Web服务器并在Nginx中配置即可扩展性能。
优势:支持动态扩容,理论并发能力无限。
RPC客户端(RPC-client)维世闷护与下游服务的多个连接。
新增服务实例后,RPC客户端自动建立新连接。
优化:结合配置中心的服务自动发现功能,实现优雅扩容。
作用:存储和管理系统数据。
扩展方式:数据水平拆分(分库分表),分为两种策略:
按范围拆分
示例:将用户ID(uid)按范围划分,如user0库存储1-1000万,user1库存储1000万-2000万。
优势:规则简单,扩展性强(可随时新增范围)。
劣势:新用户活跃度高可能导致负载不均。
按哈希拆分
示例:对uid取哈希值,偶数存user0库,奇数存user1库。
优势:数据和请求分布均匀。
劣势:扩容时需迁移数据(如新增库需重新计算哈希)。
与主从同步的区别
水平拆分:每个节点存储部分数据,读写性能均提升(理论读/写性能扩大N倍)。
主从同步:所有节点存储全量数据,仅提升读性能(写性能仍受限于主库)。
垂直扩展:提升单机性能,适合初期快速迭代,但存在物理极限。
水平扩展:增加服务器数量,是互联网架构的终极方案,需结合分层设计实现。
反向代理层:DNS轮询。
站点层:Nginx负载均衡。
服务层:RPC连接池。
数据层:范围或哈希拆分。
通过合理设计分层架构并实施水平扩展,系统可实现理论上的无限性能提升,满足高并发场景需求。