- 集群部署,通过负载均衡减轻单机压力;
- 多级缓存架构,包括静态数据使用CDN,本地缓存、分布式缓存等,以及对缓存场景中的热点key、缓存穿透、缓存数据一致性等问题处理;
- 分库分表和索引优化,以及借助搜索引擎解决复杂查询问题;
- 考虑nosql数据库的使用,比如Hbase、mongodb等,但是团队必须要熟悉这些组件,并有较强的运维能力。
- 异步化,将次要流程通过多线程、MQ、甚至延时队列进行异步处理;
- 限流,需要先考虑业务是否允许限流,参加前端限流、nginx接入层的限流和服务端的限流;
- 对流量进行削峰填谷,通过MQ承接流量;
- 并发处理,通过多线程将串行逻辑并行化;
- 预计算,比如抢红包场景,可以提前计算好红包的金额缓存起来,发红包的时候直接使用即可;
- 缓存预热,通过异步任务提前预热数据到本地缓存,或者分布式缓存当中;
- 减少io次数,比如数据库和缓存的批量读写、远程调用批量接口支持;
- 减少IO时的数据包大小,包括采用轻量级的通信协议,合适的数据结构、去掉接口中的多余字段、减少缓存key的大小、压缩缓存value等;
- 各种池化技术的使用和池大小的设置,包括http请求池、线程池(考虑CPU密集型还是IO密集型设置核心参数)、数据库和redis连接池等;
- JVM的优化,包括年轻代和老年代的大小,gc垃圾回收算法的选择等,尽可能的减少gc的频率和耗时;
- 锁选择,读多写少的场景使用读写锁,或者乐观锁减少锁冲突;
高并发之高性能解决方案
最新推荐文章于 2023-04-30 22:07:47 发布