边学边记:RPC框架调用过程

网络 通信技术
RPC是远程过程调用(Remote Procedure Call)的缩写形式。它是一种通过网络请求远程计算机程序上的服务,而不需要了解底层网络技术的协议,代码中不用做额外的编程处理,就像直接调用本地方法一样。

RPC简介

RPC是远程过程调用(Remote Procedure Call)的缩写形式。它是一种通过网络请求远程计算机程序上的服务,而不需要了解底层网络技术的协议,代码中不用做额外的编程处理,就像直接调用本地方法一样。

 

[[376896]]

RPC框架角色

在RPC框架中有三个重要的角色:RPC Server、RPC Client和Registry,如下图所示:

 

边学边记:RPC框架调用过程
  • RPC Server:即Provider,暴露服务的服务提供者
  • RPC Client:即Consumer,调用远程服务的服务消费者
  • Registry:服务注册与发现的服务注册中心

RPC核心组件

RPC架构包含五个核心组件,Client,Client Stub,Server,Server Stub,NetWork Service,Stub可以理解为存根。

 

边学边记:RPC框架调用过程
  • Client:客户端,服务的调用方
  • Client Stub:客户端存根,存放服务端的地址消息,负责将客户端的请求信息组装成网络消息,通过网络远程发送给服务提供方
  • Server:服务端,真正的服务提供方
  • Server Stub:服务端存根,接收客户端发来的消息,并将消息解压后调用本地服务方法
  • NetWork Service:底层网络传输,可以是TCP或HTTP

RPC调用过程

RPC框架的整体调用过程,如下图所示:

 

边学边记:RPC框架调用过程
  1. 客户端Client通过以本地调用的方式,调用远程接口服务;
  2. 客户端存根Client Stub接收到调用后,将调用信息对象进行序列化,组装成网络传输的二进制消息体;
  3. 客户端Client通过Sockets将消息发送到远程服务端;
  4. 服务端存根Server Stub收到消息后,对网络信息对象进行反序列化解码;
  5. 服务端存根Server Stub根据解码结果,调用服务端本地的接口服务;
  6. 本地接口服务执行,并将处理结果返回给服务端存根Server Stub;
  7. 服务端存根Server Stub将返回结果对象进行序列化,组装成消息体;
  8. 服务端Server再通过Sockets将消息发送到客户端;
  9. 客户端存根Client Stub收到结果消息后,对网络信息对象进行序列化解码;
  10. 客户端Client拿到最终接口处理结果。

RPC构架的目标是就是把2、3、4、7、8、9步骤都封装起来,让调用方感觉像是调用本地方法一样。

 

边学边记:RPC框架调用过程

开源的RPC框架

  • Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言
  • Spring Cloud:相比Dubbo等RPC框架, Spring Cloud提供全套的分布式系统解决方案
  • gRPC:是Google开发的高性能、通用的开源RPC框架,支持多种语言。

 

责任编辑:未丽燕 来源: 今日头条
相关推荐

2020-12-02 10:20:33

Docker命令Linux

2009-12-18 11:15:17

ADSL宽带共享上网

2022-06-27 15:42:23

区块链

2020-09-14 10:34:40

Dubbo

2012-05-01 20:26:01

iPhone

2010-09-08 09:11:32

CSSmargin

2016-10-10 12:56:59

锐捷

2021-08-26 11:42:15

游戏编程语言

2010-01-19 09:48:22

VB.NET调用过程

2020-11-11 14:42:42

PythonBug命令

2021-03-15 09:57:57

机器人人工智能系统

2019-06-10 15:58:30

数据分析流量采集

2018-11-26 12:34:48

2019-01-18 12:18:31

编程语言Python

2021-01-26 15:40:46

工具Vim开发

2018-11-04 08:17:41

2018-12-04 11:48:45

微信支付病毒勒索

2009-05-12 10:24:16

华为任正非灰色管理

2021-11-04 17:48:44

编程游戏代码

2021-12-08 11:50:07

Python游戏网站编程语言
点赞
收藏

51CTO技术栈公众号