李智慧 · 高并发架构实战课
李智慧
同程艺龙交通首席架构师,前 Intel & 阿里架构师,《大型网站技术架构》作者
23286 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 26 讲
李智慧 · 高并发架构实战课
15
15
1.0x
00:00/00:00
登录|注册

02 | 高并发架构设计方法:面对高并发,怎么对症下药?

RPC远程调用
服务注册中心
key路由算法
服务器选择机制
日活用户数
月活用户数
微服务框架
微服务网关集群
拆分单体应用
分布式数据库集群
数据分片
包含生产者、队列、消费者
简化集群伸缩
解决高并发写操作问题
构建分布式缓存集群
提高数据访问速度
减轻数据库负载
分布式应用集群
负载均衡服务器
构建分布式集群
使用更多服务器
升级单台服务器硬件
需要更多的硬盘空间
需要更多的网络带宽
需要更多的 CPU 和内存
分布式缓存客户端SDK
每秒处理的请求数
总网络带宽
数据库规模
文件存储空间
并发用户数
在线用户数
活跃用户数
系统用户数
目标用户数
反向代理
CDN
NoSQL
搜索引擎
区块链
分布式文件系统
大数据
分布式微服务
分布式关系数据库
分布式消息队列
分布式缓存
分布式应用
水平伸缩
垂直伸缩
提供更多计算资源
系统资源消耗增加
用户并发访问量大
思考题
技术指标估算
系统并发指标
其他分布式技术
分布式技术方案
高并发系统架构的方法论
高并发的挑战
高并发架构设计方法

该思维导图由 AI 生成,仅供参考

