软体架构设计:大型网站技术架构与业务架构融合之道

软体架构设计:大型网站技术架构与业务架构融合之道书籍信息作译者:余春龙出版时间:2019-01千 字 数:322版次:01-01页 数:256开本:16开装帧:I S B N :9787121356032换版:纸质书定价:¥79.0内容简介本书系统化地梳理了软体架构的方法论与实践 。通过本书,读者可以对业务软体的架构方法学有一个全局的认识,同时对软体架构需要的核心能力有深刻的理解,对个人的技术成长之路起到一定借鉴作用 。本书内容包括大规模分散式架构涉及的语言、框架、中间件等内容,同时本书将跳出某种具体的语言框架来总结梳理架构的核心思维,这种思维适用于用任何一种语言框架解决任何一种业务问题 。图书目录第1部分 什幺是架构第1章 五花八门的架构师职业 21.1 架构师职业分类 21.2 架构的分类 2第2章 架构的道与术 52.1 何为道,何为术 52.2 道与术的辩证关係 6第2部分 计算机功底第3章 语言 103.1 层出不穷的程式语言 103.2 精通一门语言 10第4章 作业系统 124.1 缓冲I/O和直接I/O 124.2 记忆体映射档案与零拷贝 144.2.1 记忆体映射档案 144.2.2 零拷贝 154.3 网路I/O模型 174.3.1 实现层面的网路I/O模型 174.3.2 Reactor模式与Preactor模式 204.3.3 select、epoll的LT与ET 204.3.4 伺服器编程的1+N+M模型 224.4 进程、执行绪和协程 244.5 无锁(记忆体屏障与CAS) 274.5.1 记忆体屏障 274.5.2 CAS 30第5章 网路 315.1 HTTP 1.0 315.1.1 HTTP 1.0的问题 315.1.2 Keep-Alive机制与Content-Length属性 315.2 HTTP 1.1 325.2.1 连线复用与Chunk机制 325.2.2 Pipeline与Head-of-line Blocking问题 335.2.3 HTTP/2出现之前的性能提升方法 345.2.4 “一来多回”问题 355.2.5 断点续传 365.3 HTTP/2 365.3.1 与HTTP 1.1的兼容 375.3.2 二进制分帧 375.3.3 头部压缩 395.4 SSL/TLS 395.4.1 背景 395.4.2 对称加密的问题 405.4.3 双向非对称加密 415.4.4 单向非对称加密 425.4.5 中间人攻击 435.4.6 数字证书与证书认证中心 445.4.7 根证书与CA信任链 455.4.8 SSL/TLS协定:四次握手 475.5 HTTPS 485.6 TCP/UDP 495.6.1 可靠与不可靠 495.6.2 TCP的“假”连线(状态机) 515.6.3 三次握手(网路2将军问题) 535.6.4 四次挥手 545.7 QUIC 565.7.1 不丢包(Raid5算法和Raid6算法) 575.7.2 更少的RTT 585.7.3 连线迁移 58第6章 资料库 596.1 範式与反範式 596.2 分库分表 596.2.1 为什幺要分 606.2.2 分散式ID生成服务 606.2.3 拆分维度的选择 606.2.4 Join查询问题 616.2.5 分散式事务 616.3 B+树 626.3.1 B+树逻辑结构 626.3.2 B+树物理结构 636.3.3 非主键索引 656.4 事务与锁 666.4.1 事务的四个隔离级别 666.4.2 悲观锁和乐观锁 676.4.3 死锁检测 716.5 事务实现原理之1:Redo Log 726.5.1 Write-Ahead 736.5.2 Redo Log的逻辑与物理结构 746.5.3 Physiological Logging 756.5.4 I/O写入的原子性(Double Write) 766.5.5 Redo Log Block结构 776.5.6 事务、LSN与Log Block的关係 786.5.7 事务Rollback与崩溃恢复(ARIES算法) 806.6 事务实现原理之2:Undo Log 866.6.1 Undo Log是否一定需要 866.6.2 Undo Log(MVCC) 886.6.3 Undo Log不是Log 896.6.4 Undo Log与Redo Log的关联 906.6.4 各种锁 916.7 Binlog与主从複製 946.7.1 Binlog与Redo Log的主要差异 946.7.2 内部XA – Binlog与Redo Log一致性问题 956.7.3 三种主从複製方式 966.7.3 并行複製 97第7章 框架、软体与中间件997.1 对生态体系的认知997.2 框架997.3 软体与中间件100第3部分 技术架构之道第8章 高并发问题1048.1 问题分类1048.1.1 侧重于“高并发读”的系统1048.1.2 侧重于“高并发写”的系统1058.1.3 同时侧重于“高并发读”和“高并发写”的系统1068.2 高并发读108 8.2.1 策略1:加快取1088.2.2 策略2:并发读1098.2.3 策略3:重写轻读1108.2.4 总结:读写分离(CQRS架构)1138.3 高并发写1148.3.1 策略1:数据分片1148.3.2 策略2:任务分片1158.3.3 策略3:异步化1178.3.4 策略4:批量1238.3.5 策略5:串列化+多进程单执行绪+异步I/O1248.4 容量规划1258.4.1 吞吐量、回响时间与并发数1258.4.2 压力测试与容量评估127第9章 高可用与稳定性1299.1 多副本1299.2 隔离、限流、熔断和降级1309.3 灰度发布与回滚1359.4 监控体系与日誌报警136第10章 事务一致性13810.1 随处可见的分散式事务问题13810.2 分散式事务解决方案汇总13910.2.1 2PC13910.2.2 最终一致性(讯息中间件)14110.2.3 TCC14510.2.4 事务状态表+调用方重试+接收方幂等14710.2.5 对账14810.2.6 妥协方案:弱一致性+基于状态的补偿14910.2.7 妥协方案:重试+回滚+报警+人工修复15110.2.8 总结152第11章 多副本一致性15311.1 高可用且强一致性到底有多难15311.1.1 Kafka的讯息丢失问题15311.1.2 Kafka讯息错乱问题15611.2 Paxos算法解析15811.2.1 Paxos解决什幺问题15811.2.2 複製状态机16111.2.3 一个朴素而深刻的思想16311.2.4 Basic Paxos算法16411.2.5 Multi Paxos算法16711.3 Raft算法解析16911.3.1 为“可理解性”而设计16911.3.2 单点写入17011.3.3 日誌结构17111.3.4 阶段1:Leader选举17411.3.5 阶段2:日誌複製17611.3.6 阶段3:恢复阶段17711.3.7 安全性保证17711.4 Zab算法解析18011.4.1 Replicated State Machine vs. Primary-Backup System18011.4.2 zxid182 11.4.3 “序”:乱序提交 vs. 顺序提交18211.4.4 Leader选举:FLE算法18411.4.5 正常阶段:2阶段提交18611.4.6 恢复阶段18611.5 三种算法对比187第12章 CAP理论18912.1 CAP理论的误解18912.2 现实世界不存在“强一致性”(PACELC理论)19012.3 典型案例:分散式锁192第4部分 业务架构之道第13章 业务意识19613.1 产品经理vs.需求分析师19613.2 什幺叫作一个“业务”19813.3 “业务架构”的双重含义19913.4 “业务架构”与“技术架构”的区分200第14章 业务架构思维20214.1 “伪”分层20214.2 边界思维20414.3 系统化思维20514.4 利益相关者分析20614.5 非功能性需求分析(以终为始)20814.6 视角(横看成岭侧成峰)20914.7 抽象21014.8 建模21314.9 正交分解215第15章 技术架构与业务架构的融合21815.1 各式各样的方法论21815.2 为什幺要“领域驱动”21815.3 “业务流程”不等于“系统流程”22115.4 为何很难设计一个好的领域模型22215.5 领域驱动设计与微服务架构的“合”22315.6 领域驱动设计与读写分离(CQRS)22415.7 业务分层架构模式22515.8 管道—过滤器架构模式22615.9 状态机架构模式22615.10 业务切面/业务闭环架构模式228第5部分 从架构到技术管理第16章 个人素质的提升23216.1 能力模型23216.2 影响力的塑造234第17章 团队能力的提升23717.1 不确定性与风险把控23717.2 以价值为中心的管理23917.3 团队培养241