这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
RPC
基本概念
RPC(Remote Procedure Call)叫作远程过程调用,它是利用网络从远程计算机上请求服务,可以理解为把程序的一部分放在其他远程计算机上执行。通过网络通信将调用请求发送至远程计算机后,利用远程计算机的系统资源执行这部分程序,最终返回远程计算机上的执行结果。
核心组成部分
PRC主要设计五个部分:
user(服务调用方) user-stub(调用方的本地存根) RPCRuntime(RPC通信者) server-stub(服务端的本地存根) server(服务端) 服务调用方、调用方的本地存根及其一个RPC通信包的实例存在于调用者的机器上;而服务提供方、服务提供方的存根及另一个RPC通信包的实例存在于被调用的机器上。
服务调用方(Consumer)
服务调用方也叫服务消费者,它的职责之一是提供需要调用的接口的全限定名和方法,调用方法的参数给调用端的本地存根;职责之二是从调用方的本地存根中接收执行结果。
服务提供方(Provider)
服务提供方就是服务端,它的职责就是提供服务,执行接口实现的方法逻辑,也就是为服务提供方的本地存根提供方法的具体实现。
本地存根(stub)
Stub的职责就是进行类型和参数转化。
本地存根分为服务调用方的本地存根和服务提供方的本地存根。
从服务消费方的角度来看,Stub隐藏了远程调用的实现细节。
RPC通信者(RPCRuntime)
RPCRuntime负责数据包的重传,数据包的确认、数据包路由和加密等。
在Consumer端和Provider端都会有一个RPCRuntime实例,负责双方之间的通信,可靠地将存根船渡地数据包传输到另一端。
RPC调用过程
RPC调用过程可以分为四个阶段,分别是服务暴露过程、服务发现过程、服务引用过程和方法调用过程
服务暴露的过程
服务暴露又称服务导出,服务导出的叫法相对于服务暴露更加形象一些。服务暴露发生在Provider端。
根据服务是否暴露到远程可以分为两种,一种是服务只暴露到本地,另一种则是暴露到远程。
服务发现的过程
服务发现的方式有两种,分别是直连式和注册中心式,对应的是Provider端的两种服务暴露方式。
服务引用的过程
服务引用的过程发生在服务发现之后,当Consumer端通过服务发现获取所有服务提供者的地址后,通过负载均衡策略选择其中一个服务提供著的节点进行服务引用。服务引用的过程就是与某一个服务节点建立连接,以及在Consumer端创建接口的代理的过程其中建立连接也就是两端的RPCRuntime 建立连接的过程。
方法调用的过程
服务引用完成后,Consumer端与Provider端已经建立了连接,可以进行方法的调用。
本文参考CSDN博主「牧心.」的原创文章,原文链接:blog.csdn.net/Aibiabcheng…