Dubbo 的 RPC 调用过程?

Dubbo 面试题发布于

一、代理层

Consumer 调用接口方法,实际调用的是代理对象(JDK 动态代理或 Javassist)。

二、路由层

  • Cluster:集群容错,处理调用失败。
  • Directory:管理 Provider 列表。
  • Router:根据路由规则过滤 Provider。
  • LoadBalance:从 Provider 中选一个。

三、协议层

  • Filter 链:监控、限流、日志等。
  • Protocol:把调用转为特定协议(dubbo/rest 等)。

四、传输层

  • Client/Server:基于 Netty 通信。
  • Codec:序列化/反序列化(Hessian2、JSON、Protobuf 等)。

五、服务端

  • Handler 接收请求。
  • 反射调用目标方法。
  • 返回结果。

六、全链路

Consumer 代理 → Cluster → Directory/Router/LoadBalance → Filter → Protocol → Transport → Provider Filter → Invoker → 实现类。