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

出版日期:2016-1-15
ISBN:9787121279193
作者:李林锋
页数:312页

作者简介

《分布式服务框架:原理与实践》作者具有丰富的分布式服务框架、平台中间件的架构设计和实践经验,主导设计的华为分布式服务框架已经在全球数十个国家成功商用。《分布式服务框架:原理与实践》依托工作实践,从分布式服务框架的架构设计原理到实践经验总结,涵盖了服务化架构演进、订阅发布、路由策略、集群容错和服务治理等多个专题,全方位剖析服务框架的设计原则和原理,结合大量实践案例与读者分享作者对分布式服务框架设计和运维的体会。同时,对基于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 亚马逊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

内容概要

李林锋,现任华为PaaS平台架构师,8年JavaNIO通信框架、平台中间件架构设计和开发经验,主导设计和开发的华为分布式服务框架已经在全球数十个国家成功商用。精通Netty、Mina、RPC框架、企业ESB总线、分布式服务框架等技术,公司总裁技术创新奖获得者。


 分布式服务框架:原理与实践下载 精选章节试读



发布书评

 
 


精彩短评 (总计35条)

  •     泛泛而谈,感觉深入的东西并不多。而且行文风格类似“名词解释”,解释了一下这是什么、怎么做、举个简单的例子,至于 为什么这么做?这么做是为了解决什么样的痛点?这些我个人比较想知道的东西基本都是一笔带过,而且大多是老生常谈的话,感觉作者并没有结合自己丰富的经验进行深层次的阐述。
  •     做一个纲要式的了解还可以,深入需要其他资料的辅助
  •     泛泛而谈,跟第一本书一样不负责。。。
  •     看了那么多可视化界面忽然间好仰慕Dubbo,好像很高大上的样子。然后再次意识到还有好多东西要做
  •     水分太多
  •     框架讲的比较全,不是很深入,主要是一堆java导致最后几章实在看不进去了
  •     全面但不深入,适合快速了解分布式框架概貌
  •     食之无味,不推荐
  •     作者一看就是踩过不少坑,关于分布式服务框架的设计原理和总体思路清晰。市面上国人写的分布式相关主题的书文字性的描述居多,能够补充一些主流框架的相关主题实现方案比较更好了。我比较关心的服务治理层、分布式事务等问题上如何解决讲得比较简略。
  •     还行,分布式服务的纲领式介绍
  •     看完第一章,收获不大,有部分内容是从dubbo上面照搬过来的
  •     前几章总结得不错,后面以后实践微服务时或许需要就再看了
  •     优点是讲的比较全,基本全涉及了,缺点是每章讲的比较浅,三星半吧。
  •     是了解分布式和微服务很好的教材,简要的介绍了背景知识,又对目前行业内比较有名的框架都有介绍,更宝贵的是没有一点废话并且清晰的说明了分布式框架以及“微服务”到底是个什么,与传统开发框架有什么区别。
  •     讲解了分布式框架包含的内容,其实对netty和Dubbo了解的话,这本书很快就可以读完,很多netty的知识跟作者的netty权威指南是一样的。如果想了解分布式架构还是可以看看。
  •     全面介绍了分布式服务框架开发中的一些技术选型,以及如何避免架构设计中的一些坑,如何做高可用,适合较大规模的服务治理,后面几个章节安排可以调整一下
  •     很不错的讲解微服务的书籍,概念介绍得很全,但是语言太特定,使用的是 Java语言,如果能更通用些会更好,或者对其他语言有一些指引也不错;此外,很多内容也是点到即止,可能因为这本书也比较薄,内容又多,也只能这样了。
  •     开发部署运维分布式服务框架下各种设计的选型,有优缺点对比,但是比较泛。具体的问题,还得读者挖掘,深入学习
  •     很系统地讲解了分布式服务框架的方方面面,对于指导实践很有意义
  •     概念上有了一定的认识,但是整体对分布式架构的梳理感觉还不到位,整本书看完了对分布式服务架构具体实践还是不够明白,或许也是功底不够的原因吧。
  •     推荐阅读,可以帮助梳理分布式服务框架的各个方面
  •     不同人需求不同,对我来说前前章和后两章最有用,当中的实现方式没什么参考价值和应用场景 PS,作者应该是南大出生,毕业设计做的是netty
  •     基本都是泛泛而谈,没有太多的“干货”。不过这种讲架构的书也很难有很深入的东西吧,大概就是介绍一些概念和最佳实践。
  •     可与《大型网站系统与Java中间件开发实践》,dubbo源码三者一起参照阅读。本身的提纲写得不错,第二章总结得很好!有一点需要明确,作者极力推荐netty作为基石,但企业级不一定需要走TCP,HTTP/JSON也行,依业务和团队而定
  •     最近刚读完的,对分布式架构的基本技术与框架都做了简单的介绍,讲的东西很全,但是都是蜻蜓点水,就当是有个概念了。不过书中对个别内容还是介绍很到位的,如果想研究分布式系统,还是值得一看的
  •     书的内容,大部分好像都是从Dubbo文档中搞过来的,不建议读这本书,直接看Dubbo文档就可以了。
  •     通俗易懂,内容比较完整。
  •     虽然讲得略粗,但把分布式服务框架的功能说了个遍
  •     看完《netty权威指南》之后再看这本书,会有很多重复的内容,但是此书对于了解分布式架构设计,还是有帮助。
  •     虽简略,但周全,有可取之处。
  •     概要性地把分布式服务框架的每个部分都大概介绍下,没什么干货,可以作为一个索引大致了解,然后逐个攻破。
  •     关于服务化的方方面面都有阐述, rpc, 服务路由, 容错, 降级, 限流, trace,治理等都有描述, 主要用来建立服务化的宏观认知...
  •     偏泛,不深入
  •     感觉这本书各方面讲的太太浅显了,很多东西一掠而过。比如一些关键的性的问题抛出之后,然后作者仅仅说用这个框架的api可以解决,至于其中怎么解决的原理一点没有涉及。看这本书的最大感触是各个章节的分了好多好多小章节,估计作者想把书写的全面一些,但是分了就分了吧,好多小章节这就是一小段话,根本没有什么深度。 总之这本书不太推荐大家购买,类似的书购买淘宝的那个 蓝皮书“java中间件”即可。感觉那本书的干货比这个多多了。
  •     感觉整书结构性较差,读完收获不多。
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024