首页 > 其他 > 详细

分布式RPC框架

时间:2021-03-29 11:54:01      阅读:28      评论:0      收藏:0      [点我收藏+]

一、RPC框架概述

 1.RPC的定义

 RPC(Remote Procedure Call,远程过程调用)是一种进程间的通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式地编码远程调用的细节,即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。目前,主流的平台都支持各种远程调用技术,以满足分布式系统架构中不同系统之间的远程通信和相互调用。

 2、RPC核心组件

完整的RPC框架主要包含4个核心的组件:Client、Server、Client Stub以及Server Stub,具体如图3-1所示。

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

技术分享图片

  3、RPC调用过程

 技术分享图片

(1)客户端(Client)以本地调用方式调用服务(依赖服务接口,以接口的方式调用)。
(2)客户端存根(Client Stub)接收到调用请求后,负责将方法、参数等组装成能够进行网络传输的消息体(将消息体对象序列化为二进制)。
(3)客户端通过Socket将消息发送到服务端。
(4)服务端存根(Server Stub)收到消息后对消息进行解码(将消息对象反序列化)。
(5)服务端存根(Server Stub)根据解码结果调用本地的服务(利用反射原理)。
(6)本地服务执行并将结果返回给服务端存根(Server Stub)。
(7)服务端存根(Server Stub)将返回结果打包成消息(将结果消息对象序列化)。
(8)服务端(Server)通过Socket将消息发送到客户端。
(9)客户端存根(Client Stub)接收到结果消息,并进行解码(将结果消息反序列化)。
(10)客户端(Client)得到最终结果。

无论是哪种类型的数据,最终都需要转换成二进制流在网络上进行传输,数据的发送方需要将对象转换为二进制流,而数据的接收方则需要把二进制流再恢复为对象。RPC的目标是把(2)、(3)、(4)、(7)、(8)、(9)这些步骤都封装起来,具体如图3-3所示。

技术分享图片

分布式RPC框架

原文:https://www.cnblogs.com/callbin/p/14591126.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!