内容简介
本书首先介绍Dubbo的简史、后续的规划和整体架构大图;接着介绍Dubbo环境配置,并基于Dubbo开发款应用程序;然后介绍Dubbo内置的常用注册中心的实现原理,Dubbo扩展点加载的原理和实现,Dubbo的启动、服务暴露、服务消费和优雅停机的机制,Dubbo中RPC协议细节、编解码和服务调用实现原理,Dubbo集群容错、路由和负载均衡机制,Dubbo的扩展点相关知识,Dubbo特的实现和原理,Dubbo常用的Filter的实现原理,Dubbo中新增etcd3注册中心的实战内容和Dubbo服务治台的相关知识;后介绍Dubbo未来生态和Dubbo Mesh的相关知识。
目录
目录第1章 Dubbo――高能RPC通信框架 11.1 应用架构过程 11.1.1 单体应用 11.1.2 分布式应用 31.2 Dubbo简介 61.2.1 Dubbo的发展历史 71.2.2 Dubbo是什么 71.2.3 Dubbo解决什么问题 91.2.4 谁在使用Dubbo 101.2.5 Dubbo后续的规划 111.3 Dubb体大图 111.3.1 Dubb体分层 111.3.2 Dubbo核心组件 121.3.3 Dubb体调用过程 131.4 小结 15第2章 开发款Dubbo应用程序 162.1 配置开发环境 162.1.1 下载并安装K 172.1.2 下载并安装IDE 172.1.3 下载并配置Maven 182.1.4 下载并配置ZooKeeper 182.1.5 使用IDEA调试Dubbo源码 182.2 基于XML配置实现 212.2.1 编写Echo服务器 212.2.2 编写Echo客户端 242.3 基于注解实现 262.3.1 基于注解编写Echo服务器 262.3.2 基于注解编写Echo客户端 282.4 基于API实现 302.4.1 基于API编写Echo服务器 302.4.2 基于API编写Echo客户端 312.5 构建并运行 322.6 小结 34第3章 Dubbo注册中心 353.1 注册中心概述 353.1.1 工作流程 363.1.2 数据结构 373.1.3 ZooKeeper原理概述 373.1.4 Redis原理概述 393.2 订阅/发布 403.2.1 ZooKeeper的实现 403.2.2 Redis的实现 443.3 缓存机制 483.3.1 缓存的加载 493.3.2 缓存的保存与更新 503.4 重试机制 503.5 设计模式 513.5.1 模板模式 513.5.2 工厂模式 523.6 小结 54第4章 Dubbo扩展点加载机制 554.1 加载机制概述 554.1.1 Java SPI 564.1.2 扩展点加载机制的 574.1.3 扩展点的配置规范 594.1.4 扩展点的分类与缓存 604.1.5 扩展点的特 614.2 扩展点注解 624.2.1 扩展点注解:@SPI 624.2.2 扩展点自适应注解:@Adaptive 634.2.3 扩展点自动激活注解:@Activate 654.3 ExtensionLoader的工作原理 664.3.1 工作流程 664.3.2 getExtension的实现原理 674.3.3 getAdaptiveExtension的实现原理 704.3.4 getActivateExtension的实现原理 734.3.5 ExtensionFactory的实现原理 734.4 扩展点动态编译的实现 764.4.1体结构 774.4.2 Javassist动态代码编译 784.4.3 K动态代码编译 794.5 小结 80第5章 Dubbo启停原理解析 815.1 配置解析 815.1.1 基于schema设计解析 825.1.2 基于XML配置原理解析 855.1.3 基于注解配置原理解析 915.2 服务暴露的实现原理 975.2.1 配置承载初始化 975.2.2 远程服务的暴露机制 975.2.3 本地服务的暴露机制 1055.3 服务消费的实现原理 1065.3.1 单注册中心消费原理 1065.3.2 多注册中心消费原理 1135.3.3 直连服务消费原理 1145.4 优雅停机原理解析 1155.5 小结 116第6章 Dubbo远程调用 1176.1 Dubbo调用介绍 1176.2 Dubbo协议详解 1196.3 编解码器原理 1226.3.1 Dubbo协议编码器 1236.3.2 Dubbo协议解码器 1286.4 Tel调用原理 1366.4.1 Tel指令解析原理 1366.4.2 Tel实现健康监测 1406.5 ChannelHandler 1416.5.1 核心Handler和线程模型 1416.5.2 Dubbo请求响应Handler 1456.5.3 Dubbo心跳Handler 1486.6 小结 150第7章 Dubbo集群容错 1517.1 Cluster层概述 1517.2 容错机制的实现 1537.2.1 容错机制概述 1537.2.2 Cluster接口关系 1557.2.3 Failover策略 1577.2.4 Failfast策略 1587.2.5 Failsafe策略 1587.2.6 Failback策略 1597.2.7 Available策略 1607.2.8 Broadcast策略 1607.2.9 Fo策略 1617.3 Directory的实现 1627.3.1体实现 1627.3.2 RegistryDirectory的实现 1637.4 路由的实现 1667.4.1 路由体结构 1667.4.2 条件路由的参数规则 1677.4.3 条件路由的实现 1687.4.4 文件路由的实现 1697.4.5 脚本路由的实现 1707.5 负载均衡的实现 1717.5.1装后的负载均衡 1717.5.2 负载均衡体结构 1737.5.3 Random负载均衡 1757.5.4 RoundRobin负载均衡 1767.5.5 LeastActive负载均衡 1787.5.6 一致Hash负载均衡 1797.6 Merger的实现 1817.6.1体结构 1817.6.2 MergeableClusterInvoker机制 1837.7 Mock 1857.7.1 Mock常见的使用方式 1857.7.2 Mock体结构 1867.7.3 Mock的实现原理 1877.8 小结 189第8章 Dubbo扩展点 1908.1 Dubbo核心扩展点概述 1908.1.1 扩展点的背景 1918.1.2 扩展点整体架构 1918.2 RPC层扩展点 1928.2.1 Proxy层扩展点 1928.2.2 Registry层扩展点 1948.2.3 Cluster层扩展点 1958.3 Remote层扩展点 1988.3.1 Protocol层扩展点 1998.3.2 Exchange层扩展点 2028.3.3 Transport层扩展点 2038.3.4 Serialize层扩展点 2068.4 其他扩展点 207第9章 Dubbo特 2109.1 Dubbo特概述 2109.2 服务分组和版本 2119.3 参数回调 2149.4 隐式参数 2179.5 异步调用 2189.6 泛化调用 2199.7 上下文信息 2209.8 Tel操作 2219.9 Mock调用 2249.10 结果缓存 2269.11 小结 226第10章 Dubbo过滤器 22710.1 Dubbo过滤器概述 22710.1.1 过滤器的使用 22810.1.2 过滤器体结构 22810.2 过滤器链初始化的实现原理 23110.3 服务提供者过滤器的实现原理 23310.3.1 AccessLogFilter的实现原理 23310.3.2 ExecuteLimitFilter的实现原理 23410.3.3 ClassLoaderFilter的实现原理 23510.3.4 ContextFilter的实现原理 23710.3.5 ExceptionFilter的实现原理 23710.3.6 TimeoutFilter的实现原理 23810.3.7 TokenFilter的实现原理 23810.3.8 TpsLimitFilter的实现原理 23910.4 消费者过滤器的实现原理 24010.4.1 ActiveLimitFilter的实现原理 24010.4.2 ConsumerContextFilter的实现原理 24210.4.3 DeprecatedFilter的实现原理 24210.4.4 FutureFilter的实现原理 24310.5 小结 243第11章 Dubbo注册中心扩展实践 24511.1 etcd背景介绍 24511.2 etcd数据结构设计 24611.3 构建可运行的注册中心 24811.3.1 扩展Transporter实现 24811.3.2 扩展RegistryFactory实现 24911.3.3 新增JEtcdClient实现 25011.3.4 扩展FailbackRegistry实现 26011.3.5 编写单元测试 26311.4 搭建etcd集群并在Dubbo中运行 26311.4.1 单机启动etcd 26411.4.2 集群启动etcd 26511.5 小结 266第12章 Dubbo服务治台 26712.1 服务治体结构 26712.2 服务治台的实现原理 26912.3 小结 273第13章 Dubbo未来展望 27413.1 Dubbo未来生态 27413.1.1 开源现状 27413.1.2 后续发展 27513.2 云原生 28113.2.1 面临的挑战 28113.2.2 Service Mesh简介 28313.2.3 Dubbo Mesh 28413.3 小结 285




