RPC

你说你了解rpc基础知识,能说一下嘛?

当然可以。RPC(Remote Procedure Call,远程过程调用)是一种允许程序能够在网络中的不同地址空间(通常是在不同的计算机上)调用服务、函数或过程的技术。RPC抽象了网络通信的复杂性,使得开发者可以像调用本地函数一样调用远程服务器上的函数,极大地简化了分布式系统的开发。以下是一些RPC的基础知识:

基本概念

  • 客户端(Client):发起远程过程调用请求的一方。
  • 服务器(Server):接收远程过程调用请求并执行相应过程的一方。
  • 存根(Stub):在客户端和服务器端各有一份,客户端存根将调用操作序列化为消息并通过网络发送给服务器,服务器存根则将消息反序列化并执行本地过程调用。

工作流程

  1. 客户端调用:客户端程序调用客户端存根(Stub)提供的接口,就像是进行本地函数调用一样。
  2. 请求序列化:客户端存根将调用的过程名称、参数等信息序列化成一种网络传输格式(如JSON、XML、Protobuf等)。
  3. 发送请求:通过网络将这个序列化后的请求发送给服务器。
  4. 服务器接收:服务器端的存根接收到请求数据,进行反序列化,得到原始调用信息。
  5. 执行过程:服务器端存根根据反序列化结果调用本地的过程。
  6. 返回结果:服务器执行完毕后,将结果序列化并通过网络发送回客户端。
  7. 客户端接收结果:客户端存根接收到结果,进行反序列化,并将结果返回给客户端程序。

特点

  • 位置透明:客户端不需要知道服务实现的具体位置。
  • 语言无关性:客户端和服务器可以使用不同的编程语言,只需约定好通信格式。
  • 简化分布式系统开发:RPC隐藏了网络通信的复杂性,开发者只需关注业务逻辑。

实现框架

有许多实现RPC的框架和工具,如:

  • gRPC:由Google开发,基于HTTP/2协议,支持多种语言,使用Protobuf作为接口描述语言和消息序列化格式。
  • Thrift:由Facebook开发,也支持跨语言调用,可以使用多种传输格式和协议。
  • JSON-RPC:一个基于JSON的轻量级RPC协议。

理解RPC的基础知识对于设计和开发现代分布式系统和微服务架构非常重要。通过RPC,系统的不同部分可以更加松耦合、灵活地协作,从而提高系统的可扩展性和维护性。

作者

JIeJaitt

发布于

2023-03-11

更新于

2024-03-11

许可协议

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×