Skip to main content

应该如何理解高并发,我提供一个思路,助力大家从容应对面试

初步方案 加钱

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

限流

到了这里,系统已经具有很高的处理能力了 但是一个接口本来就是只能处理一秒一万次请求,但是突然有一天有一秒一百万请求怎怎么办?

使用MQ 先把请求放入MQ 然后慢慢消化 大家排着队来,出口按照能力慢慢消化 当然结果往往就是用户需要等待一会 比如支付场景 秒杀场景 抢购场景

同时,我们还需要加上限流,因为我们的系统只能承载一万的流量,让流量一万一万的过来。

DNS 负载均衡

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

其他

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

代码层面

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

总结

加钱 缓存 队列 拆分 池化