前言
我们知道,高并发代表着大流量,高并发系统设计的魅力就在于我们能够凭借自己的聪明才 智设计巧妙的方案,从而抵抗巨大流量的冲击,带给用户更好的使用体验。这些方案好似能 操纵流量,让流量更加平稳得被系统中的服务和组件处理。来做个简单的比喻吧。 从古至今,长江和黄河流域水患不断,远古时期,大禹曾拓宽河道,清除淤沙让流水更加顺 畅;都江堰作为史上最成功的的治水案例之一,用引流将岷江之水分流到多个支流中,以分 担水流压力;三门峡和葛洲坝通过建造水库将水引入水库先存储起来,然后再想办法把水库 中的水缓缓地排出去,以此提高下游的抗洪能力。
而我们在应对高并发大流量时也会采用类似“抵御洪水”的方案,归纳起来共有三种方法。
Scale-out(横向扩展):分而治之是一种常见的高并发系统设计方法,采用分布式部署 的方式把流量分流开,让每个服务器都承担一部分并发和流量。
缓存:使用缓存来提高系统的性能,就好比用“拓宽河道”的方式抵抗高并发大流量的冲 击。
异步:在某些场景下,未处理完成之前,我们可以让请求先返回,在数据准备好之后再通 知请求方,这样可以在单位时间内处理更多的请求。
目录(分为七个部分)
正文(篇幅有限,将以部分截图的形式来展示。完整版的获取方式,我放在文章末尾了)
第一章:基础篇
01.高并发系统:它的通用设计方法是什么?
02.架构分层:我们为什么一定要这么做?
第二章:数据库篇
07.池化技术:如何减少频繁创建数据库连接的性能损耗?
08.数据库优化方案(一):查询请求增加时,如何做主从分离?
第三章:缓存篇
12.缓存:数据库成为瓶颈后,动态数据的查询要如何加速?
13.缓存的使用姿势(一):如何选择缓存的读写策略
第四篇:消息队列篇
17:消息队列:秒杀时如何处理每秒上万次的下单请求?
18:消息传递:怎么保证消息仅仅被消费一次?
第五章:分布式篇
21:系统架构:每秒1万次请求的系统要做服务化拆分吗?
22:微服务架构:微服务化后,系统架构要如何改造?
第六章:维护篇
30:给系统加上眼睛,服务端监控要怎么做?
31:应用性能管理:用户的使用体验应该如何监控?
第七章:实战篇
37:计数系统设计(一)面对海量数据的计数要如何做?
38.计数系统设计(二):50万QPS下如何设计未读数系统