RPC框架设计概要¶
以下为个人理解,欢迎一起探讨
(个人理解)RPC 就是把拦截到的方法参数,转成可以在网络中传输的二进制,并保证在服务提供方能正确地还原出语义,最终实现像调用本地一样地调用远程的目的。
RPC调用涉及到的环节¶
- socket
- 协议
- 寻址
- 序列化和反序列化
- 异常处理
可以参考Dubbo框架的调用过程:
RPC框架需要解决的问题¶
- 开发效率
框架的初衷即是为了开发效率。
- 通信效率
RPC调用环节中的通信是不可避免的。
- 数据传输
需要注意序列化与反序列化,还有就是协议决定的传输效率。
- 通用化
做到所有的组件是微服务化,且组件支持业务自定义的。
- 服务治理
涉及到服务发现、负载均衡、超时、重试、限流、熔断、分布式链路追踪等。
单机架构:
源码阅读推荐¶
- GoNetRpc(https://github.com/golang/go/tree/master/src/net/rpc)
- grpc(https://github.com/grpc/grpc)
- rpcx(https://rpcx.io/)

