Rpc一些基础知识

142 阅读3分钟

1. RPC 是什么?

RPC(Remote Procedure Call,远程过程调用)是一种用于解决分布式系统中服务之间调用问题的技术。通俗来说,它允许开发者像调用本地方法一样调用远程服务。RPC的主要作用体现在以下两个方面:

  • 屏蔽远程调用与本地调用的区别:使开发者感觉就像是在调用项目内部的方法。
  • 隐藏底层网络通信的复杂性:让开发者更专注于业务逻辑,而不必担心网络细节。

RPC框架主要由三个重要组件组成:客户端、服务端和注册中心。在一次RPC调用流程中,这三个组件的交互过程如下:

  • 服务端启动后,将其提供的服务列表发布到注册中心,客户端则向注册中心订阅服务地址。
  • 客户端通过本地代理模块(Proxy)调用服务端,Proxy模块负责将方法、参数等数据转换成网络字节流。
  • 客户端从服务列表中选择一个服务地址,并将数据通过网络发送给服务端。
  • 服务端接收到数据后进行解码,以获取请求信息。
  • 服务端根据解码后的请求信息调用对应的服务,并将调用结果返回给客户端。

RPC的核心部分包括:编解码层、协议层和网络通信层。

2. RPC 工作原理

RPC的工作原理可以分为以下几个步骤:

  1. 调用请求:客户端程序调用一个函数,该函数实际上位于远程服务器上。调用请求通常包括函数名和传递的参数。
  2. 序列化:调用请求通过RPC框架被序列化为标准格式的数据包,这一过程称为“序列化”或“编码”。
  3. 网络传输:序列化后的数据包通过网络发送到远程服务器。
  4. 反序列化:服务器接收到数据包后,RPC框架将其反序列化(解码)为函数名和参数,并调用对应的远程函数。
  5. 执行函数:服务器执行被调用的函数,并将结果返回给客户端。
  6. 结果返回:返回的数据通过相同的方式进行序列化、传输,并在客户端进行反序列化,最终作为函数调用的返回值被处理。

这个过程对于开发者来说是透明的,RPC框架隐藏了底层的网络通信细节,使得远程调用看起来就像是本地调用。

3. RPC 的常见应用

RPC广泛应用于分布式系统,特别是在微服务架构中。常见应用包括:

  • 微服务通信:在微服务架构中,各个服务通常需要相互通信。RPC可以用于服务之间的通信,使不同服务能够通过调用彼此的函数来完成任务。
  • 跨平台应用:RPC支持跨平台调用,例如,一个Java程序可以通过RPC调用用Python编写的函数。
  • 客户端-服务器架构:传统的客户端-服务器应用可以通过RPC实现,例如,前端应用程序通过RPC调用后端服务。