一、基本概念
远程函数调用(RPC,Remote Procedure Calls,也叫远程过程调用)
RPC(远程过程调用)是一种计算机通信协议,用于使一个计算机程序可以请求另一个计算机上的服务或方法。它允许在分布式系统中的不同节点之间进行通信和交互。
在RPC中,客户端程序可以像调用本地方法一样调用远程计算机上的方法,而不需要了解底层网络细节。客户端发送一个请求消息给服务器,服务器执行请求并将结果返回给客户端。这使得开发人员可以通过网络将应用程序的不同功能模块分布在不同的计算机上,从而实现分布式和协作性的系统。
二、RPC工作原理
RPC的工作原理如下:
1. 客户端调用本地的代理方法,参数和方法调用被封装成一个请求消息。
2. 请求消息通过网络传输到远程服务器。
3. 服务器接收到请求消息后,解析消息并执行相应的方法。
4. 服务器执行完方法后,将结果封装成响应消息。
5. 响应消息通过网络传输回客户端。
6. 客户端接收到响应消息后,提取结果并继续执行。
RPC可以使用不同的传输协议和序列化格式来实现,如HTTP、TCP、UDP等。它被广泛应用于分布式系统、微服务架构、Web服务等场景,用于实现不同模块之间的通信和数据交换。常见的RPC框架有 gRPC、Apache Thrift、XML-RPC 等。
三、RPC的优点
1. 单一职责,有利于分工协作和运维开发
2. 可扩展性强,资源使用率更优
3. 故障隔离,服务的整体可靠性更高
四、RPC的问题
1. 服务宕机,对方应该如何处理? 2. 在调用过程中发生网络异常,如何保证消息的可达性? 3. 请求量突增导致服务无法及时处理,有哪些应对措施?
总结:RPC带来好处的同时也带来了不少新的问题,将由RPC框架来解决。