三高
也就是所谓的高并发、高可用、高性能。这三者的关系是,当今的互联网高并发出现的情况比较多,为了解决高并发,所以我们需要保证系统的高可用和高性能。这三者的评判指标是,高并发方面要求 QPS(Queries Per Second,每秒查询率) 大于 10 万,高性能方面要求请求延迟小于 100 ms,高可用方面要高于 99.99%。
高并发
高并发是指能在同一时间内正确处理更多的请求
负载均衡
高并发首选方案就是集群化部署,一台服务器承载的QPS有限,多台服务器叠加效果就会有明显提升。当有集群以后,就需要把流量引到集群中某个节点,这时候就需要用到负载均衡
池化技术
复用单个连接无法承载高并发,如果每次请求都新建连接、关闭连接,考虑到TCP的三次握手、四次挥手,需要花费大量开销。池化技术的核心是资源的“预分配”和“循环利用”,常用的池化技术有线程池、连接池、进程池、对象池、内存池、协程池
流量过滤
做好前置校验,对于非法的、不符合要求的请求,设计好过滤器进行过滤,在进行真正的业务逻辑处理之前,先对流量过滤一轮,减少并发压力
消息队列
有些业务涉及到的处理流程非常多,但是很多步骤并不要求实时性,那么我们就可以通过消息队列异步处理。一般像秒杀、抽奖、抢卷这种活动都会伴随短时间内海量的请求, 一般都超过后端的处理能力,那么我们就可以在接入层将请求放到消息队列里,后端根据自己的处理能力不断从队列里取出请求进行业务处理,起到平均流量的作用。
高性能
高性能是指程序处理速度非常快,所占内存少、CPU 占用率低,解决方案有:避免因为 IO 阻塞让 CPU 闲置,导致 CPU 的浪费。
缓存技术
使用缓存减少IO次数,从而提高性能
磁盘技术
磁盘的数据读写效率低,而且比较耗费性能,所以我们可以把数据先写到内存中,然后在规定时间再写入磁盘
数据库优化
使用索引和查询优化可以提高数据库查询速度
网络传送优化
例如Dubbo底层基于dubbo协议,这样可以免除了http的3次握手等通信过程
添加硬件设备
使用更高效的cpu、内存等
高可用
高可用系统能够长时间的正常运行
微服务架构
利用微服务架构,分散能力,使得各个模块独立成为一个小系统,降低系统间的耦合性,提高系统对外提供正常服务的能力
熔断限流
熔断与限流,二者的目的都是提供过载保护,保证系统不至于崩溃,无法使用
分布式+集群部署
在高并发场景下,一个服务的部署,不应该只部署在一台服务器上,起码 3 台以上,这样,一台服务器宕机了,还有另外的服务器能正常使用并对外服务,这样就用到了集群的部署方式。
而采用微服务架构,也不应该把每个独立的小系统都部署在同一台服务器上,一个小系统就是一台服务器,这就使用了分布式部署。