RPC框架设计概要
目录
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/)