NOTE
1.4 如何设计高并发系统
1. 什么是可伸缩 - 描述系统应对负载增长的能力 - 负载指的是并发数性能测试.md 2. 如何设计可伸缩系统 - 纵向扩容 - 横向扩容 3. 什么是高并发 - 读或写或者读写QPS高的系统 4. 如何设计高并发 4.1. 服务层可伸缩 - 做到加机器线性增长性能:每个服务是无状态的。就是没有那
这是历史学习笔记,可能存在过时或不完整的理解。
1. 什么是可伸缩
- 描述系统应对负载增长的能力
- 负载指的是并发数性能测试.md(关联笔记尚未公开)
2. 如何设计可伸缩系统
- 纵向扩容
- 横向扩容
3. 什么是高并发
- 读或写或者读写QPS高的系统
4. 如何设计高并发
4.1. 服务层可伸缩
- 做到加机器线性增长性能:每个服务是无状态的。就是没有那种某个业务必须在某个节点上操作的逻辑
- 即堆机器+负载均衡 服务扩容.md
4.2. 存储可伸缩
- 底层组件开启复制+分片功能。
- MySQL的主从复制进行读写分离+分库分表MySQL主从复制.md
- Redis开启clusterRedis Cluster.md
- ZK不行集群架构.md(原链接已失效)
- ES的集群Elasticsearch.md
- RabbitMQ镜像复制RabbitMQ集群模式.md(关联笔记尚未公开)
- Kafka的复制+分片Kafka架构.md
4.3. 读高并发
本质上通过复制的思想解决
4.3.1. 缓存
4.3.2. 重写轻读
- 通过写扩散代替读扩散
4.3.3. 读写分离
- 读写分离架构.md(关联笔记尚未公开)
4.4. 写高并发
4.4.1. 异步
- 如何设计异步系统.md(关联笔记尚未公开)
- 可以先用Kafka抗一波
4.4.2. 缓存+批处理
- 如何设计缓存系统.md
- 将任务或数据缓存在内存队列中,再分批处理
4.4.3. 重读轻写
- 通过读扩散代替写扩散
5. 如何验证高并发
- 压力测试.md(关联笔记尚未公开)