作品简介

在单体应用时,不同业务模块部署在同一个JVM进程内,这时通过本地调用就可以解决不同业务模块之间的相互引用;但在多体应用时,不同业务模块大多部署到不同的机器上,这时一个高效、稳定的RPC框架就显得特别重要了。Apache Dubbo作为阿里巴巴开源的分布式RPC框架,在进入Apache孵化器项目后现已毕业,相信在开源社区的不断贡献下,它会成为RPC框架中的佼佼者。

本书是对Apache Dubbo的使用以及内核原理的深度剖析,分为三部分:第一部分为基础篇,首先从整体上讲解使用Dubbo搭建的系统由哪些模块组成,各模块相互之间的调用关系是怎么样的,然后基于本书的Demo讲解如何使用Dubbo;第二部分为高级篇,主要讲解Dubbo框架内部实现原理,包含支撑Dubbo框架的适配器类原理、动态编译原理、增强SPI原理、消费端的泛化调用实现原理、消费端异步调用与服务提供端的异步执行、Dubbo框架的线程模型、消费端负载均衡策略、消费端集群容错策略、并发控制原理、Dubbo网络协议等;第三部分为实践篇,主要探讨如何使用Arthas和一些Demo为研究Dubbo框架原理提供方便,并且讲解如何基于CompletableFuture和Netty模拟RPC同步与纯异步调用。

本书将原理与实践相结合,由浅入深、通俗易懂地讲解了Dubbo框架的使用及内核原理实现,适合Java中高级研发工程师,以及对RPC框架技术感兴趣,希望探究RPC框架内部实现原理的人员阅读。

翟陆续(加多),目前就职于淘宝技术,花名加多。热衷并发、异步、反应式编程,熟悉常用开源框架实现原理,微信公众号:技术原始积累。

作品目录

  • 前言
  • 基础篇
  • 第1章 Dubbo基础
  • 1.1 初识Dubbo
  • 1.2 本书Demo详解
  • 1.3 小结
  • 高级篇
  • 第2章 Dubbo框架内核原理剖析
  • 2.1 Dubbo分层架构概述
  • 2.2 Dubbo远程调用细节
  • 2.3 Dubbo的适配器原理
  • 2.4 Dubbo的动态编译原理
  • 2.5 Dubbo增强SPI
  • 2.6 Dubbo使用JavaAssist减少反射调用开销
  • 2.7 小结
  • 第3章 远程服务发布与引用流程剖析
  • 3.1 Dubbo服务发布端启动流程剖析
  • 3.2 Dubbo服务提供方如何处理请求
  • 3.3 Dubbo服务消费方启动流程剖析
  • 3.4 Dubbo服务消费端一次远程调用过程
  • 3.5 小结
  • 第4章 Directory目录与Router路由服务
  • 4.1 Directory目录
  • 4.2 RegistryDirectory的创建
  • 4.3 RegistryDirectory中invoker列表的更新
  • 4.4 小结
  • 第5章 Dubbo消费端服务mock与服务降级策略原理
  • 5.1 服务降级原理
  • 5.2 本地服务mock原理
  • 5.3 小结
  • 第6章 Dubbo集群容错与负载均衡策略
  • 6.1 Dubbo集群容错策略概述
  • 6.2 Failfast Cluster策略源码分析
  • 6.3 Failsafe Cluster策略源码分析
  • 6.4 Failover Cluster策略源码分析
  • 6.5 Failback Cluster策略源码分析
  • 6.6 Forking Cluster策略源码分析
  • 6.7 Broadcast Cluster策略源码分析
  • 6.8 如何基于扩展接口自定义集群容错策略
  • 6.9 Dubbo负载均衡策略概述
  • 6.10 Random LoadBalance策略源码分析
  • 6.11 RoundRobin LoadBalance策略源码分析
  • 6.12 LeastActive LoadBalance策略源码分析
  • 6.13 ConsistentHash LoadBalance策略源码分析
  • 6.14 如何基于扩展接口自定义负载均衡策略
  • 6.15 小结
  • 第7章 Dubbo线程模型与线程池策略
  • 7.1 Dubbo的线程模型概述
  • 7.2 AllDispatcher源码剖析
  • 7.3 DirectDispatcher源码剖析
  • 7.4 MessageOnlyDispatcher源码剖析
  • 7.5 ExecutionDispatcher源码剖析
  • 7.6 ConnectionOrderedDispatcher源码剖析
  • 7.7 线程模型的确定时机
  • 7.8 如何基于扩展接口自定义线程模型
  • 7.9 Dubbo的线程池策略
  • 7.10 FixedThreadPool源码剖析
  • 7.11 LimitedThreadPool源码剖析
  • 7.12 EagerThreadPool源码剖析
  • 7.13 CachedThreadPool源码剖析
  • 7.14 线程池的确定时机
  • 7.15 如何基于扩展接口自定义线程池策略
  • 7.16 小结
  • 第8章 Dubbo如何实现泛化引用
  • 8.1 服务消费端GenericImplFilter源码分析
  • 8.2 服务提供端GenericFilter源码分析
  • 8.3 小结
  • 第9章 Dubbo并发控制
  • 9.1 服务消费端并发控制
  • 9.2 服务提供端并发控制
  • 9.3 小结
  • 第10章 Dubbo隐式参数传递
  • 10.1 服务消费端AbstractClusterInvoker原理剖析
  • 10.2 服务提供方ContextFilter原理剖析
  • 10.3 小结
  • 第11章 Dubbo全链路异步
  • 11.1 服务消费端异步调用
  • 11.2 服务提供端异步执行
  • 11.3 异步调用与执行引入的新问题
  • 11.4 小结
  • 第12章 本地服务暴露与引用原理
  • 12.1 本地服务暴露流程
  • 12.2 本地服务引用启动流程
  • 12.3 本地服务一次引用流程
  • 12.4 小结
  • 第13章 Dubbo协议与网络传输
  • 13.1 Dubbo协议
  • 13.2 服务消费方编码原理
  • 13.3 服务发布方解码原理
  • 13.4 小结
  • 实践篇
  • 第14章 Dubbo实践
  • 14.1 Arthas的简介与安装
  • 14.2 查看扩展接口适配器类的源码
  • 14.3 查看服务提供端Wrapper类的源码
  • 14.4 查询Dubbo启动后都有哪些Filter
  • 14.5 Demo验证RoundRobin LoadBalance负载均衡原理
  • 14.6 如何动态获取Dubbo服务提供方地址列表
  • 14.7 根据IP动态路由调用Dubbo服务
  • 14.8 基于CompletableFuture和Netty模拟RPC同步与纯异步调用
  • 14.9 小结
展开全部