你好,我是李智慧。
我们知道,“高并发”是现在系统架构设计的核心关键词。一个架构师如果设计、开发的系统不支持高并发,那简直不好意思跟同行讨论。但事实上,在架构设计领域,高并发的历史非常短暂,这一架构特性是随着互联网,特别是移动互联网的发展才逐渐变得重要起来的。
现在有很多大型互联网应用系统,其用户是面向全球的普通大众,用户体量动辄十几亿。这些用户即使只有万分之一同时访问系统,也会产生十几万的并发访问量。
因此,高并发是现在的大型互联网系统必须面对的挑战,当同时访问系统的用户不断增加时,要消耗的系统计算资源也不断增加。所以系统需要更多的 CPU 和内存去处理用户的计算请求,需要更多的网络带宽去传输用户的数据,也需要更多的硬盘空间去存储用户的数据。而当消耗的资源超过了服务器资源极限的时候,服务器就会崩溃,整个系统将无法正常使用。
今天我将基于高并发系统的技术挑战,来为你介绍典型的分布式解决方案。这节课的内容,会被应用到后面的大部分实战案例中。所以我希望通过这节课,带你做个简单的预习,同时你也能对自己学过的高并发技术做个简单回顾。
我要先说明一点,今天的高并发系统架构方法比较多,但它们是殊途同归的,都要遵循一个相同的高并发应对思路。所以我们今天的首要目标就是明确这个思路到底是什么,也就是要搞清楚高并发系统架构的方法论。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了高并发架构设计的核心关键词及相关技术方法。随着互联网和移动互联网的发展,高并发成为大型互联网系统必须面对的挑战。文章提出了垂直伸缩和水平伸缩两种技术方案,并探讨了分布式应用、分布式缓存、分布式消息队列和分布式关系数据库等技术方法。通过负载均衡服务器构建分布式应用集群,使用缓存和消息队列解决高并发读写问题,以及将数据进行分片存储实现数据库的伸缩性。这些技术方法能够有效提升系统的处理能力,保证系统正常运行,并且具有较好的弹性,适应互联网应用系统的不确定性。此外,文章还介绍了分布式微服务架构和系统并发指标,为读者提供了高并发架构设计的重要思路和技术方法。文章内容丰富,涵盖了分布式技术、大数据、NoSQL等多个方面,对于对高并发架构设计感兴趣的读者具有较高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《李智慧 · 高并发架构实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(23)

  • 最新
  • 精选
  • 👽
    hash和分段 hash,根据key的hash值定位目标所在地址。hash值1结尾的key在node1,2结尾的在node2等。 数据分布比较平均,但是不方便扩容。因为扩容的话,就要重新编辑hash到node的映射逻辑。 分段,每个node值存储一个范围内的数据。id 100万到101万,在node1,101-102万在node2。 方便扩容,但是数据热点分布可能不均匀。 比如现在分配到node11了id值是111万,数据增加1万增加一个node就好。不需要重新处理映射逻辑。 但问题是,数据热点可能不均匀。比如101-110万都是老用户,现在已经不活跃了。热点用户都在最新的1万个用户。带来的结果就是,处理前10万个用户的node饿死了,而最新的node11可能都已经撑死了。 还是要根据实际业务来决定方案。 另外,以上数据只是随便列一下,实际node存储的数据量肯定远超这个数据量。不要太较真。

    作者回复: 是的,这是两种目前使用比较广泛的方法,1的算法主流是一致性Hash,主要是解决扩容的问题。

    2022-02-21
    2
    17
  • 国大霞
    一致性Hash算法 + 虚拟节点 还有Redis集群用的哈希槽的方式

    作者回复: 赞

    2022-04-03
    8
  • 潘政宇
    由于数据库的性能瓶颈,会不会造成消息队列的消费速度远低于生产速度,导致消息队列崩溃?

    作者回复: 这正是消息队列的一个作用:削峰填谷,用消息队列适配生产速度和消费速度不匹配的问题。 至于长期不匹配,搞的消息队列崩溃,那是数据库设计出了问题了。

    2022-02-18
    7
    7
  • Mark C. Mu
    首先,我想到的是通过计算key的hash值并取余来找到缓存集群的位置,这个办法简单粗暴,但带来的问题就是当缓存集群进行扩缩容的时候需要将缓存中的所有数据的key重新计算hash值并根据结果迁移数据,这带来了很高的迁移成本。 Redis集群应该是使用一致性哈希算法,将服务器和缓存key全放在一个哈希环上,缓存保存在顺时针找到的最近的服务器上,当扩容时只会损失一台服务器中大约一半的缓存数据,扩展性好很多,哈希不均匀也可以通过虚拟节点的方式得到很大程度的解决。

    作者回复: 是的。不过Redis还有另一种解决办法~

    2022-02-19
    2
    5
  • peter
    请教老师几个问题: Q1:Nginx可以认为是一个负载均衡服务器吗? Nginx一般的用途是“反向代理服务器”,但它也有负载均衡功能,那么,Nginx也可以认为是一个负载均衡服务器吗? Q2:消息队列可以用在请求和应用服务器之间吗? 文中消息队列是用在应用服务器和数据库之间,但是,如果请求过多,应用服务器也会处理不过来。请问:消息队列可以用在请求和应用服务器之间吗?比如请求先到外部网关Nginx,那么,Nginx和应用服务器之间,如果请求太多,会引入消息队列吗? Q3:Mysql是分布式数据库吗? Q4:微服务网关中怎么会有微服务客户端呢? A 在“分布式微服务”章节中,微服务网关中有“微服务客户端”。现在流行的SpringCloud体系中,微服务网关是Spring Gateway。Spring Gateway是个独立的组件,它的内部怎么会有各个具体微服务的客户端呢? B “并将处理结果构造成最后的响应结果返回给用户”,响应结果会是在微服务网关内完成的吗?应该是微服务构造响应,然后微服务网关转发吧。 Q5:微服务架构中不一定是RPC吧。 SpringCloud是用Rest API,不是用RPC吧。

    作者回复: 1 可以 2 可以 3 MySQL不是分布式数据库,我们可以在MySQL上进行分片,实现分布式数据库。 4 这里微服务调用者被定义为微服务客户端,你需要在Spring Gateway里写调用微服务的代码,网关就是微服务客户端。 5 看怎么理解RPC,远程过程调用,HTTP也是一种RPC

    2022-02-19
    2
  • Eric
    用多个消息队列消费者去消费队列里面的信息时候保存至数据库时,该如何保证消息先后顺序

    作者回复: 有的消息队列产品会提供顺序性保障,但是更重要的是,尽量在设计上不依赖消息顺序性。用户的请求是独立的,以请求为单位构造的消息不需要保证顺序性。

    2022-03-13
    1
  • 叔辉 Shuhey
    一般用什么消息队列来接api数据?我想先保存 。其它程序慢慢来获取,然后保存到数据库。 可能有少部分高峰api数据情况

    作者回复: 应用中常用的有ActiveMQ,RocketMQ,大数据相关常用Kafka。

    2022-02-18
    2
    1
  • Broce
    期待后面的精彩课程

    作者回复: 谢谢,一起学习~

    2022-02-21
  • Alex
    期待后面精彩的课程
    2022-02-18
    3
  • 黄小咸
    key 的分片算法:常用两种,range或hash
    2022-03-28
    2
收起评论
显示
设置
留言
23
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部