RPC

概念

RPC(Remote Procedure Call)远程过程调用-允许像调用本地服务一样调用远程服务

目的

在几个进程内(应用分布在不同的机器上),无法共用内存空间,或者在一台机器内通过本地调用无法完成相关的需求,比如不同的系统之间的通讯,甚至不同组织之间的通讯;可以用来解决单个服务器性能问题,横向拓展应用性能,即分布式

解决的问题

两个应用不在同一服务器,应用A调用应用B的API不能通过本地过程调用的方式?

实现原理

通过将要调用的API给的全局标示,将API放在一个表中。调用方调用服务时,通过查表将其API的标示得到,传给服务方标示和必要的参数;服务方得到标示,通过查找中间件得到具体的API,用参数调用该API,得到结果后将结果传给调用方。

  • 建立通讯
  • 服务寻址
  • 网络传输
  • 服务调用

RPC架构四个核心组件

  • 客户端(Client):服务的调用方
  • 客户端存根(Cilent Stub):存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方
  • 服务端存根(Server Stub):接收客户端发送过来的消息,将消息解包,并调用本地的方法
    • 服务端(Server):服务提供者

RPC过程

1、服务消费者(Client 客户端)通过本地调用的方式调用服务。
2、客户端存根(Client Stub)接收到调用请求后负责将方法、入参等信息序列化(组装)成能够进行网络传输的消息体。
3、客户端存根(Client Stub)找到远程的服务地址,并且将消息通过网络发送给服务端。
4、服务端存根(Server Stub)收到消息后进行解码(反序列化操作)。
5、服务端存根(Server Stub)根据解码结果调用本地的服务进行相关处理
6、服务端(Server)本地服务业务处理。
7、处理结果返回给服务端存根(Server Stub)。
8、服务端存根(Server Stub)序列化结果。
9、服务端存根(Server Stub)将结果通过网络发送至消费方。
10、客户端存根(Client Stub)接收到消息,并进行解码(反序列化)。
11、服务消费方得到最终结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值