rpc框架设计

[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 模块:提供客户端和服务端参数传递能力

整体架构

你可能感兴趣的:(rpc框架设计)