新書推薦:
《
国家豁免法的域外借鉴与实践建议
》
售價:HK$
188.2
《
大单元教学设计20讲
》
售價:HK$
76.2
《
儿童自我关怀练习册:做自己最好的朋友
》
售價:HK$
69.4
《
高敏感女性的力量(意大利心理学家FSP博士重磅力作。高敏感是优势,更是力量)
》
售價:HK$
62.7
《
元好问与他的时代(中华学术译丛)
》
售價:HK$
87.4
《
汽车传感器结构·原理·检测·维修
》
售價:HK$
109.8
《
怪谈百物语:不能开的门(“日本文学史上的奇迹”宫部美雪重要代表作!日本妖怪物语集大成之作,系列累销突破200万册!)
》
售價:HK$
65.0
《
罗马政治观念中的自由
》
售價:HK$
50.4
|
內容簡介: |
本书深刻总结了作者在大型互联网公司长期的实战经验,系统化地阐述了构建大型分布式系统所需要的技术架构与业务架构方法论,并辅与详尽的实践剖析。全书分为三大部分:第1部分完整讨论了分布式架构的几大核心问题,包括高并发、高可靠性、高可用、数据一致性(包括分布式事务、Paxos/Raft一致性算法)、跨城容灾与异地多活、CAP理论;第2部分从业务架构思维、需求分析、业务建模、领域驱动设计与微服务等角度探讨业务架构;第3部分是案例实战,通过众多的业界实际案例来对理论有一个更为直观的介绍。通过本书,读者可以对构建大型复杂系统的方法论有全局的认识,对软件架构的核心能力有深刻的理解,对个人的技术成长起到一定的借鉴作用,提升思维认知。本书不仅适合工程师、架构师阅读,也适合企业系统开发人员在内的软件开发从业人员阅读。
|
關於作者: |
余春龙,中科院软件所硕士毕业,先后在多家一线互联网公司任架构师,历经各种大规模研发团队的架构实践,在海量高并发高可用架构、业务建模、领域驱动设计、技术规划与技术管理等方面具备丰富的工程经验,形成了自己完整的一套架构方法论。
|
目錄:
|
第1部分 分布式架构第1章 高并发41.1 问题分类41.1.1 侧重于“高并发读”的系统41.1.2 侧重于“高并发写”的系统61.1.3 同时侧重于“高并发读”和“高并发写”的系统71.2 高并发读81.2.1 策略1:动静分离与CDN加速81.2.2 策略2:加缓存91.2.3 策略3:并发读与Pipeline101.2.4 策略4:批量读121.2.5 策略5:重写轻读121.2.6 总结:读写分离(CQRS架构)141.3 高并发写161.3.1 策略1:数据分片161.3.2 策略2:任务分片171.3.3 策略3:异步化与Pipeline191.3.4 策略4:批量261.3.5 策略5:串行化+多进程单线程+异步I/O27第2章 高可靠292.1 容量评估与规划292.1.1 理论基础:吞吐量、响应时间与并发数三者关系292.1.2 容量规划312.1.3 单机QPS估算方法1: CPU密集型与I/O密集型的区分322.1.4 单机QPS估算方法2:压力测试332.2 过载保护:限流与熔断352.2.1 限流的两种限制维度352.2.2 单机限流的算法352.2.3 单机限流的实现372.2.4 中央限流402.2.5 熔断412.3 超时与重试422.4 隔离432.5 有损服务与降级442.6 灰度发布、备份与回滚452.7 监控体系与日志报警47第3章 分布式事务503.1 随处可见的分布式事务问题513.1.1 缓存和数据库的一致性问题513.1.2 消息中间件和数据库的一致性问题513.1.3 两个数据库的一致性问题513.1.4 服务和数据库的一致性问题513.1.5 两个服务的一致性问题523.1.6 两个文件的一致性问题523.2 分布式事务解决方案汇总523.2.1 2PC523.2.2 终一致性:种实现方案563.2.3 终一致性:第二种实现方案(基于事务消息)593.2.4 TCC613.2.5 事务状态表+事务补偿633.2.6 同步双写(多写)+异步对账643.2.7 妥协方案:弱一致性+基于状态的事后补偿663.2.8 妥协方案:重试+回滚+报警+人工修复683.2.9 阿里云Seata框架683.2.10 总结73第4章 高可用744.1 高可用架构的思维框架744.1.1 如何实现故障探测754.1.2 如何解决脑裂问题754.1.3 如何做到数据一致性764.1.4 如何做到对客户端透明764.1.5 如何解决高可用依赖的连环套问题764.2 接入层高可用784.2.1 DNS层高可用:广域网负载均衡794.2.2 接入网关高可用:局域网负载均衡794.2.3 Nginx高可用814.2.4 Tomcat高可用814.3 业务逻辑层(微服务层)高可用824.4 存储层高可用834.4.1 RedisCluster的高可用案例834.4.2 HDFS的高可用案例85第5章 高可用:多副本一致性算法895.1 高可用且强一致性到底有多难895.1.1 Kafka的消息丢失问题895.1.2 Kafka的消息错乱问题935.1.3 MySQL半同步复制数据不一致问题945.2 Paxos算法解析965.2.1 Paxos解决什么问题965.2.2 复制状态机995.2.3 一个朴素而深刻的想法1015.2.4 Basic Paxos算法1025.2.5 Multi Paxos算法1055.3 Raft算法解析1085.3.1 为“可理解性”而设计1085.3.2 单点写入1085.3.3 日志结构1095.3.4 阶段1:Leader选举1135.3.5 阶段2:日志复制1155.3.6 阶段3:恢复阶段1165.3.7 安全性保证1165.4 Zab算法解析1195.4.1 复制状态机与Primary-Backup System1195.4.2 zxid1215.4.3 “序”:乱序提交与顺序提交1225.4.4 Leader选举:FLE算法1245.4.5 正常阶段:2阶段提交1255.4.6 恢复阶段1265.5 三种算法对比与工程实现127第6章 高可用:跨城容灾与异地多活1296.1 跨城的关键物理约束:时延1296.2 多IDC无复制架构1306.2.1 单写多读架构1306.2.2 各IDC自治架构1326.3 同城同步复制,跨城异步复制:2地3中心1336.4 跨城同步复制:3地5中心1336.5 跨城异步复制1356.5.1 不能容忍数据不一致:实现部分的强一致1366.5.2 可以容忍数据不一致:事后修复1376.5.3 加快异步复制速度1376.6 单元化1386.6.1 到底什么是单元化1386.6.2 什么系统不能单元化140第7章 CAP理论1427.1 CAP理论的误解1427.2 现实世界不存在“强一致性”(PACELC理论)143第2部分 业务架构第8章 业务架构定义1488.1 各式各样的方法论1488.2 什么不是业务架构1498.3 以终为始:业务架构到底解决哪些问题150第9章 深刻理解现实世界:识别“真正的”需求1539.1 探究问题的本源1539.2 系统化思维1549.3 信息传播的递减效应1559.4 主要矛盾与次要矛盾1569.5 产品手段与技术手段的权衡156第10章 深刻理解现实世界:从整体上去看待需求15810.1 利益相关者分析:看需求先看人15810.2 金字塔原理:不重不漏地拆解问题16010.3 需求的两种表现形式:业务流程与业务规则16210.4 “业务”的闭环性163第11章 不同粒度的建模方法与原则16511.1 单个系统内部的建模方法与原则16511.1.1 建模的通用思维:搭积木16511.1.2 面向对象建模的基本步骤16711.2 问题空间16911.2.1 深刻理解专业名词16911.2.2 重要信息“显性化”17011.2.3 抽象17111.3 解决方案空间17411.3.1 重构17411.3.2 设计模式17511.3.3 面向对象的五大原则(SOLID原则)17811.4 跨系统、跨团队的建模方法与原则17911.4.1 康威定律17911.4.2 领域的划分:高内聚与低耦合18111.4.3 边界思维:接口的设计比实现重要得多18211.4.4 多视角描述同一个架构:架构4+1/5+1视图184第12章 常用架构模式18612.1 分层架构模式与“伪分层”18612.2 管道-过滤器架构模式18912.3 状态机架构模式19012.4 业务切面/业务闭环架构模式19212.5 规则引擎19312.5.1 什么是规则19412.5.2 业务代码如何抽象成一条条规则19412.5.3 规则描述语言DSL19612.5.4 规则引擎的两种执行方式19712.6 工作流引擎198第13章 领域驱动设计20013.1 传统开发模式:面向数据库表的“面条式”代码20013.2 DDD的基本概念20113.3 DDD的方法论20313.3.1 领域模型和数据模型的区别20313.3.2 基于DDD的分层架构20313.3.3 领域模型和数据模型如何映射20413.3.4 DDD中的读写分离模式206第14章 DDD的折中与微服务架构20714.1 软件建模本身的困难20714.2 “无建模”带来的各种问题20914.3 DDD的困难21014.4 折中后的DDD21114.4.1 宏观层面:遵循子域、限界上下文、微服务三者的映射关系21114.4.2 微观层面:不遵循DDD的方法论21214.5 三个不同层次的读写分离架构212第3部分 案例实战第15章 基础架构案例实战21615.1 分布式锁21615.1.1 分布式锁的使用场景21615.1.2 分布式锁的常用实现方式与问题21615.1.3 用串行化代替分布式锁21715.2 服务注册与服务发现中心21915.2.1 服务注册与服务发现中心的基本原理21915.2.2 服务路由表的数据延迟与解决方案22015.2.3 服务注册中心应该是AP系统,还是CP系统22115.2.4 配置中心应该是AP系统,还是CP系统22215.3 分布式ID生成系统22215.3.1 全局,趋势递增22315.3.2 全局,单调递增22515.3.3 全局,连续递增229第16章 C端业务系统案例实战23016.1 电商库存系统23016.1.1 业务背景与需求分析23016.1.2 高并发读与写:中央缓存与本地缓存的权衡23416.1.3 数据一致性:幂等问题23816.1.4 数据一致性:扣减多个商品的原子性问题23916.1.5 数据一致性:并发更新的锁问题23916.1.6 数据一致性:流水和库存表如何对账24016.1.7 业务架构进阶之一:一个库存模型同时支持自营与平台 两个商业模式24116.1.8 业务架构进阶之二:分区售卖问题24316.1.9 业务架构进阶之三:供应链库存(不光要管售卖,还要管采购)24416.1.10 业务架构进阶之四:以“单据”为中心的库存对账24516.1.11 业务架构进阶之五:先采后卖,还是先卖后采24716.2 秒杀系统24916.2.1 需求分析24916.2.2 异步秒杀与同步秒杀25016.2.3 同步秒杀系统的设计25216.2.4 防刷问题25316.2.5 名额归还问题25416.2.6 同步与异步的相结合25416.2.7 层层限流,保护终的核心系统25516.3 Feeds流25516.3.1 需求分析25516.3.2 无限长列表的实现25616.3.3 写扩散和读扩散的相结合25816.3.4 评论的实现259第17章 B端业务系统案例实战26117.1 规则引擎平台26117.1.1 规则引擎的典型应用场景26117.1.2 四种技术选型26317.1.3 规则的存储与版本管理26517.1.4 可视化规则编辑26617.1.5 特征库、动作库管理26817.1.6 特征数据库26917.1.7 总结27017.2 工作流引擎平台27117.2.1 没有工作流引擎,如何做业务开发27117.2.2
|
|