基础篇 2
第1章 Dubbo基础 2
1.1 初识Dubbo 2
1.2 本书Demo详解 3
1.2.1 Demo结构说明 3
1.2.2 SDK模块 4
1.2.3 同步发布与调用服务 6
1.2.4 服务消费端异步调用服务 10
1.2.5 服务提供端异步执行 13
1.2.6 服务消费端泛化调用 17
1.2.7 服务消费端本地服务mock与服务降级 21
1.2.8 隐式参数传递 24
1.2.9 本地服务暴露与引用 26
1.3 小结 28
高级篇 30
第2章 Dubbo框架内核原理剖析 30
2.1 Dubbo分层架构概述 30
2.2 Dubbo远程调用细节 33
2.2.1 服务提供者暴露一个服务的概要过程 33
2.2.2 服务消费者消费一个服务的概要过程 34
2.3 Dubbo的适配器原理 35
2.4 Dubbo的动态编译原理 36
2.5 Dubbo增强SPI 39
2.5.1 JDK标准SPI原理 39
2.5.2 增强SPI原理 43
2.5.3 扩展点的自动包装 54
2.6 Dubbo使用JavaAssist减少反射调用开销 57
2.7 小结 60
第3章 远程服务发布与引用流程剖析 61
3.1 Dubbo服务发布端启动流程剖析 61
3.2 Dubbo服务提供方如何处理请求 74
3.3 Dubbo服务消费方启动流程剖析 81
3.4 Dubbo服务消费端一次远程调用过程 97
3.5 小结 100
第4章 Directory目录与Router路由服务 101
4.1 Directory目录 101
4.2 RegistryDirectory的创建 101
4.3 RegistryDirectory中invoker列表的更新 102
4.4 小结 107
第5章 Dubbo消费端服务mock与服务降级策略原理 108
5.1 服务降级原理 108
5.1.1 降级策略注册 108
5.1.2 服务消费端使用降级策略 109
5.2 本地服务mock原理 111
5.2.1 mock合法性检查 111
5.2.2 服务消费端使用mock服务 113
5.3 小结 116
第6章 Dubbo集群容错与负载均衡策略 117
6.1 Dubbo集群容错策略概述 117
6.2 Failfast Cluster策略源码分析 119
6.3 Failsafe Cluster策略源码分析 120
6.4 Failover Cluster策略源码分析 120
6.5 Failback Cluster策略源码分析 122
6.6 Forking Cluster策略源码分析 124
6.7 Broadcast Cluster策略源码分析 127
6.8 如何基于扩展接口自定义集群容错策略 128
6.9 Dubbo负载均衡策略概述 129
6.10 Random LoadBalance策略源码分析 131
6.11 RoundRobin LoadBalance策略源码分析 134
6.12 LeastActive LoadBalance策略源码分析 139
6.13 ConsistentHash LoadBalance策略源码分析 141
6.13.1 一致性Hash负载均衡策略原理 141
6.13.2 源码分析 147
6.14 如何基于扩展接口自定义负载均衡策略 148
6.15 小结 149
第7章 Dubbo线程模型与线程池策略 150
7.1 Dubbo的线程模型概述 150
7.2 AllDispatcher源码剖析 152
7.3 DirectDispatcher源码剖析 154
7.4 MessageOnlyDispatcher源码剖析 154
7.5 ExecutionDispatcher源码剖析 155
7.6 ConnectionOrderedDispatcher源码剖析 156
7.7 线程模型的确定时机 159
7.8 如何基于扩展接口自定义线程模型 160
7.9 Dubbo的线程池策略 161
7.10 FixedThreadPool源码剖析 161
7.11 LimitedThreadPool源码剖析 163
7.12 EagerThreadPool源码剖析 164
7.13 CachedThreadPool源码剖析 166
7.14 线程池的确定时机 168
7.15 如何基于扩展接口自定义线程池策略 168
7.16 小结 169
第8章 Dubbo如何实现泛化引用 170
8.1 服务消费端GenericImplFilter源码分析 170
8.2 服务提供端GenericFilter源码分析 172
8.3 小结 176
第9章 Dubbo并发控制 177
9.1 服务消费端并发控制 177
9.2 服务提供端并发控制 182
9.3 小结 185
第10章 Dubbo隐式参数传递 186
10.1 服务消费端AbstractClusterInvoker原理剖析 186
10.2 服务提供方ContextFilter原理剖析 188
10.3 小结 189
第11章 Dubbo全链路异步 190
11.1 服务消费端异步调用 190
11.1.1 2.7.0版本前的异步调用实现 191
11.1.2 2.7.0版本提供的异步调用实现 201
11.2 服务提供端异步执行 204
11.2.1 基于定义CompletableFuture签名的接口实现异步执行 205
11.2.2 使用AsyncContext实现异步执行 208
11.3 异步调用与执行引入的新问题 211
11.3.1 Filter链 211
11.3.2 上下文对象传递 216
11.4 小结 218
第12章 本地服务暴露与引用原理 219
12.1 本地服务暴露流程 219
12.2 本地服务引用启动流程 222
12.3 本地服务一次引用流程 224
12.4 小结 225
第13章 Dubbo协议与网络传输 226
13.1 Dubbo协议 226
13.2 服务消费方编码原理 229
13.3 服务发布方解码原理 233
13.4 小结 241
实践篇 244
第14章 Dubbo实践 244
14.1 Arthas的简介与安装 244
14.2 查看扩展接口适配器类的源码 245
14.3 查看服务提供端Wrapper类的源码 247
14.4 查询Dubbo启动后都有哪些Filter 250
14.5 Demo验证RoundRobin LoadBalance负载均衡原理 253
14.6 如何动态获取Dubbo服务提供方地址列表 256
14.6.1 场景概述 256
14.6.2 原理与实现 257
14.7 根据IP动态路由调用Dubbo服务 260
14.8 基于CompletableFuture和Netty模拟RPC同步与纯异步调用 264
14.8.1 协议帧定义 265
14.8.2 RpcServer的实现 265
14.8.3 RpeClient的实现 268
14.8.4 实例 273
14.9 小结 275