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