快捷搜索: 王者荣耀 脱发

总结:高并发系统设计需要考虑的点

一、部署多台服务器

设计一个高并发系统,我们可以分而治之,横向扩展。也就是说,部署多台服务器,把流量分流开,让每个服务器都承担一部分的并发和流量,提升整体系统的并发能力。

二、微服务技术相关

1、服务拆分

  1. 按业务拆分
  1. qps高的拆分出去
  1. 接口响应很大的拆分出去

2、流量治理相关

  1. 熔断技术
  1. 接口超时配置

三、数据库优化

1、分库分表

  1. 表纵向拆分
  1. 表分区创建

2、读写分离

四、池化技术

1、服务器线程池

线程共用,减少线程的频繁创建与销毁。

五、缓存技术

如redis

六、消息队列削峰

如Kafka,RocketMQ、RabbitMQ。

可以在并发很大的时候,控制进入服务的流量,保障系统的服务能力。

七、限流

针对某个用户进行限流,避免因为部分用户的不合理访问行为影响其它用户。

八、接口优化

如Elasticsearch、Kafka

九、异步处理

请求来了之后,立即返回,离线进行处理。

比如在海量秒杀请求过来时,先放到消息队列中,快速响应用户,告诉用户请求正在处理中,这样就可以释放资源来处理更多的请求。

十、K8S弹性扩容

针对周期性波谷波峰特点的请求,动态扩容可提升服务的稳定性

一、部署多台服务器 设计一个高并发系统,我们可以分而治之,横向扩展。也就是说,部署多台服务器,把流量分流开,让每个服务器都承担一部分的并发和流量,提升整体系统的并发能力。 二、微服务技术相关 1、服务拆分 按业务拆分 qps高的拆分出去 接口响应很大的拆分出去 2、流量治理相关 熔断技术 接口超时配置 三、数据库优化 1、分库分表 表纵向拆分 表分区创建 2、读写分离 四、池化技术 1、服务器线程池 线程共用,减少线程的频繁创建与销毁。 五、缓存技术 如redis 六、消息队列削峰 如Kafka,RocketMQ、RabbitMQ。 可以在并发很大的时候,控制进入服务的流量,保障系统的服务能力。 七、限流 针对某个用户进行限流,避免因为部分用户的不合理访问行为影响其它用户。 八、接口优化 如Elasticsearch、Kafka 九、异步处理 请求来了之后,立即返回,离线进行处理。 比如在海量秒杀请求过来时,先放到消息队列中,快速响应用户,告诉用户请求正在处理中,这样就可以释放资源来处理更多的请求。 十、K8S弹性扩容 针对周期性波谷波峰特点的请求,动态扩容可提升服务的稳定性
经验分享 程序员 微信小程序 职场和发展