![]() 作者:李林锋 出版社: 电子工业出版社 出版年: 2016-1-15 页数: 312 定价: 65.00元 装帧: 平装 ISBN: 9787121279195 内容简介 · · · · · ·《分布式服务框架:原理与实践》作者具有丰富的分布式服务框架、平台中间件的架构设计和实践经验,主导设计的华为分布式服务框架已经在全球数十个国家成功商用。《分布式服务框架:原理与实践》依托工作实践,从分布式服务框架的架构设计原理到实践经验总结,涵盖了服务化架构演进、订阅发布、路由策略、集群容错和服务治理等多个专题,全方位剖析服务框架的设计原则和原理,结合大量实践案例与读者分享作者对分布式服务框架设计和运维的体会。同时,对基于Docker部署微服务以及基于微服务架构开发、部署和运维业务系统进行了详细介绍。 作者简介 · · · · · ·李林锋,现任华为PaaS平台架构师,8年JavaNIO通信框架、平台中间件架构设计和开发经验,主导设计和开发的华为分布式服务框架已经在全球数十个国家成功商用。精通Netty、Mina、RPC框架、企业ESB总线、分布式服务框架等技术,公司总裁技术创新奖获得者。 目录 · · · · · ·第1章 应用架构演进 11.1 传统垂直应用架构 2 1.1.1 垂直应用架构介绍 2 1.1.2 垂直应用架构面临的挑战 4 1.2 RPC架构 6 1.2.1 RPC框架原理 6 · · · · · ·() 第1章 应用架构演进 1 1.1 传统垂直应用架构 2 1.1.1 垂直应用架构介绍 2 1.1.2 垂直应用架构面临的挑战 4 1.2 RPC架构 6 1.2.1 RPC框架原理 6 1.2.2 最简单的RPC框架实现 8 1.2.3 业界主流RPC框架 14 1.2.4 RPC框架面临的挑战 17 1.3 SOA服务化架构 18 1.3.1 面向服务设计的原则 18 1.3.2 服务治理 19 1.4 微服务架构 21 1.4.1 什么是微服务 21 1.4.2 微服务架构对比SOA 22 1.5 总结 23 第2章 分布式服务框架入门 25 2.1 分布式服务框架诞生背景 26 2.1.1 应用从集中式走向分布式 26 2.1.2 亟需服务治理 28 2.2 业界分布式服务框架介绍 29 2.2.1 阿里Dubbo 30 2.2.2 淘宝HSF 33 2.2.3 亚马逊Coral Service 35 2.3 分布式服务框架设计 36 2.3.1 架构原理 36 2.3.2 功能特性 37 2.3.3 性能特性 39 2.3.4 可靠性 39 2.3.5 服务治理 40 2.4 总结 41 第3章 通信框架 42 3.1 关键技术点分析 43 3.1.1 长连接还是短连接 43 3.1.2 BIO还是NIO 43 3.1.3 自研还是选择开源NIO框架 46 3.2 功能设计 47 3.2.1 服务端设计 48 3.2.2 客户端设计 50 3.3 可靠性设计 53 3.3.1 链路有效性检测 54 3.3.2 断连重连机制 56 3.3.3 消息缓存重发 57 3.3.4 资源优雅释放 58 3.4 性能设计 59 3.4.1 性能差的三宗罪 59 3.4.2 通信性能三原则 60 3.4.3 高性能之道 61 3.5 最佳实践 61 3.6 总结 64 第4章 序列化与反序列化 65 4.1 几个关键概念澄清 66 4.1.1 序列化与通信框架的关系 66 4.1.2 序列化与通信协议的关系 66 4.1.3 是否需要支持多种序列化方式 67 4.2 功能设计 67 4.2.1 功能丰富度 67 4.2.2 跨语言支持 68 4.2.3 兼容性 69 4.2.4 性能 70 4.3 扩展性设计 71 4.3.1 内置的序列化/反序列化功能类 71 4.3.2 反序列化扩展 72 4.3.3 序列化扩展 75 4.4 最佳实践 77 4.4.1 接口的前向兼容性规范 77 4.4.2 高并发下的稳定性 78 4.5 总结 78 第5章 协议栈 79 5.1 关键技术点分析 80 5.1.1 是否必须支持多协议 80 5.1.2 公有协议还是私有协议 80 5.1.3 集成开源还是自研 81 5.2 功能设计 82 5.2.1 功能描述 82 5.2.2 通信模型 82 5.2.3 协议消息定义 84 5.2.4 协议栈消息序列化支持的字段类型 85 5.2.5 协议消息的序列化和反序列化 86 5.2.6 链路创建 89 5.2.7 链路关闭 90 5.3 可靠性设计 90 5.3.1 客户端连接超时 90 5.3.2 客户端重连机制 91 5.3.3 客户端重复握手保护 91 5.3.4 消息缓存重发 92 5.3.5 心跳机制 92 5.4 安全性设计 92 5.5 最佳实践—协议的前向兼容性 94 5.6 总结 95 第6章 服务路由 96 6.1 透明化路由 97 6.1.1 基于服务注册中心的订阅发布 97 6.1.2 消费者缓存服务提供者地址 98 6.2 负载均衡 98 6.2.1 随机 98 6.2.2 轮循 99 6.2.3 服务调用时延 99 6.2.4 一致性哈希 100 6.2.5 粘滞连接 101 6.3 本地路由优先策略 102 6.3.1 injvm模式 102 6.3.2 innative模式 102 6.4 路由规则 103 6.4.1 条件路由规则 103 6.4.2 脚本路由规则 104 6.5 路由策略定制 105 6.6 配置化路由 106 6.7 最佳实践—多机房路由 107 6.8 总结 108 第7章 集群容错 109 7.1 集群容错场景 110 7.1.1 通信链路故障 110 7.1.2 服务端超时 111 7.1.3 服务端调用失败 111 7.2 容错策略 112 7.2.1 失败自动切换(Failover) 112 7.2.2 失败通知(Failback) 113 7.2.3 失败缓存(Failcache) 113 7.2.4 快速失败(Failfast) 114 7.2.5 容错策略扩展 114 7.3 总结 115 第8章 服务调用 116 8.1 几个误区 117 8.1.1 NIO就是异步服务 117 8.1.2 服务调用天生就是同步的 118 8.1.3 异步服务调用性能更高 120 8.2 服务调用方式 120 8.2.1 同步服务调用 120 8.2.2 异步服务调用 121 8.2.3 并行服务调用 125 8.2.4 泛化调用 129 8.3 最佳实践 130 8.4 总结 131 第9章 服务注册中心 132 9.1 几个概念 133 9.1.1 服务提供者 133 9.1.2 服务消费者 133 9.1.3 服务注册中心 133 9.2 关键功能特性设计 134 9.2.1 支持对等集群 135 9.2.2 提供CRUD接口 136 9.2.3 安全加固 136 9.2.4 订阅发布机制 137 9.2.5 可靠性 138 9.3 基于ZooKeeper的服务注册中心设计 139 9.3.1 服务订阅发布流程设计 139 9.3.2 服务健康状态检测 141 9.3.3 对等集群防止单点故障 142 9.3.4 变更通知机制 144 9.4 总结 144 第10章 服务发布和引用 145 10.1 服务发布设计 146 10.1.1 服务发布的几种方式 146 10.1.2 本地实现类封装成代理 148 10.1.3 服务发布成指定协议 148 10.1.4 服务提供者信息注册 149 10.2 服务引用设计 150 10.2.1 本地接口调用转换成远程服务调用 150 10.2.2 服务地址本地缓存 151 10.2.3 远程服务调用 151 10.3 最佳实践 152 10.3.1 对等设计原则 152 10.3.2 启动顺序问题 153 10.3.3 同步还是异步发布服务 153 10.3.4 警惕网络风暴 154 10.3.5 配置扩展 154 10.4 总结 156 第11章 服务灰度发布 157 11.1 服务灰度发布流程设计 158 11.1.1 灰度环境准备 158 11.1.2 灰度规则设置 159 11.1.3 灰度规则下发 160 11.1.4 灰度路由 161 11.1.5 失败回滚 162 11.1.6 灰度发布总结 163 11.2 总结 163 第12章 参数传递 164 12.1 内部传参 165 12.1.1 业务内部参数传递 165 12.1.2 服务框架内部参数传递 168 12.2 外部传参 169 12.2.1 通信协议支持 169 12.2.2 传参接口定义 170 12.3 最佳实践 171 12.3.1 防止参数互相覆盖 171 12.3.2 参数生命周期管理 171 12.4 总结 172 第13章 服务多版本 173 13.1 服务多版本管理设计 174 13.1.1 服务版本号管理 174 13.1.2 服务提供者 175 13.1.3 服务消费者 175 13.1.4 基于版本号的服务路由 176 13.1.5 服务热升级 177 13.2 与OSGi的对比 178 13.2.1 模块化开发 179 13.2.2 插件热部署和热升级 184 13.2.3 不使用OSGi的其他理由 185 13.3 总结 185 第14章 流量控制 186 14.1 静态流控 187 14.1.1 传统静态流控设计方案 187 14.1.2 传统方案的缺点 188 14.1.3 动态配额分配制 188 14.1.4 动态配额申请制 190 14.2 动态流控 191 14.2.1 动态流控因子 192 14.2.2 分级流控 192 14.3 并发控制 193 14.3.1 服务端全局控制 193 14.3.2 服务消费者流控 194 14.4 连接控制 195 14.4.1 服务端连接数流控 195 14.4.2 服务消费者连接数流控 195 14.5 并发和连接控制算法 195 14.6 总结 197 第15章 服务降级 198 15.1 屏蔽降级 199 15.1.1 屏蔽降级的流程 199 15.1.2 屏蔽降级的设计实现 200 15.2 容错降级 202 15.2.1 容错降级的工作原理 202 15.2.2 运行时容错降级 204 15.3 业务层降级 205 15.4 总结 205 第16章 服务优先级调度 207 16.1 设置服务优先级 208 16.2 线程调度器方案 209 16.3 Java优先级队列 210 16.4 加权优先级队列 211 16.5 服务迁入迁出 212 16.6 总结 213 第17章 服务治理 214 17.1 服务治理技术的历史变迁 215 17.1.1 SOA Governance 215 17.1.2 分布式服务框架服务治理 217 17.1.3 AWS云端微服务治理 217 17.2 应用服务化后面临的挑战 218 17.2.1 跨团队协作问题 219 17.2.2 服务的上下线管控 220 17.2.3 服务安全 220 17.2.4 服务SLA保障 221 17.2.5 故障快速定界定位 221 17.3 服务治理 222 17.3.1 服务治理架构设计 223 17.3.2 运行态服务治理功能设计 225 17.3.3 线下服务治理 232 17.3.4 安全和权限管理 234 17.4 总结 237 第18章 分布式消息跟踪 239 18.1 业务场景分析 240 18.1.1 故障的快速定界定位 240 18.1.2 调用路径分析 241 18.1.3 调用来源和去向分析 242 18.2 分布式消息跟踪系统设计 242 18.2.1 系统架构 243 18.2.2 埋点日志 244 18.2.3 采样率 247 18.2.4 采集和存储埋点日志 248 18.2.5 计算和展示 249 18.2.6 调用链扩展 251 18.3 总结 251 第19章 可靠性设计 253 19.1 服务状态检测 254 19.1.1 基于服务注册中心状态检测 254 19.1.2 链路有效性状态检测机制 255 19.2 服务健康度检测 256 19.3 服务故障隔离 257 19.3.1 进程级故障隔离 257 19.3.2 VM级故障隔离 259 19.3.3 物理机故障隔离 260 19.3.4 机房故障隔离 261 19.4 其他可靠性特性 262 19.4.1 服务注册中心 262 19.4.2 监控中心 262 19.4.3 服务提供者 262 19.5 总结 263 第20章 微服务架构 264 20.1 微服务架构产生的历史背景 265 20.1.1 研发成本挑战 265 20.1.2 运维成本高 267 20.1.3 新需求上线周期长 268 20.2 微服务架构带来的改变 268 20.2.1 应用解耦 268 20.2.2 分而治之 270 20.2.3 敏捷交付 271 20.3 微服务架构解析 271 20.3.1 微服务划分原则 272 20.3.2 开发微服务 272 20.3.3 基于Docker容器部署微服务 274 20.3.4 治理和运维微服务 277 20.3.5 特点总结 278 20.4 总结 279 第21章 服务化最佳实践 280 21.1 性能和时延问题 281 21.1.1 RPC框架高性能设计 281 21.1.2 业务最佳实践 285 21.2 事务一致性问题 286 21.2.1 分布式事务设计方案 287 21.2.2 分布式事务优化 288 21.3 研发团队协作问题 289 21.3.1 共用服务注册中心 290 21.3.2 直连提供者 290 21.3.3 多团队进度协同 291 21.3.4 服务降级和Mock测试 291 21.3.5 协同调试问题 292 21.3.6 接口前向兼容性 292 21.4 总结 292 · · · · · · () |
深入浅出
很好的一本书,大力推荐这本书
期待内容,好想赶紧开始看
作者的思维的天马行空