Skip to content

RPC框架设计概要

以下为个人理解,欢迎一起探讨

(个人理解)RPC 就是把拦截到的方法参数,转成可以在网络中传输的二进制,并保证在服务提供方能正确地还原出语义,最终实现像调用本地一样地调用远程的目的。

RPC调用涉及到的环节

  1. socket
  2. 协议
  3. 寻址
  4. 序列化和反序列化
  5. 异常处理

可以参考Dubbo框架的调用过程:

RPC框架需要解决的问题

  1. 开发效率

框架的初衷即是为了开发效率。

  1. 通信效率

RPC调用环节中的通信是不可避免的。

  1. 数据传输

需要注意序列化与反序列化,还有就是协议决定的传输效率。

  1. 通用化

做到所有的组件是微服务化,且组件支持业务自定义的。

  1. 服务治理

涉及到服务发现、负载均衡、超时、重试、限流、熔断、分布式链路追踪等。

单机架构:

源码阅读推荐

  • GoNetRpc(https://github.com/golang/go/tree/master/src/net/rpc)
  • grpc(https://github.com/grpc/grpc)
  • rpcx(https://rpcx.io/)