CAD2Shape5.0.A8完美破解版欢迎下载
CAD2Shape5.0.A08(绿色破解版),用于地图出来,出图,欢迎下载
高性能MySQL(第3版)-带书签-可编辑
高性能MySQL(第3版)-带书签-可编辑,可编辑PDF,可编辑PDF,可编辑PDF,全书801也
策划编辑z 张春雨
责任编辑z 自涛贾莉
封面设计: Karen Montgomery 张健
印刷g 三河市鑫金马印装有限公司
装订z 三河市鑫金马印装有限公司
出版发行z 电子工业出版社
北京市海淀区万寿路173 信箱邮编: 100036
开本: 787x980 1/16 印张: 50 字数: 1040 千字
印次: 2013 年5 月第1 次印刷
分布式服务框架原理与实践_李林锋著-完整书签
仅供参考,作者拥有所有版权
第1 章应用架构演进......……………….. . .....… ........................ . .... .. ... .. ................... . ..1
1.1 传统垂直应用架构................................................…......…..............… ...........2
1.1.1 垂直应用架构介绍........ . ............. .. .... . . .. ....…...... . .......…........… .........2
1.1.2 垂直应用架构面临的挑战............………………………………............ 4
1.2 RPC 架构.......……………·………….................…………………………………… ...6
l.2.1 RPC 框架原理...................... . ........…...............…………·………...... 6
1.2.2 最简单的RPC 框架实现.. . . . .......... . .. . . . ..…......…...... . …… .................8
J .2.3 业界主流RPC 框架... .. ....................................... . ........……… ...........14
1.2.4 RPC 框架面临的挑战-……………………………·….............................. 17
1.3 SOA 服务化架构....……….....................…..…....................................... . .... 18
1.3.1 面向服务设计的原则...... . ......... . ...... . ..... . . . ...... . .................................四
1.3.2 服务治理.......…………………... . ...……......…....... . ........….. .. ...... .. ...... 19
1.4 微服务架构. . ........... . ... . …… . ....... . ......... … …..……….........….......……............ 21
1.4 .1 什么是微服务........………….. .. . . ..….................…............ . .......…….. 21
1.4.2 微服务架构对比SOA...... ……………........ . .. . ..….......... . .........… .....22
1.5 总结................................ . ................. . ..............………...........…… ...............23
第2 章分布式服务框架入门.. . ................... . .... . . . .. . ...... . .………………………… .......2 5
2.1 分布式服务框架诞生背景...............................…………… ....................26
2. 1.1 应用从集中式走向分布式. . . ... . . . …………...............…................... 26
目录
2. l.2 亟需服务治理........................…..………………………·…… ..............28
2.2 业界分布式服务框架介绍....………. . ......................……· ……….............29
2.2.1 阿里Dubbo.. …………........…………..... . ……........………… ..............30
2.2.2 淘宝HSF ........... .. ........... ................. .. .................... .. ........ ... .... ..........33
2.2.3 亚马逊Coral Service .......…........……………4 ….....…-……·… 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 章通信框架.....................................................................................................但
3.1 关键技术点分析........................................................................................... 43
3. 1. 1 长连接还是短连接...........................……………. . .........................… 43
3. 1.2 BIO 还是NIO...................................................................................43
3. 1.3 自研还是选择开源问O 框架........................................................... 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
• XI.
分布式服务框架原理与实践
第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
• XII •
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 链路创建............. .. .....………………………………………………………….的
目录
5.2.7 链路关闭.....……..…………….......…………… ......................... . ........90
5.3 可靠性设计...........……·………………..........................… ........ .... ...............90
5.3.1 客户端连接超时... .. ........…………………......…………………..… ........90
5.3.2 客户端重连机制. ..............................................................................引
5.3.3 客户端重复握手保护...............…… . .....……......…….............… ...........91
5.3 .4 消息缓存重发........……….............................................................. 92
5.3.5 心跳机制...........……………………………………..…........................ 92
5.4 安全性设计..................................................................................................92
日最佳实践一一协民的前向兼容性................................................................94
5.6 .总结j .............................…..................…………………..................….........….....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
• XIII.
分布式服务框架原理与实践
第7 章集群容错..............................…........….........,..........……………………… ......109
7.1 集群容锚场景.... .. ...…………........... .............................................................110
7. l.l 通信链路故障..........………………………………….............… ........ ..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 失败缓存( Failcacbe) ....... ......……….................…………… ..........113
7.2 .4 快速失败(Failfast) .. .................. ............................................... .. .114
7.2.5 容错策略扩展............................................... . .................... . .............114
7.3 总结........ . .......................... . .................... ..................... .............................. .115
第8 章服务调用.....................................……………………………………·…… .............116
8.1 几个误区................…… ...............................................................................117
8. 1.1 NJO 就是异步服务.............................................…………… ..........117
8. l.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
• XIV.
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. 口服务发布成指定协议........……............…......………….........… .....148
10. 1.4 服务提供者信息注册.................... .. ..… ............................... .... .......149
10.2 服务引用设计....…........…….......……….........…….............… ....................150
10.2.1 本地接口调用转换成远程服务调用..................……… ...................150
10.2.2 服务地址本地缓存........................................................................1 引
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
• xv.
分布式服务框架原理与实践
第11 章服务灰度发布...............……………………………………………........…… ..........157
11.1 服务灰度发布流程设计.. . ... ... . . ...................………......... . ........……… . . ... . ..158
11.1.1 灰度环境准备. . .................................……………….........… ......158
11.1.2 灰度规则设置... . .................…… ........................... . ........... .. ............159
11.1.3 灰度规则下发.....…..…………………………………………… ..................1ω
11. 1.4 灰度路由……………………·………-…………..………...……..… ........16 1
11.1.5 失败回滚....……………………………………………...……………..……… 162
11.1.6 灰度发布总结........ . ............................. . .........................................1 臼
11.2 总结.. . ........................................................................................................163
第12 章参数传递........... .. ... ... ….......... .. ....………… ..................... . ............. . ... .. ...1 64
12.1 内部传参.. . ....................................... . . ... .…………………………… .........165
12. 1.1 业务内部参数传递...................................….... . .………·…… . ..........165
12. 1.2 服务框架内部参数传递..........................…..............… .................168
12.2 外部传参…........….......……........……………………… .......... .. ..........169
12.2.1 通信协议支持............................................................................... .1ω
12.2.2 传参接口定义.. . ..... ... .................. . .…….....….......…........… .........170
12.3 最佳实践..................……................…………….......…...…………·… .......171
12.3.1 防止参数互相覆盖.........………………·…….. ... .........…… ................171
12.3.2 参数生命周期管理........…….. ... .…………... ...… ...... . ......……… .......171
12.4 总结…………………. .. ...….... ..……. . . ... . … ...... . .................................... . ......172
第13 章服务多版本..........................…...............…………………………................. 173
• XVI.
13.1 服务多版本管理设计................................................. . . . .................. ... .... . ..174
13. 1.1 服务版本号管理.. . .... .. .......…………………………………… .............174
13. 1.2 服务提供者........................ ..... ............. ... ....... ... .............................175
13. 1.3 服务消费者.…….. ....….......………………………………..….........175
13.1 .4 基于版本号的服务路由........ ... .......................... .......................176
13.1 .5 服务热升级… .... . ........ ... ... . ............... . ........................... . ......... .. ......177
日2 与OSGi 的对比.. .. . . ... ……….........….......………………..............178
13.2.1 棋块化开发.. .............. . ... . ... . ..………......…… .................................179
目录
13.2.2 插件热部署和热升级. . . ...………·…….......… … .... . ..…… ....... . .......... 184
13.2.3 不使用OSGi 的其他理由....... . .……………… ................................ .1 85
13.3 总结…….......…………………......……… .. ... . .…... . ..….......……… .......... 185
第14 章流量控制-…...…………………………………………………………………… …… .....186
14.1 静态流控......... . .................................. .. ....... . ......... . .. .. ................... . ...........1 们
14.1.1 传统静态流控设计方案. ........ . ..............….......…… ......... .. . . ............187
14. 1.2 传统方案的缺点...... .. .................................... . ............................... 1 88
14.1.3 动态配额分配制.. .... .... . .... ... ... .. ........ .... ...... . .......... .... .... . .. .. ........... 188
14. 1.4 动态配额申请制............…… . ......… ……….. ............ .. ...........190
14.2 动态流控............................. .... ............................................. . ....................1 川
14.2.1 动态流控因子................... ... .......................................................... 1 归
14.2.2 分级流控… ……………… … … ……… ……… ……... ... ....… ......... . ....... ... ...192
14.3 并发控制.. .. ...…… ........………......... .................................................193
14.3.1 服务端全局控制……… . ..................................… ............................. 19 3
14.3.2 服务消费者流控..... ... . .. ........... .… ………..... ... .. . ...… ..... . ..............194
14.4 连接控制.. ... ...... . .………………………………………………………·……......… ......195
14.4.1 服务端连接数流控. .................. .. . ... .... . ........ .. ..………·… ... . . .. ... .. . .. . .195
14.4.2 服务消费者连接数流控......... . . .... . .. ..............………… .................... 1 归
14.5 井发和连接控制算法........……………………………………………. . …… ......... . ...1 归
14.6 总结... . ........ .. .......... . .. ...... 1 . ………… . ....... . . .... . ..... . .. .. ............ ... .......... 197
第15 章服务降级. . ... ......... .. ... ..... .. ..... . . ......... .... ................. .. .. . ..... ..... .... . .... ... ....... 198
15.1 屏蔽降级............... . ....... ……....………………………·….......…..................199
15 . 川屏蔽降级的流程.. .. . . ................... . ..... . ....................… ..... . ............... 199
15. 1.2 屏蔽降级的设计实现. ..... ... .. . . ............. .. ...... ... ....... . ...... ...... ... .. .......200
15.2 容锚降级.............…...... . ...... ..……· …………..............… .... ... ..............202
15.2.1 容错降级的工作原理.. .. ....... .. ............... .. ..... . .....…..... . … ................202
15.2.2 运行时容错降级................. .. ............ . ....................... . ..... ... ............204
15.3 业务层降级............. . .………………………........…........….......…………… ...205
15.4 总结. ... .......……............……-………………………·………………… ...............205
• XVII.
分布式服务框架原理与实践
第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 SOAGovemance............................................................................215
17. 1.2 分布式服务框架服务泊理…………......…… ·………….............217
17. 1.3 AWS 云端微服务治理...................................................................217
17.2 应用服务化后面临的挑战-………..… ......... . ............ .... ..........................218
17.2.1 跨团队协作问题..........………..……………… . ...................................2 叩
门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
• XVIII •
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 来样率..................................... .. .... 目 .... .............................. ....... .....2盯47
l山8.2 .4 采集和存储埋点日志.……….…….…..… ….….-… . .… …….…….…. .… ….…….…. .… ….…….….….......…......……….....................248
18.2.5 计算和展示............................................................….......… ...........249
18.2.6 调用链扩展............................…......…… ......................................251
18.3 总结................ . ..................................................... . ........... . .......................2 日
第19 章可靠性设计..............................................................................................253
19.1 服务状态检测..........................………………………….... . ........ .. .... .… . ..........254
19. 1. 1 基于服务注册中心状态检测...................... .. .................................254
19. 1.2 链路有效性状态检测机制.. ..... .. ... .. ... ........ ... .. . ........................... . ..2 55
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
• XIX.
分布式服务框架原理与实践
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 总结 ..........................................................................................................2河79
第21 章服务化最佳实践.......................................................................................280
2 1. 1 性能和时延问题........................................................................................281
2 1.1.1 RPC 框架高性能设计..................................................…… ...........281
21.1.2 业务最佳实践.............………-……………………..…… ..................285
2 1.2 事务一致性问题........................................................................................286
2 1.2.1 分布式事务设计方案.................…......…........…........… ............287
2 1.2.2 分布式事务优化 ............................................................................2臼88
• xx.
2引1. 3 研发团队协作问题.…….川…...…….川….川........….............…........……........………… ..............289
2 1.3.1 共用服务注册中心.............................................…………… ...........290
21.3.2 直连提供者................ ... ..............……………… ........ ... ...............290
21.3.3 多团队进度协同..... ....…. ........….. .... ...………… .. ............ .................291
21.3.4 服务降级和Mock 测试..……·………….................…… ................291
2 1.3.5 协同调试问题...............…….....……… ........................................292
21.3.6 接口前向兼容性............................................................................292
21.4 总结........….......................................... …………………….........….............292