NOTE
1.5 如何设计高并发系统
1. 什么是可伸缩 - 描述系统应对负载增长的能力 - 负载指的是并发数[性能测试.md](/notes/testing-performance/performance-testing/) 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. 读写分离
4.4. 写高并发
4.4.1. 异步
- 如何设计异步系统.md
- 可以先用Kafka抗一波
4.4.2. 缓存+批处理
- 如何设计缓存系统.md
- 将任务或数据缓存在内存队列中,再分批处理
4.4.3. 重读轻写
- 通过读扩散代替写扩散
讨论
使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看