主题
RPC 技术栈总览(Dubbo + Zookeeper)
一句话定位:RPC(远程过程调用)让「调远程服务」像「调本地方法」一样——Dubbo 是高性能 Java RPC 框架,Zookeeper 是分布式协调服务(常作注册中心);三者关系:Provider 把服务注册到 Zookeeper,Consumer 从 Zookeeper 订阅地址,再用 Dubbo 的负载均衡选一台实例发起调用。
组件栈地图
| 组件 | 职责 |
|---|---|
| Dubbo | RPC 框架:服务调用、集群容错、负载均衡、配置 |
| Zookeeper | 协调服务:注册中心、配置中心、分布式锁、选举 |
| Monitor | 统计服务调用次数与耗时 |
Dubbo 架构的调用关系
0. 容器启动,加载 Provider
1. Provider 向 Register 注册服务
2. Consumer 向 Register 订阅服务
3. Register 返回 Provider 地址列表(有变更推送)
4. Consumer 基于负载均衡选一台 Provider 调用(失败换一台)
5. 双方统计调用次数/耗时 → 上报 MonitorDubbo vs Spring Cloud
| 维度 | Dubbo | Spring Cloud |
|---|---|---|
| 定位 | 高性能 RPC 框架 | 微服务全家桶 |
| 通信 | 默认 Dubbo 协议(长连接、NIO) | HTTP/REST |
| 注册中心 | Zookeeper/Nacos | Eureka/Nacos |
| 生态 | 更聚焦服务调用 | 更全面(网关/配置/熔断) |
不变量(必须成立的约束)
- RPC 是「长连接」通信(Provider/Consumer/Register 之间),区别于 HTTP 短连接。
- Register 宕机不影响已运行的调用——Consumer 本地缓存了地址列表。
- 服务调用链固定:
Invoker(实例) → Directory(集合) → Router(路由) → LoadBalance(负载均衡)。
常见误解
- 以为 RPC 和 HTTP 一样 → RPC 是长连接 + 自定义协议,性能更高,但跨语言/调试不如 HTTP 通用。
- 以为 Zookeeper 只能当注册中心 → 它还是配置中心、分布式锁、选举、队列的通用协调服务。
关联
- Dubbo:[概念卡片:Dubbo RPC框架](./概念卡片:Dubbo RPC框架)
- Zookeeper:概念卡片:Zookeeper协调服务
- 一致性:概念卡片:分布式一致性理论
- 微服务总览:微服务技术栈总览