RPC

RPC

RPC( Remote Procedure Call Protocol ) 远程过程调用协议。就是用其他服务器方法实现需要的功能,而具体连接细节将被封装不需要了解底层协议。

常用RPC框架

Dubbo、Motan、Dubbox、rpcx、Hadoop、gRPC

优缺点

优点:

  1. 提高系统可扩展性
  2. 提升系统可维护性和持续交付能力
  3. 实现系统高可用

缺点:

  1. 一个完善的RPC框架开发难度大,需要人员配置多
  2. RPC框架调用成功率受限于网络状况
  3. 调用远程方法初学难度大

结构

Client__________IDL___________Server

Proxy——————/ \——————Selector/Processor

MessageProtocol _____________Message Protocol

Tansfer/NetWork Protoco————Tansfer/NetWork Protoco

  • Client:RPC协议的调用方。就像上文所描述的那样,最理想的情况是RPC Client在完全不知道有RPC框架存在的情况下发起对远程服务的调用。
  • Server:在RPC规范中,这个Server并不是提供RPC服务器IP、端口监听的模块。而是远程服务方法的具体实现(在JAVA中就是RPC服务接口的具体实现)。
  • Stub/Proxy:RPC代理存在于客户端,因为要实现客户端对RPC框架“透明”调用,那么客户端不可能自行去管理消息格式、不可能自己去管理网络传输协议,也不可能自己去判断调用过程是否有异常。
  • Message Protocol:在上文我们已经说到,一次完整的client-server的交互肯定是携带某种两端都能识别的,共同约定的消息格式。RPC的消息管理层专门对网络传输所承载的消息信息进行编码和解码操作。
  • Transfer/Network Protocol传输协议层负责管理RPC框架所使用的网络协议、网络IO模型。例如Hessian的传输协议基于HTTP(应用层协议);而Thrift的传输协议基于TCP(传输层协议)。
  • Selector/Processor:存在于RPC服务端,用于服务器端某一个RPC接口的实现的特性(它并不知道自己是一个将要被RPC提供给第三方系统调用的服务)。
  • IDL:实际上IDL(接口定义语言)。需要跨语言的RPC框架有IDL部分的存在。这是需要一个各种语言能够理解的消息结构、接口定义的描述形式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值