🗒️高并发系统的设计思路

发布于2021-09-23
😀
本文主要讨论高并发系统应该从哪些方面着眼,提供一个大概的思路
 

初步方案 加钱

  1. 提升机器的性能 提升硬件 比如8核心 到 16核心
  1. 部署多台机器分担压力 这就需要负载均衡
  1. 大部分应用的瓶颈在数据库 可以读写分离 分库分表
  1. 引入缓存 缓存一致性的问题 可以通过订阅binlog日志或者MQ的方式保证最终一致性
  1. Redis 一般部署为集群
 

限流

到了这里,系统已经具有很高的处理能力了 但是一个接口本来就是只能处理一秒一万次请求,但是突然出现峰值,在某一天有一秒一百万请求应该如何处理呢?
 
答案是限流,比如使用MQ 先把请求放入MQ 然后慢慢消化,大家排着队来,出口按照能力慢慢消化,当然结果往往就是用户需要等待一会。 比如支付场景 秒杀场景 抢购场景
 
同时,我们还需要加上限流,如果我们的系统只能承载一万的流量,那我们就只能允许流量一万一个批次的过来。
 

DNS 负载均衡

但是入口都是统一的,如果入口撑不住则应该使用 DNS负载均衡 将同一个域名分发的不同的服务区处理
 

其他

  • 将静态资源放入CDN中加速访问 且不消耗应用服务器的性能
  • 搜索用ES加快查询

代码层面

  • 开多个线程提高系统的处理能力
  • 连接池的方式降低数据库连接
  • 使用分布式锁避免集群环境下的竞争问题
  • 使用MQ避免分布式锁带来的开销问题

总结

加钱 缓存 队列 拆分 池化
TypeORM 使用人类战士
Loading...
©2021-2025 Arterning.
All rights reserved.