[toc]
rpc框架设计
rpc 原理
调用过程涉及的细节
-
socket通信
-
协议
tcp、udp、http -
ip寻址过程
- 通过域名寻找所有的ips --> 服务发现
- 在ips中找到一个ip --> 负载均衡
-
序列化与反序列化
性能排序 gogoprotobuf > msgpack > flatbuffers > thrift > protobuf > json > xml -
异常处理
-
服务治理
服务发现、负载均衡、限流、熔断、超时、重试、服务追踪
rpc框架解决的问题
- 开发效率
- 通信效率
- 数据传输
- 通用化
所有的组件都是可插拔的,所有的组件都是支持业务自定义的。 - 服务治理
框架概述
模块
- client 模块:支持客户端发包
- server 模块:支持服务端收包
- transport 模块:提供底层的通信能力
- codec 模块:自定义协议的解析、序列化和反序列化
- pool 模块:池技术,支持连接池、对象池等实现,提供客户端连接的复用、对象复用等能力
- log 模块:提供日志能力
- selector 模块:提供寻址能力,支持服务发现(resolver)、负载均衡 (loadbalance)等默认实现
- stream 模块:提供客户端和服务端上下文数据透传能力,后续还会支持流式传输
- protocol 模块:提供自定义私有协议能力
- plugin 模块:提供第三方插件化支持能力
- interceptor 模块:提供框架拦截器能力
- metadata 模块:提供客户端和服务端参数传递能力
网友评论