注重体验与质量的电子书资源下载网站
分类于: 计算机基础 设计
简介
深入理解Apache Dubbo与实战 豆 6.9分
资源最后更新于 2020-08-19 16:06:46
作者:诣极
出版社:电子工业出版社
出版日期:2019-01
ISBN:9787121366345
文件格式: pdf
标签: dubbo 中间件 架构 分布式 计算机 编程 原理解析 源码分析
简介· · · · · ·
《深入理解Apache Dubbo与实战》首先介绍Dubbo的简史、后续的规划和整体架构大图;接着介绍Dubbo环境配置,并基于Dubbo开发第一款应用程序;然后介绍Dubbo内置的常用注册中心的实现原理,Dubbo扩展点加载的原理和实现,Dubbo的启动、服务暴露、服务消费和优雅停机的机制,Dubbo中RPC协议细节、编解码和服务调用实现原理,Dubbo集群容错、路由和负载均衡机制,Dubbo的扩展点相关知识,Dubbo高级特性的实现和原理,Dubbo常用的Filter的实现原理,Dubbo中新增etcd3注册中心的实战内容和Dubbo服务治理平台的相关知识;最后介绍Dubbo未来生态和Dubbo Mesh的相关知识。
《深入理解Apache Dubbo与实战》适合对Dubbo有一定了解、对Dubbo框架感兴趣的读者,也适合想深入理解Dubbo原理...
目录
第1章 Dubbo——高性能RPC通信框架 ............................................................................... 1
1.1 应用架构演进过程........................................................................................................ 1
1.1.1 单体应用 ........................................................................................................... 1
1.1.2 分布式应用 ....................................................................................................... 3
1.2 Dubbo简介.................................................................................................................... 6
1.2.1 Dubbo的发展历史............................................................................................ 7
1.2.2 Dubbo是什么 ................................................................................................... 7
1.2.3 Dubbo解决什么问题........................................................................................ 9
1.2.4 谁在使用Dubbo ............................................................................................. 10
1.2.5 Dubbo后续的规划.......................................................................................... 11
1.3 Dubbo总体大图 .......................................................................................................... 11
1.3.1 Dubbo总体分层 ............................................................................................. 11
1.3.2 Dubbo核心组件 ............................................................................................. 12
1.3.3 Dubbo总体调用过程...................................................................................... 13
1.4 小结 ............................................................................................................................. 15
第2章 开发第一款Dubbo应用程序 .................................................................................... 16
2.1 配置开发环境 ............................................................................................................. 16
2.1.1 下载并安装JDK ............................................................................................. 17
2.1.2 下载并安装IDE .............................................................................................. 17
2.1.3 下载并配置Maven ......................................................................................... 18
2.1.4 下载并配置ZooKeeper .................................................................................. 18
2.1.5 使用IDEA调试Dubbo源码 ......................................................................... 18
2.2 基于XML配置实现 ................................................................................................... 21
2.2.1 编写Echo服务器 ........................................................................................... 21
2.2.2 编写Echo客户端 ........................................................................................... 24
2.3 基于注解实现 ............................................................................................................. 26
2.3.1 基于注解编写Echo服务器 ........................................................................... 26
2.3.2 基于注解编写Echo客户端 ........................................................................... 28
2.4 基于API实现 ............................................................................................................. 30
2.4.1 基于API编写Echo服务器 ........................................................................... 30
2.4.2 基于API编写Echo客户端 ........................................................................... 31
2.5 构建并运行 ................................................................................................................. 32
2.6 小结 ............................................................................................................................. 34
第3章 Dubbo注册中心 ....................................................................................................... 35
3.1 注册中心概述 ............................................................................................................. 35
3.1.1 工作流程 ......................................................................................................... 36
3.1.2 数据结构 ......................................................................................................... 37
3.1.3 ZooKeeper原理概述 ...................................................................................... 37
3.1.4 Redis原理概述 ............................................................................................... 39
3.2 订阅/发布 .................................................................................................................... 40
3.2.1 ZooKeeper的实现 .......................................................................................... 40
3.2.2 Redis的实现 ................................................................................................... 44
3.3 缓存机制 ..................................................................................................................... 48
3.3.1 缓存的加载 ..................................................................................................... 49
3.3.2 缓存的保存与更新 ......................................................................................... 50
3.4 重试机制 ..................................................................................................................... 50
3.5 设计模式 ..................................................................................................................... 51
3.5.1 模板模式 ......................................................................................................... 51
3.5.2 工厂模式 ......................................................................................................... 52
3.6 小结 ............................................................................................................................. 54
第4章 Dubbo扩展点加载机制 ............................................................................................ 55
4.1 加载机制概述 ............................................................................................................. 55
4.1.1 Java SPI ........................................................................................................... 56
4.1.2 扩展点加载机制的改进 ................................................................................. 57
4.1.3 扩展点的配置规范 ......................................................................................... 59
4.1.4 扩展点的分类与缓存 ..................................................................................... 60
4.1.5 扩展点的特性 ................................................................................................. 61
4.2 扩展点注解 ................................................................................................................. 62
4.2.1 扩展点注解:@SPI ........................................................................................ 62
4.2.2 扩展点自适应注解:@Adaptive ................................................................... 63
4.2.3 扩展点自动激活注解:@Activate ................................................................ 65
4.3 ExtensionLoader的工作原理 ..................................................................................... 66
4.3.1 工作流程 ......................................................................................................... 66
4.3.2 getExtension的实现原理 ................................................................................ 67
4.3.3 getAdaptiveExtension的实现原理 ................................................................. 70
4.3.4 getActivateExtension的实现原理 .................................................................. 73
4.3.5 ExtensionFactory的实现原理 ........................................................................ 73
4.4 扩展点动态编译的实现 .............................................................................................. 76
4.4.1 总体结构 ......................................................................................................... 77
4.4.2 Javassist动态代码编译 .................................................................................. 78
4.4.3 JDK动态代码编译 ......................................................................................... 79
4.5 小结 ............................................................................................................................. 80
第5章 Dubbo启停原理解析 .................................................................................................. 81
5.1 配置解析 ..................................................................................................................... 81
5.1.1 基于schema设计解析 ................................................................................... 82
5.1.2 基于XML配置原理解析 ............................................................................... 85
5.1.3 基于注解配置原理解析 ................................................................................. 91
5.2 服务暴露的实现原理.................................................................................................. 97
5.2.1 配置承载初始化 ............................................................................................. 97
5.2.2 远程服务的暴露机制 ..................................................................................... 97
5.2.3 本地服务的暴露机制 ................................................................................... 105
5.3 服务消费的实现原理................................................................................................ 106
5.3.1 单注册中心消费原理 ................................................................................... 106
5.3.2 多注册中心消费原理 ................................................................................... 113
5.3.3 直连服务消费原理 ....................................................................................... 114
5.4 优雅停机原理解析.................................................................................................... 115
5.5 小结 ........................................................................................................................... 116
第6章 Dubbo远程调用 ..................................................................................................... 117
6.1 Dubbo调用介绍 ........................................................................................................ 117
6.2 Dubbo协议详解 ........................................................................................................ 119
6.3 编解码器原理 ........................................................................................................... 122
6.3.1 Dubbo协议编码器........................................................................................ 123
6.3.2 Dubbo协议解码器........................................................................................ 128
6.4 Telnet调用原理......................................................................................................... 136
6.4.1 Telnet指令解析原理 .................................................................................... 136
6.4.2 Telnet实现健康监测 .................................................................................... 140
6.5 ChannelHandler ......................................................................................................... 141
6.5.1 核心Handler和线程模型 ............................................................................. 141
6.5.2 Dubbo请求响应Handler .............................................................................. 145
6.5.3 Dubbo心跳Handler ...................................................................................... 148
6.6 小结 ........................................................................................................................... 150
第7章 Dubbo集群容错 ..................................................................................................... 151
7.1 Cluster层概述 ........................................................................................................... 151
7.2 容错机制的实现 ....................................................................................................... 153
7.2.1 容错机制概述 ............................................................................................... 153
7.2.2 Cluster接口关系 ........................................................................................... 155
7.2.3 Failover策略 ................................................................................................. 157
7.2.4 Failfast策略 .................................................................................................. 158
7.2.5 Failsafe策略 .................................................................................................. 158
7.2.6 Failback策略................................................................................................. 159
7.2.7 Available策略 ............................................................................................... 160
7.2.8 Broadcast策略 .............................................................................................. 160
7.2.9 Forking策略 .................................................................................................. 161
7.3 Directory的实现 ....................................................................................................... 162
7.3.1 总体实现 ....................................................................................................... 162
7.3.2 RegistryDirectory的实现 .............................................................................. 163
7.4 路由的实现 ............................................................................................................... 166
7.4.1 路由的总体结构 ........................................................................................... 166
7.4.2 条件路由的参数规则 ................................................................................... 167
7.4.3 条件路由的实现 ........................................................................................... 168
7.4.4 文件路由的实现 ........................................................................................... 169
7.4.5 脚本路由的实现 ........................................................................................... 170
7.5 负载均衡的实现 ....................................................................................................... 171
7.5.1 包装后的负载均衡 ....................................................................................... 171
7.5.2 负载均衡的总体结构 ................................................................................... 173
7.5.3 Random负载均衡 ......................................................................................... 175
7.5.4 RoundRobin负载均衡 .................................................................................. 176
7.5.5 LeastActive负载均衡 ................................................................................... 178
7.5.6 一致性Hash负载均衡 ................................................................................. 179
7.6 Merger的实现 ........................................................................................................... 181
7.6.1 总体结构 ....................................................................................................... 181
7.6.2 MergeableClusterInvoker机制...................................................................... 183
7.7 Mock .......................................................................................................................... 185
7.7.1 Mock常见的使用方式 ................................................................................. 185
7.7.2 Mock的总体结构 ......................................................................................... 186
7.7.3 Mock的实现原理 ......................................................................................... 187
7.8 小结 ........................................................................................................................... 189
第8章 Dubbo扩展点 ......................................................................................................... 190
8.1 Dubbo核心扩展点概述 ............................................................................................ 190
8.1.1 扩展点的背景 ............................................................................................... 191
8.1.2 扩展点整体架构 ........................................................................................... 191
8.2 RPC层扩展点 ........................................................................................................... 192
8.2.1 Proxy层扩展点 ............................................................................................. 192
8.2.2 Registry层扩展点 ......................................................................................... 194
8.2.3 Cluster层扩展点 ........................................................................................... 195
8.3 Remote层扩展点 ...................................................................................................... 198
8.3.1 Protocol层扩展点 ......................................................................................... 199
8.3.2 Exchange层扩展点 ....................................................................................... 202
8.3.3 Transport层扩展点 ....................................................................................... 203
8.3.4 Serialize层扩展点 ........................................................................................ 206
8.4 其他扩展点 ............................................................................................................... 207
第9章 Dubbo高级特性 ..................................................................................................... 210
9.1 Dubbo高级特性概述 ................................................................................................ 210
9.2 服务分组和版本 ....................................................................................................... 211
9.3 参数回调 ................................................................................................................... 214
9.4 隐式参数 ................................................................................................................... 217
9.5 异步调用 ................................................................................................................... 218
9.6 泛化调用 ................................................................................................................... 219
9.7 上下文信息 ............................................................................................................... 220
9.8 Telnet操作 ................................................................................................................ 221
9.9 Mock调用 ................................................................................................................. 224
9.10 结果缓存 ................................................................................................................. 226
9.11 小结 ......................................................................................................................... 226
第10章 Dubbo过滤器 ....................................................................................................... 227
10.1 Dubbo过滤器概述 .................................................................................................. 227
10.1.1 过滤器的使用 ............................................................................................. 228
10.1.2 过滤器的总体结构 ..................................................................................... 228
10.2 过滤器链初始化的实现原理 .................................................................................. 231
10.3 服务提供者过滤器的实现原理 .............................................................................. 233
10.3.1 AccessLogFilter的实现原理 ...................................................................... 233
10.3.2 ExecuteLimitFilter的实现原理 .................................................................. 234
10.3.3 ClassLoaderFilter的实现原理 .................................................................... 235
10.3.4 ContextFilter的实现原理 ........................................................................... 237
1.1 应用架构演进过程........................................................................................................ 1
1.1.1 单体应用 ........................................................................................................... 1
1.1.2 分布式应用 ....................................................................................................... 3
1.2 Dubbo简介.................................................................................................................... 6
1.2.1 Dubbo的发展历史............................................................................................ 7
1.2.2 Dubbo是什么 ................................................................................................... 7
1.2.3 Dubbo解决什么问题........................................................................................ 9
1.2.4 谁在使用Dubbo ............................................................................................. 10
1.2.5 Dubbo后续的规划.......................................................................................... 11
1.3 Dubbo总体大图 .......................................................................................................... 11
1.3.1 Dubbo总体分层 ............................................................................................. 11
1.3.2 Dubbo核心组件 ............................................................................................. 12
1.3.3 Dubbo总体调用过程...................................................................................... 13
1.4 小结 ............................................................................................................................. 15
第2章 开发第一款Dubbo应用程序 .................................................................................... 16
2.1 配置开发环境 ............................................................................................................. 16
2.1.1 下载并安装JDK ............................................................................................. 17
2.1.2 下载并安装IDE .............................................................................................. 17
2.1.3 下载并配置Maven ......................................................................................... 18
2.1.4 下载并配置ZooKeeper .................................................................................. 18
2.1.5 使用IDEA调试Dubbo源码 ......................................................................... 18
2.2 基于XML配置实现 ................................................................................................... 21
2.2.1 编写Echo服务器 ........................................................................................... 21
2.2.2 编写Echo客户端 ........................................................................................... 24
2.3 基于注解实现 ............................................................................................................. 26
2.3.1 基于注解编写Echo服务器 ........................................................................... 26
2.3.2 基于注解编写Echo客户端 ........................................................................... 28
2.4 基于API实现 ............................................................................................................. 30
2.4.1 基于API编写Echo服务器 ........................................................................... 30
2.4.2 基于API编写Echo客户端 ........................................................................... 31
2.5 构建并运行 ................................................................................................................. 32
2.6 小结 ............................................................................................................................. 34
第3章 Dubbo注册中心 ....................................................................................................... 35
3.1 注册中心概述 ............................................................................................................. 35
3.1.1 工作流程 ......................................................................................................... 36
3.1.2 数据结构 ......................................................................................................... 37
3.1.3 ZooKeeper原理概述 ...................................................................................... 37
3.1.4 Redis原理概述 ............................................................................................... 39
3.2 订阅/发布 .................................................................................................................... 40
3.2.1 ZooKeeper的实现 .......................................................................................... 40
3.2.2 Redis的实现 ................................................................................................... 44
3.3 缓存机制 ..................................................................................................................... 48
3.3.1 缓存的加载 ..................................................................................................... 49
3.3.2 缓存的保存与更新 ......................................................................................... 50
3.4 重试机制 ..................................................................................................................... 50
3.5 设计模式 ..................................................................................................................... 51
3.5.1 模板模式 ......................................................................................................... 51
3.5.2 工厂模式 ......................................................................................................... 52
3.6 小结 ............................................................................................................................. 54
第4章 Dubbo扩展点加载机制 ............................................................................................ 55
4.1 加载机制概述 ............................................................................................................. 55
4.1.1 Java SPI ........................................................................................................... 56
4.1.2 扩展点加载机制的改进 ................................................................................. 57
4.1.3 扩展点的配置规范 ......................................................................................... 59
4.1.4 扩展点的分类与缓存 ..................................................................................... 60
4.1.5 扩展点的特性 ................................................................................................. 61
4.2 扩展点注解 ................................................................................................................. 62
4.2.1 扩展点注解:@SPI ........................................................................................ 62
4.2.2 扩展点自适应注解:@Adaptive ................................................................... 63
4.2.3 扩展点自动激活注解:@Activate ................................................................ 65
4.3 ExtensionLoader的工作原理 ..................................................................................... 66
4.3.1 工作流程 ......................................................................................................... 66
4.3.2 getExtension的实现原理 ................................................................................ 67
4.3.3 getAdaptiveExtension的实现原理 ................................................................. 70
4.3.4 getActivateExtension的实现原理 .................................................................. 73
4.3.5 ExtensionFactory的实现原理 ........................................................................ 73
4.4 扩展点动态编译的实现 .............................................................................................. 76
4.4.1 总体结构 ......................................................................................................... 77
4.4.2 Javassist动态代码编译 .................................................................................. 78
4.4.3 JDK动态代码编译 ......................................................................................... 79
4.5 小结 ............................................................................................................................. 80
第5章 Dubbo启停原理解析 .................................................................................................. 81
5.1 配置解析 ..................................................................................................................... 81
5.1.1 基于schema设计解析 ................................................................................... 82
5.1.2 基于XML配置原理解析 ............................................................................... 85
5.1.3 基于注解配置原理解析 ................................................................................. 91
5.2 服务暴露的实现原理.................................................................................................. 97
5.2.1 配置承载初始化 ............................................................................................. 97
5.2.2 远程服务的暴露机制 ..................................................................................... 97
5.2.3 本地服务的暴露机制 ................................................................................... 105
5.3 服务消费的实现原理................................................................................................ 106
5.3.1 单注册中心消费原理 ................................................................................... 106
5.3.2 多注册中心消费原理 ................................................................................... 113
5.3.3 直连服务消费原理 ....................................................................................... 114
5.4 优雅停机原理解析.................................................................................................... 115
5.5 小结 ........................................................................................................................... 116
第6章 Dubbo远程调用 ..................................................................................................... 117
6.1 Dubbo调用介绍 ........................................................................................................ 117
6.2 Dubbo协议详解 ........................................................................................................ 119
6.3 编解码器原理 ........................................................................................................... 122
6.3.1 Dubbo协议编码器........................................................................................ 123
6.3.2 Dubbo协议解码器........................................................................................ 128
6.4 Telnet调用原理......................................................................................................... 136
6.4.1 Telnet指令解析原理 .................................................................................... 136
6.4.2 Telnet实现健康监测 .................................................................................... 140
6.5 ChannelHandler ......................................................................................................... 141
6.5.1 核心Handler和线程模型 ............................................................................. 141
6.5.2 Dubbo请求响应Handler .............................................................................. 145
6.5.3 Dubbo心跳Handler ...................................................................................... 148
6.6 小结 ........................................................................................................................... 150
第7章 Dubbo集群容错 ..................................................................................................... 151
7.1 Cluster层概述 ........................................................................................................... 151
7.2 容错机制的实现 ....................................................................................................... 153
7.2.1 容错机制概述 ............................................................................................... 153
7.2.2 Cluster接口关系 ........................................................................................... 155
7.2.3 Failover策略 ................................................................................................. 157
7.2.4 Failfast策略 .................................................................................................. 158
7.2.5 Failsafe策略 .................................................................................................. 158
7.2.6 Failback策略................................................................................................. 159
7.2.7 Available策略 ............................................................................................... 160
7.2.8 Broadcast策略 .............................................................................................. 160
7.2.9 Forking策略 .................................................................................................. 161
7.3 Directory的实现 ....................................................................................................... 162
7.3.1 总体实现 ....................................................................................................... 162
7.3.2 RegistryDirectory的实现 .............................................................................. 163
7.4 路由的实现 ............................................................................................................... 166
7.4.1 路由的总体结构 ........................................................................................... 166
7.4.2 条件路由的参数规则 ................................................................................... 167
7.4.3 条件路由的实现 ........................................................................................... 168
7.4.4 文件路由的实现 ........................................................................................... 169
7.4.5 脚本路由的实现 ........................................................................................... 170
7.5 负载均衡的实现 ....................................................................................................... 171
7.5.1 包装后的负载均衡 ....................................................................................... 171
7.5.2 负载均衡的总体结构 ................................................................................... 173
7.5.3 Random负载均衡 ......................................................................................... 175
7.5.4 RoundRobin负载均衡 .................................................................................. 176
7.5.5 LeastActive负载均衡 ................................................................................... 178
7.5.6 一致性Hash负载均衡 ................................................................................. 179
7.6 Merger的实现 ........................................................................................................... 181
7.6.1 总体结构 ....................................................................................................... 181
7.6.2 MergeableClusterInvoker机制...................................................................... 183
7.7 Mock .......................................................................................................................... 185
7.7.1 Mock常见的使用方式 ................................................................................. 185
7.7.2 Mock的总体结构 ......................................................................................... 186
7.7.3 Mock的实现原理 ......................................................................................... 187
7.8 小结 ........................................................................................................................... 189
第8章 Dubbo扩展点 ......................................................................................................... 190
8.1 Dubbo核心扩展点概述 ............................................................................................ 190
8.1.1 扩展点的背景 ............................................................................................... 191
8.1.2 扩展点整体架构 ........................................................................................... 191
8.2 RPC层扩展点 ........................................................................................................... 192
8.2.1 Proxy层扩展点 ............................................................................................. 192
8.2.2 Registry层扩展点 ......................................................................................... 194
8.2.3 Cluster层扩展点 ........................................................................................... 195
8.3 Remote层扩展点 ...................................................................................................... 198
8.3.1 Protocol层扩展点 ......................................................................................... 199
8.3.2 Exchange层扩展点 ....................................................................................... 202
8.3.3 Transport层扩展点 ....................................................................................... 203
8.3.4 Serialize层扩展点 ........................................................................................ 206
8.4 其他扩展点 ............................................................................................................... 207
第9章 Dubbo高级特性 ..................................................................................................... 210
9.1 Dubbo高级特性概述 ................................................................................................ 210
9.2 服务分组和版本 ....................................................................................................... 211
9.3 参数回调 ................................................................................................................... 214
9.4 隐式参数 ................................................................................................................... 217
9.5 异步调用 ................................................................................................................... 218
9.6 泛化调用 ................................................................................................................... 219
9.7 上下文信息 ............................................................................................................... 220
9.8 Telnet操作 ................................................................................................................ 221
9.9 Mock调用 ................................................................................................................. 224
9.10 结果缓存 ................................................................................................................. 226
9.11 小结 ......................................................................................................................... 226
第10章 Dubbo过滤器 ....................................................................................................... 227
10.1 Dubbo过滤器概述 .................................................................................................. 227
10.1.1 过滤器的使用 ............................................................................................. 228
10.1.2 过滤器的总体结构 ..................................................................................... 228
10.2 过滤器链初始化的实现原理 .................................................................................. 231
10.3 服务提供者过滤器的实现原理 .............................................................................. 233
10.3.1 AccessLogFilter的实现原理 ...................................................................... 233
10.3.2 ExecuteLimitFilter的实现原理 .................................................................. 234
10.3.3 ClassLoaderFilter的实现原理 .................................................................... 235
10.3.4 ContextFilter的实现原理 ........................................................................... 237