1. 分而治之,横向扩展
采用分布式部署的方式,部署多台服务器,把流量分流开,让每个服务器都承担一部分的并发和流量,提升整体系统的并发能力。
2. 微服务拆分(系统拆分)
做微服务拆分可以达到分摊请求流量的目的,提高了并发能力。
3. 分库分表
拆分为多个数据库,来扛住高并发的毒打
4. 池化技术
使用数据库连接池、HTTP 连接池、Redis 连接池等
5. 主从分离
做了分布式部署,部署了多台机器,部署了主数据库、从数据库。
6. 使用缓存
常用的缓存包括:Redis缓存,JVM本地缓存,memcached等等
7. CDN,加速静态资源访问
对页面做静态化处理,减少访问服务端的请求。
8. 消息队列,削锋
引入消息队列,来应对高并发的场景。
9. ElasticSearch
当数据量大的时候,不用动不动就加机器扩容,分库等,可以考虑用ES来支持简单的查询搜索、统计类的操作。
10. 降级熔断
熔断降级是保护系统的一种手段,可以防止服务雪崩效应。
11. 限流
使用Guava的RateLimiter单机版限流,也可以使用Redis分布式限流,还可以使用阿里开源组件sentinel限流。
12. 异步
设计一个高并发的系统,需要在恰当的场景使用异步。
13. 接口的常规优化
14. 压力测试确定系统瓶颈
loadrunner是一款不错的压力测试工具,jmeter则是接口性能测试工具。
15. 应对突发流量峰值:扩容+切流量
增加MySQL、Redis从库来处理查询请求。
分库分表经典15连问
https://mp.weixin.qq.com/s?__biz=Mzg3NzU5NTIwNg==&mid=2247502983&idx=1&sn=47cc9079b01940cbb83d4f71972e5d20&chksm=cf2213aef8559ab845c5740abc98c335f0b040976bc39781ade95ea085cf32a183021a54ff36&token=1274856030&lang=zh_CN&scene=21#wechat_redirect
面试必备:Java线程池解析
https://mp.weixin.qq.com/s?__biz=Mzg3NzU5NTIwNg==&mid=2247487945&idx=1&sn=447d2da258797de08eca329a2500d457&chksm=cf21cee0f85647f676dced72811b90bf7db7c898d2a90b7dc2195c5d6279c05d1b125d4b82a1&token=1976733249&lang=zh_CN&scene=21#wechat_redirect
细数线程池的10个坑
https://mp.weixin.qq.com/s?__biz=Mzg3NzU5NTIwNg==&mid=2247501030&idx=1&sn=0c0c8523d73d65ba7358856ea02fb5fc&chksm=cf221bcff85592d9556cb3735357b96baad9544c1b9c3149d0bffc290dedab32bb86d40e1075&token=1976733249&lang=zh_CN&scene=21#wechat_redirect
面试必备:聊聊MySQL的主从
https://mp.weixin.qq.com/s?__biz=Mzg3NzU5NTIwNg==&mid=2247497982&idx=1&sn=bb589329cceb5462fc41f66ec63dbf56&chksm=cf2227d7f855aec16dd4d3b3425c0401850eeaf2c9cdc82e82722d38a00c24ee9ccfa3353774&token=1274856030&lang=zh_CN&scene=21#wechat_redirect
使用Redis,你必须知道的21个注意要点
https://mp.weixin.qq.com/s?__biz=Mzg3NzU5NTIwNg==&mid=2247488325&idx=1&sn=6d9bbe5bf2f2f2904755de5c786fb21b&chksm=cf21cc6cf856457a9d23b3e25ec48107a582e709f05964dfdb5ba77e9a239d8307334c485fdf&token=1371687559&lang=zh_CN&scene=21#wechat_redirect
面试必备:4种经典限流算法讲解
https://mp.weixin.qq.com/s?__biz=Mzg3NzU5NTIwNg==&mid=2247490393&idx=1&sn=98189caa486406f8fa94d84ba0667604&chksm=cf21c470f8564d665ce04ccb9dc7502633246da87a0541b07ba4ac99423b28ce544cdd6c036b&token=162724582&lang=zh_CN&scene=21#wechat_redirect
实战总结!18种接口优化方案的总结
https://mp.weixin.qq.com/s?__biz=Mzg3NzU5NTIwNg==&mid=2247502660&idx=1&sn=17166646f82412cd81955930f799ab4e&chksm=cf22146df8559d7bcf9becd82e1d8006c35a781e5dbd0a79e0a9e121803ee40d6eae7ebd7ccb&token=1371687559&lang=zh_CN&scene=21#wechat_redirect
极客时间高并发系统设计 40 问:
https://time.geekbang.org/column/article/192203