01高并发设计思路

250 阅读3分钟

1.高并发设计思路

设计思路

  1. scale-out(横向扩展,分而治之):分布式部署的方式,将流量分开,让每个服务器承担一部分并发和流量
  2. 缓存:服务器能够处理的流量是有限的,通过缓存能快速返回结果,在相同时间内较不使用缓存处理更多请求(拓宽河道)
  3. 异步:未处理完的请求先返回,待数据准备好再通知请求方

2.Scale-up(纵向扩展)  VS  Scale-out(横向扩展)

摩尔定律:不断提升单核的性能(Scale-up),单核成为瓶颈后转为多核处理(scale-out)

Scale-upScale-out
实现思路提升现有服务器性能(一台)串联多态服务器
实现升级现有服务器性能将多个低性能机器组合成分布式集群处理流量
特点方案简单,适合系统设计初期突破单机限制引入复杂问题(可用性、一致性)

3.缓存

降低响应时间的中间存储成为缓存(广义的)

使用场景:操作系统、浏览器、数据库和消息队列.....

为什么要用缓存:因为持久化存储(磁盘)读取太慢了

磁盘为什么慢?:因为磁盘寻道时间长(磁头寻找信息花费时间 寻道时间)(相比CPU处理和内存读取)

磁盘的组成:

  • 机械手臂
  • 磁头
  • 转轴
  • 盘片(每个盘片划分成多个同心圆,类似CD光盘)
    • 磁道(存储具体信息)
    • 柱面
    • 扇区

盘片构造示意图 image.png

4.异步

同步:调用方等待被调用方中的逻辑执行完成(容易曹成阻塞,发生雪崩)

异步:调用方不需要等待被调用方中的逻辑执行完成(通过回调,事件通知反馈给调用方)

使用场景:

12306中,将请求写入消息队列后,快速响应用户并释放资源响应用户

再由具体的服务消费消息(生产者与消费者解耦,生产者的生产速度炳辉影响消费者的消费速度)

image.png

5.设计原则

  1. 最简单的系统设计满足业务需求流量现状,选择最熟悉的技术体系。
  2. 随着流量的增加和业务的变化修正架构中存在问题的点,如单点问题、横向扩展问题、性能无法满足需求的组件。在这个过程中,选择社区成熟的、团队熟悉的组件帮助我们解决问题,在社区没有合适解决方案的前提下才会自己造轮子。
  3. 当对架构的小修小补无法满足需求时,考虑重构、重写等大的调整方式以解决现有的问题。
  4. 高并发系统的演进应该是循序渐进,以解决系统中存在的问题为目的和驱动力的。

6.总结

  1. 高并发系统的演进是一个渐进的过程,并非一蹴而就的