????????RPC(Remote Procedure Call,远程过程调用)是一种编程技术,它允许在分布式系统中的一个程序像调用本地函数一样调用另一个程序(位于不同的机器或进程中)的函数或方法。RPC的主要目标是隐藏网络通信的复杂性,为开发者提供一种透明的方式来访问远程服务。
????????在RPC中,当客户端调用一个远程过程时,以下步骤通常会发生:
调用本地 stub 函数:客户端调用一个本地的代理函数(stub),这个函数封装了对远程服务的调用。
打包参数:stub 函数将调用的参数和相关信息(如方法名、返回地址等)打包成一个请求消息。
发送请求:stub 函数通过网络将请求消息发送到远程服务器。
接收请求:远程服务器接收到请求后,解包消息并调用相应的服务端存根(server stub)函数。
执行远程过程:服务端存根函数调用实际的服务方法,并将结果返回给服务端存根。
打包响应:服务端存根将返回结果和相关元数据打包成一个响应消息。
发送响应:服务端通过网络将响应消息发送回客户端。
接收响应:客户端接收到响应后,由stub函数解包消息并返回结果给客户端程序。
处理结果:客户端程序使用返回的结果进行后续的操作。
????????RPC框架通常提供了多种功能,如序列化/反序列化数据、处理网络错误、支持多种传输协议(如TCP、HTTP等)、负载均衡、容错、认证和授权等。常见的RPC框架包括gRPC、Apache Thrift、Dubbo、gRPC-Web、OpenFeign等。这些框架使得开发分布式系统和服务间通信变得更加简单和高效。
????????RPC(远程过程调用)是一种通信协议,用于在分布式系统中的不同计算节点之间进行通信和调用远程服务。它允许一个计算节点(客户端)通过网络请求另一个计算节点(服务器)上的方法或过程,并获取结果。
????????下面是简化的RPC工作原理:
客户端调用:客户端应用程序通过本地调用方式调用远程服务。这看起来就像调用本地方法一样,但实际上是调用远程服务器上的方法。
参数封装:客户端将方法调用的参数封装成消息。消息中包含了要调用的方法名、参数值等信息。
传输:客户端将封装好的消息通过网络传输给远程服务器。
服务接收:远程服务器接收到消息后,解析消息,提取方法名和参数值。
方法执行:服务器根据接收到的方法名,在本地执行对应的方法,并得到结果。
结果封装:服务器将方法执行的结果封装成消息。
传输:服务器将封装好的结果消息通过网络传输给客户端。
客户端接收:客户端接收到结果消息后,解析消息,提取方法执行的结果。
返回结果:客户端将结果返回给调用方,完成远程方法调用。
????????需要注意的是,RPC通常涉及到序列化和反序列化的过程,即将调用参数和返回结果转换为二进制格式进行传输。此外,还需要一种协议来定义消息的格式、编解码规则和通信约定,常见的RPC框架有 gRPC、Apache Thrift、Dubbo等。
????????总结来说,RPC通过封装方法调用的参数和结果,通过网络传输实现不同计算节点之间的远程调用和通信,使得分布式系统中的不同节点能够方便地进行协作和协同工作。
?