RPC
RPC(Remote Procedure Call)远程过程调用,让微服务间像调用本地方法一样通信。
核心组件
RPC框架 详细介绍了 REST vs RPC 的区别、gRPC 四种调用模式、OpenFeign vs Dubbo 对比、幂等性设计和序列化选型。RPC 链路上的多级缓存分流体系(CDN、反向代理、Redis 等)见 透明多级分流。
Dubbo 是 Java 生态最常用的 RPC 框架:Provider/Consumer/Registry 三角色 + 长连接调用,内置负载均衡(random/roundrobin/leastactive)与集群容错(failover/failfast/failsafe)——调用失败重试、多版本灰度、泛化调用等工程能力开箱即用。
DubboSPI 是 Dubbo 的核心扩展机制,通过 @SPI 和 @Adaptive 注解实现动态扩展,支持协议切换、序列化方式选择和负载均衡策略切换。
ZooKeeper 是 Apache 开源的分布式协调服务,提供配置维护、分布式同步、分布式锁等功能。在 Dubbo 中常作为注册中心使用。
技术选型
| 维度 | Dubbo | gRPC | OpenFeign |
|---|---|---|---|
| 协议 | TCP 自定义协议 | HTTP/2 + Protobuf | HTTP/REST |
| 序列化 | Hessian/Kryo | Protobuf | JSON |
| 性能 | 高 | 高 | 中 |
| 服务治理 | 内置 | 需自行实现 | 依赖 Spring Cloud |
| 适用场景 | Java 生态高吞吐 | 跨语言高性能 | 中小型微服务 |
选型建议
- Java 生态、高性能 → Dubbo
- 跨语言、高性能 → gRPC
- Spring Cloud 体系 → OpenFeign
- 外部 API → REST