本文会参考 Dubbo 的整体设计思路,手写一个极简版 RPC 框架。
它不会像 Dubbo 那样把协议、注册中心、集群容错、SPI 扩展、线程模型都做得非常完整,但会把 RPC 最核心的一条链路跑通,并且补上一个生产中很重要的能力:熔断降级。
也就是说,本文最后实现出来的效果大概是这样的:
- 服务提供方通过
RpcServer暴露接口实现类 - 服务消费方通过
RpcClient拿到一个接口代理对象 - 调用本地接口方法时,底层自动转换成一次网络请求
- 注册中心负责保存服务名和服务地址的映射关系
- 客户端通过负载均衡选择一个 Provider
- 当远程调用持续失败时,熔断器打开,后续请求直接走降级逻辑


