# GeekDubbo3Tutorial **Repository Path**: mlc0202/GeekDubbo3Tutorial ## Basic Information - **Project Name**: GeekDubbo3Tutorial - **Description**: 极客时间dubbo课程案例代码 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 64 - **Created**: 2023-02-06 - **Last Updated**: 2026-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GeekDubbo3Tutorial #### (一)介绍 极客时间dubbo课程案例代码 #### (二)总体架构 ![](https://static001.geekbang.org/resource/image/3c/80/3ce4ae4685e533094598a4608aa6dd80.jpg?wh=1920x1136) #### (三)相关地址 1. [极客专栏地址:https://time.geekbang.org/column/intro/100312101](https://time.geekbang.org/column/intro/100312101) 2. [案例代码地址:https://gitee.com/ylimhhmily/GeekDubbo3Tutorial](https://gitee.com/ylimhhmily/GeekDubbo3Tutorial) #### (四)课程模块 ![](https://static001.geekbang.org/resource/image/a1/71/a197b81e91b19c8b134108373b329971.jpg) #### (五)模块导航 > 每个模块均有独立的 `README.md`,包含模块简介、主要功能、关键代码说明、架构图、运行方式和目录结构。 ##### 00. 公共接口模块 | 模块 | 说明 | |------|------| | [dubbo-00-facade](dubbo-00-facade/README.md) | 公共 RPC 接口定义(DemoFacade、UserQueryFacade 等) | | [dubbo-00-stream-facade](dubbo-00-stream-facade/README.md) | Triple Stream 流式通信接口定义 | ##### 02-03. 异步与上下文传递 | 模块 | 说明 | |------|------| | [dubbo-02-async-provider](dubbo-02-async-provider/README.md) | 异步 Provider 基础(RpcContext.startAsync) | | [dubbo-03-rpcctx-transfer](dubbo-03-rpcctx-transfer/README.md) | RPC 上下文隐式传递(自定义 Filter) | ##### 04. 三种配置方式 | 模块 | 说明 | |------|------| | [dubbo-04-annotation-boot-provider](dubbo-04-annotation-boot-provider/README.md) | 注解配置 Provider(@EnableDubbo + @DubboService) | | [dubbo-04-annotation-boot-consumer](dubbo-04-annotation-boot-consumer/README.md) | 注解配置 Consumer(@DubboReference) | | [dubbo-04-api-boot-provider](dubbo-04-api-boot-provider/README.md) | API 编程式配置 Provider(ServiceConfig.export) | | [dubbo-04-api-boot-consumer](dubbo-04-api-boot-consumer/README.md) | API 编程式配置 Consumer(ReferenceConfig.get) | | [dubbo-04-xml-boot-provider](dubbo-04-xml-boot-provider/README.md) | XML 配置 Provider(\) | | [dubbo-04-xml-boot-consumer](dubbo-04-xml-boot-consumer/README.md) | XML 配置 Consumer(\) | | [dubbo-04-generic-consumer](dubbo-04-generic-consumer/README.md) | 泛化调用 Consumer(GenericService.$invoke) | ##### 05. 异步与流式通信 | 模块 | 说明 | |------|------| | [dubbo-05-async-provider](dubbo-05-async-provider/README.md) | 异步 Provider(CompletableFuture) | | [dubbo-05-async-getfuture-consumer](dubbo-05-async-getfuture-consumer/README.md) | 异步调用(Future.get) | | [dubbo-05-async-getcompletablefuture-consumer](dubbo-05-async-getcompletablefuture-consumer/README.md) | 异步调用(CompletableFuture) | | [dubbo-05-async-setcallback-consumer](dubbo-05-async-setcallback-consumer/README.md) | 异步调用(ResponseCallback 回调) | | [dubbo-05-completable-future-sample](dubbo-05-completable-future-sample/README.md) | CompletableFuture 综合示例 | | [dubbo-05-monster-consumer](dubbo-05-monster-consumer/README.md) | 异步调用综合实战 | | [dubbo-05-stream-provider](dubbo-05-stream-provider/README.md) | Triple Stream Provider(Unary/Server Stream/Client Stream) | | [dubbo-05-stream-consumer](dubbo-05-stream-consumer/README.md) | Triple Stream Consumer(StreamObserver) | ##### 06-12. 高级特性 | 模块 | 说明 | |------|------| | [dubbo-06-event-consumer](dubbo-06-event-consumer/README.md) | 事件通知(oninvoke/onreturn/onthrow) | | [dubbo-07-validation-provider](dubbo-07-validation-provider/README.md) | 参数验证 Provider(JSR-303) | | [dubbo-07-validation-consumer](dubbo-07-validation-consumer/README.md) | 参数验证 Consumer(validation="jvalidation") | | [dubbo-08-cache-provider](dubbo-08-cache-provider/README.md) | 结果缓存 Provider | | [dubbo-08-cache-consumer](dubbo-08-cache-consumer/README.md) | 结果缓存 Consumer(cache="lru") | | [dubbo-09-limit-provider](dubbo-09-limit-provider/README.md) | 限流 Provider(自定义 Filter 令牌桶) | | [dubbo-09-limit-consumer](dubbo-09-limit-consumer/README.md) | 限流 Consumer | | [dubbo-10-auth-provider](dubbo-10-auth-provider/README.md) | 权限认证 Provider(自定义 Filter Token 验证) | | [dubbo-10-auth-consumer](dubbo-10-auth-consumer/README.md) | 权限认证 Consumer(隐式传参) | | [dubbo-11-loadcfg-provider](dubbo-11-loadcfg-provider/README.md) | 多配置文件加载 Provider | | [dubbo-11-loadcfg-consumer](dubbo-11-loadcfg-consumer/README.md) | 多配置文件加载 Consumer | | [dubbo-12-arch-provider](dubbo-12-arch-provider/README.md) | 架构演进 Provider(check=false, retries=-1) | | [dubbo-12-arch-consumer](dubbo-12-arch-consumer/README.md) | 架构演进 Consumer | ##### 14. SPI 机制 | 模块 | 说明 | |------|------| | [dubbo-14-jdk-spi](dubbo-14-jdk-spi/README.md) | JDK SPI 机制(ServiceLoader) | | [dubbo-14-dubbo-spi](dubbo-14-dubbo-spi/README.md) | Dubbo SPI 机制(ExtensionLoader) | ##### 15. Wrapper 与泛化调用 | 模块 | 说明 | |------|------| | [dubbo-15-dubbo-wrapper](dubbo-15-dubbo-wrapper/README.md) | Dubbo Wrapper 动态代理(Javassist 性能对比) | | [dubbo-15-generic-provider](dubbo-15-generic-provider/README.md) | 泛化调用 Provider | | [dubbo-15-generic-string-consumer](dubbo-15-generic-string-consumer/README.md) | 泛化调用 - String 模式 | | [dubbo-15-generic-json-consumer](dubbo-15-generic-json-consumer/README.md) | 泛化调用 - JSON 模式 | | [dubbo-15-generic-bean-consumer](dubbo-15-generic-bean-consumer/README.md) | 泛化调用 - Bean 模式 | | [dubbo-15-generic-byte-consumer](dubbo-15-generic-byte-consumer/README.md) | 泛化调用 - Byte 模式 | ##### 16-18. 编译器 / Adaptive / 注入 | 模块 | 说明 | |------|------| | [dubbo-16-dubbo-compiler](dubbo-16-dubbo-compiler/README.md) | 字节码生成(Javassist + ASM) | | [dubbo-17-dubbo-adaptive](dubbo-17-dubbo-adaptive/README.md) | @Adaptive 自适应扩展 | | [dubbo-18-dubbo-inject](dubbo-18-dubbo-inject/README.md) | 依赖注入与 Wrapper 装饰器(IOC/AOP) | ##### 19-22. 部署 / 订阅 / 调用 / 编解码 | 模块 | 说明 | |------|------| | [dubbo-19-dubbo-deploy-provider](dubbo-19-dubbo-deploy-provider/README.md) | 部署模式(register-mode=interface) | | [dubbo-20-subscribe-provider](dubbo-20-subscribe-provider/README.md) | 服务订阅 Provider(接口级注册) | | [dubbo-20-subscribe-consumer](dubbo-20-subscribe-consumer/README.md) | 服务订阅 Consumer(FORCE_INTERFACE) | | [dubbo-21-rpcinvoke-provider](dubbo-21-rpcinvoke-provider/README.md) | RPC 调用 Provider | | [dubbo-21-rpcinvoke-consumer](dubbo-21-rpcinvoke-consumer/README.md) | RPC 调用 Consumer(标准 + 泛化对比) | | [dubbo-22-codec-provider](dubbo-22-codec-provider/README.md) | 编解码 Provider | | [dubbo-22-codec-consumer](dubbo-22-codec-consumer/README.md) | 编解码 Consumer | ##### 23-27. Dubbo SPI 扩展实战 | 模块 | 扩展点 | 说明 | |------|--------|------| | [dubbo-23-cluster-ext-provider](dubbo-23-cluster-ext-provider/README.md) | — | Cluster 扩展 Provider | | [dubbo-23-cluster-ext-consumer](dubbo-23-cluster-ext-consumer/README.md) | Cluster | 自定义集群策略(容错转发) | | [dubbo-24-filter-ext-provider](dubbo-24-filter-ext-provider/README.md) | Filter | Provider 端 AES 解密 Filter | | [dubbo-24-filter-ext-consumer](dubbo-24-filter-ext-consumer/README.md) | Filter | Consumer 端 AES 加密 Filter | | [dubbo-25-registry-ext-provider](dubbo-25-registry-ext-provider/README.md) | RegistryFactory | 自定义注册中心(routeNo 路由) | | [dubbo-25-registry-ext-consumer](dubbo-25-registry-ext-consumer/README.md) | Cluster | Cluster 包装器(调试 Provider 列表) | | [dubbo-26-threadpool-ext-provider](dubbo-26-threadpool-ext-provider/README.md) | ThreadPool | 监控线程池(85% 高水位告警) | | [dubbo-26-threadpool-ext-consumer](dubbo-26-threadpool-ext-consumer/README.md) | — | 线程池扩展 Consumer | | [dubbo-27-protocol-ext-provider](dubbo-27-protocol-ext-provider/README.md) | Protocol | 灰度发布(override 禁用/上线) | | [dubbo-27-protocol-ext-consumer](dubbo-27-protocol-ext-consumer/README.md) | — | 协议扩展 Consumer | #### (六)完整目录 ![](https://static001.geekbang.org/resource/image/37/38/376c4a75e88cce249c05d0666da14038.jpg) #### (七)技术栈 | 组件 | 版本 | |------|------| | Java | 1.8 | | Spring Boot | 2.7.x | | Dubbo | 3.0.7 | | ZooKeeper | 3.x | | 注册中心 | zookeeper://127.0.0.1:2181 | #### (八)环境准备 1. **JDK 1.8+** 2. **Maven** — 用于编译公共接口模块 `dubbo-00-facade` 3. **ZooKeeper** — 本机需启动一个 ZooKeeper(默认端口 `2181`),作为所有模块的注册中心 4. **IDE** — IntelliJ IDEA 推荐 > 各模块的 `README.md` 运行方式里提到的「通用前置:ZooKeeper」均指本节的启动要求,不再单独复述。 ```bash # 1. 先编译安装公共接口模块(其它模块都依赖它) cd dubbo-00-facade mvn clean install -DskipTests # 2. 启动 ZooKeeper(二选一) # 方式 A:本地已安装 ZooKeeper,直接启动 zkServer start # 方式 B:用 Docker 一键拉起 # docker run -d --name zk -p 2181:2181 zookeeper:3.7 # 3. 先后启动 Provider、Consumer 模块的 Application.main() / spring-boot:run ``` > 说明:除 `dubbo-00-facade`(接口包,仅 install)、`dubbo-14-jdk-spi`(纯 JDK SPI,无需注册中心)外,其余模块运行前都需本机 ZooKeeper 已启动。