分布式服务框架原理与实践 PDF 高清电子书 免费下载 完整版 在线阅读- 高飞网
分布式服务框架原理与实践

分布式服务框架原理与实践

李林锋
分布式
浏览人数:262 在读人数:8
《分布式服务框架原理与实践》作者具有丰富的分布式服务框架、平台中间件的架构设计和实践经验,主导设计的华为分布式服务框架已经在全球数十个国家成功商用。《分布式服务框架原理与实践》依托工作实践,从分布式服务框架的架构设计原理到实践经验总结,涵盖了服务化架构演进、订阅发布、路由策略、集群容错和服务治理等多个专题,全方位剖析服务框架的设计原则和原理,结合大量实践案例与读者分享作者对分布式服务框架设计和运维的体会。同时,对基于Docker部署微服务以及基于微服务架构开发、部署和运维业务系统进行了详细介绍。

第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 亚马逊CoralService 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 SOAGovernance 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   
看过本书的人还看过