Repository navigation
Architecture
alanxtl edited this page Sep 20, 2026
·
1 revision
理解 Dubbo-go 时,可以先把业务接口、调用治理、协议传输和服务发现分开,再沿一次调用串起来。下面是阅读源码与文档的概念顺序,不是所有协议实现都逐层执行的精确时序图。
业务代码 / 生成的客户端
↓
client → 调用上下文、Filter
↓
Directory / Router → 候选实例
↓
Cluster / LoadBalance → 选择实例、处理失败
↓
Protocol / 序列化 / 网络传输
↓
server → Filter → 业务实现
Registry + Metadata 为实例列表与服务描述提供数据
官网的 架构设计、协议层、注册中心 解释了这些模块。部分源码文章仍沿用历史包结构,阅读当前代码时应结合 配置迁移。
| 层面 | 需要理解的约定 | 继续阅读 |
|---|---|---|
| 接口定义 | protobuf package、go_package、服务名与方法名的区别 | Triple 生成器 |
| RPC 调用 | unary/streaming、错误、attachments、超时与重试 | 功能专题 |
| 服务发现 | 接口级 URL 与应用实例、服务映射、metadata revision | 应用与接口 |
| 治理 | Filter、路由、负载均衡和 Cluster 策略各自处理什么 | 治理与运维 |
| 扩展 | 扩展接口、注册名与装配;不要直接修改生成文件 | AOP 与扩展 |
先明确逻辑应在 client 端、server 端还是两端执行,再核对扩展注册名及启用方式。Filter 适合调用链上的横切行为,但超时、重试和业务错误之间的语义仍须保持清楚。仓库 Filter 文档 比早期博客更接近本轮采集的 main;旧文保留供比较设计演进。
应用级服务发现手册 是配置入口。metadata 讨论 和 设计审查报告 记录了设计背景、兼容问题和审查意见,不作为最终实现规范。已经发布的变更另查 3.3.2 与 CHANGELOG。
V1.0 分层设计、早期路线图、TCP/Hessian 任务 和原始架构图片/PPT 均保留在 历史档案。它们描述的是当时的接口和目标,不用于判断当前模块是否已经实现。