【高并发架构设计】-1:高并发通用设计思想
本文目录
- 1. 天下长河
- Scale-out
- 缓存
- 异步
1. 天下长河
最近看电视剧《天下长河》的时候,讲的就是自康熙十五年一场巨大的水患之后,年轻的康熙帝设科开举招纳治河贤才,二十四岁的落第举子陈潢脱颖而出,长于治河。 所以说,古代的时候,长江和黄河经常泛洪,那么他们是怎么治理的,主要有几种方式,比如拓宽河道,让河流降低流量;又或者是像都江堰一样,建造多个分流支流,分担压力;或者是像三门峡创建多个水库,然后再把水库的水排出去。
高并发也是指流量特别大,比如双十一这种,一般需要通过架构设计来抵抗高并发流量冲击,确保系统稳定性。
那么归根结底,我们也可以把高并发的方案概括为三种方案:
1、分布式:分而治之,直接分布式部署多个集群,把流量分开,每个服务器都来承担一部分的并发和流量问题。这个也可以看作是Scale-out,横向拓展思想。
2、缓存:通过建造缓存来提高系统的性能。
3、异步:某些场景下,比如微服务中的调用链路太长了,那么未处理完之前,可以让请求先返回,数据准备好了之后再通知请求方,可以在单位时间内处理更多请求。
Scale-out
Scale-out是指横向拓展,比如说分布式这种,对应的scale-up,就是指直接对单机的硬件性能进行提升,当系统超过了单机的极限的时候,一般是先考虑scale-up,然后再考虑scale-out。
本质上就是横向和纵向的这个意思,横向需要考虑很多的问题,比如说某个节点出现故障,如何保障整体集群的可用性;多个节点的状态信息如何同步;如何进行动态的增加删除节点而不影响系统正常运行。
缓存
普通的磁盘寻道时间通常是10ms,CPU执行指令和内存寻址的时间都是在ns级别,从千兆的网卡上读取数据的时间是在us微秒级别(即 1μs = 1000ns)。所以可以知道,磁盘是最慢的,会相差几个数量级。
缓存思想已经很久了,比如说CPU多级缓存、还有内存页的缓存,包括redis、kafka也都有这个内部缓存机制。
异步
异步很好理解,就是以方法调用为例,同步调用代表调用方要阻塞等待被调用方法中的逻辑执行完成。这种方式下,当被调用方法响应时间较长时,会造成调用方长久的阻塞,在高并发下会造成整体系统性能下降甚至发生雪崩。
异步调用恰恰相反,调用方不需要等待方法逻辑执行完成就可以返回执行其他的逻辑,在被调用方法执行完毕后再通过回调、事件通知等方式将结果反馈给调用方。
最常见的就是用消息队列,把消息丢进消息队列,然后直接返回给用户消息,那么就可以释放资源来处理更多请求。当请求全部处理完成之后,再告诉用户订票是否成功或者失败。