作品简介
《超大流量分布式系统架构解决方案:人人都是架构师2.0》共5章,每一章的内容几乎都是独立的,大家完全可以有选择性地阅读。第1章以大规模服务化架构作为全书的开篇,主要介绍了分布式系统架构的演变过程,以及在大规模服务调用场景下,如何实施服务治理。第2章重点介绍了在大促前夕,如何在线上实施全链路压测,以及有指导性地进行容量规划和性能优化,让系统坚如磐石。第3章重点介绍了如何有效地对流量实施管制,若采用合理且有效的方式管制住峰值流量,使其井然有序地对系统进行访问,则在任何情况下,系统就都能稳定运行。第4章重点介绍了在大促抢购的场景下,如何解决高并发读和高并发写等核心技术难题。第5章详细地介绍了关系型数据库的架构演变过程,还重点介绍了在实际的订单业务场景下,如何保证数据的最终一致性。
高翔龙,云集基础架构负责人,技术委员会委员,经历了云集架构从0到1的蜕变,见证了云集业务的井喷式增长,拥有大量高并发、大流量,以及海量数据处理的实战经验,负责云集基础技术平台的架构设计和中间件研发等工作,热衷于开源技术,常年游走在GitHub上。
作品目录
推荐序
前言
第1章 大系统小做——大规模服务化架构
1.1 分布式系统的架构演变过程
1.1.1 单机架构
1.1.2 集群架构
1.1.3 垂直拆分业务子系统
1.1.4 服务化架构演进
1.1.5 服务化与微服务架构的区别
1.1.6 集群与分布式的区别
1.1.7 前后端分离架构演进
1.1.8 API网关服务
1.1.9 分布式多活数据中心架构演进
1.2 服务治理需求
1.2.1 服务化与RPC协议
1.2.2 基于服务治理框架Dubbo实现服务化
1.2.3 警惕因超时和重试引起的系统雪崩
1.2.4 为什么需要实施服务治理
1.2.5 关于服务化后的分布式事务问题
1.2.6 注册中心性能瓶颈方案
1.2.7 分布式多活架构下的服务就近调用方案
1.3 服务治理之调用链
1.3.1 Google的Dapper论文简介
1.3.2 调用链的实现方案
1.3.3 基于非侵入式运行期AOP方案实现数据采集上报
1.3.4 调配采样率
1.4 本章小结
第2章 大促备战核弹——全链路压测
2.1 为什么要在线上实施全链路压测
2.2 业务系统如何区分压测流量
2.2.1 压测流量打标方案
2.2.2 在链路上下文信息中传递压测标记
2.2.3 外部第三方接口走Mock
2.2.4 压测数据的隔离方案
2.3 如何发起大规模的压测流量
2.3.1 数据构造平台
2.3.2 自研全链路压测军演系统的一些经验分享
2.4 本章小结
第3章 削峰填谷——流控方案
3.1 为什么需要限流
3.2 限流方案
3.2.1 常见的限流算法
3.2.2 基于Guava实现平均速率限流
3.2.3 接入层限流方案
3.2.4 应用层限流——限时抢购限流方案
3.3 基于时间分片的削峰方案
3.3.1 活动分时段进行实现削峰
3.3.2 通过答题验证实现削峰
3.4 基于消息队列的解耦、削峰、最终一致性方案
3.4.1 基于消息队列实现解耦
3.4.2 常见消息中间件的使用
3.4.3 基于消息队列的一些典型案例
3.5 本章小结
第4章 大促抢购核心技术难题——读/写优化方案
4.1 缓存技术简介
4.1.1 本地缓存
4.1.2 本地缓存的痛点
4.1.3 神秘的off-heap技术
4.2 高性能分布式缓存Redis
4.2.1 基于Jedis客户端操作Redis
4.2.2 基于RedisCluster模式实现Sharding
4.3 同一热卖商品高并发读难题
4.3.1 多级缓存方案
4.3.2 缓存穿透思考
4.3.3 RedisCluster模式下的读/写分离方案
4.4 同一热卖商品高并发写难题
4.4.1 InnoDB引擎的行锁问题
4.4.2 基于Redis乐观锁的库存扣减方案
4.4.3 嵌入Lua脚本的库存扣减方案
4.4.4 基于AliSQL数据库提升并发写性能
4.5 本章小结
第5章 星罗棋布——分库分表方案
5.1 关系数据库的架构演变
5.1.1 数据库读/写分离
5.1.2 数据库垂直分库
5.1.3 数据库水平分库与水平分表
5.1.4 MySQL Sharding与MySQL Cluster的区别
5.2 Sharding中间件
5.2.1 常见的Sharding中间件对比
5.2.2 Shark简介
5.2.3 Shark的架构模型
5.2.4 使用Shark实现分库分表后的数据路由任务
5.2.5 分库分表后所带来的影响
5.2.6 全局唯一SequenceID解决方案
5.2.7 基于Solr满足多维度的复杂条件查询
5.2.8 关于分布式事务
5.3 数据库的HA方案
5.3.1 基于配置中心实现主备切换
5.3.2 基于Keepalived实现主备切换
5.3.3 保障主备切换过程中的数据一致性
5.4 订单业务冗余表需求
5.4.1 冗余表的实现方案
5.4.2 数据最终一致性方案
5.5 本章小结
附录
后记
载入中