分布式RPC技术与RESTful API的区别

338 阅读4分钟

What's RCP and What's RESTful API

RESTful APIRPC接口都是用于不同系统之间进行通信的方式,但它们有一些区别。

RESTful API是一种基于HTTP协议的通信方式,它使用HTTP方法(如GET、POST、PUT、DELETE)来对资源进行操作。RESTful API通常使用JSON或XML格式来传输数据,而且它遵循一定的规范和约定,如使用URI来标识资源。

RPC(Remote Procedure Call)接口是一种远程调用的方式,它允许一个程序调用另一个程序中的函数或方法,就像调用本地函数一样。RPC接口通常使用自定义的协议来传输数据,而且它不限于使用HTTP协议。 总的来说,RESTful API更加灵活和通用,适用于各种场景,而RPC接口更加专注于远程调用,适用于需要高效性能的场景。在选择使用RESTful API还是RPC接口时,需要根据具体的需求和场景来进行评估和选择。

RPC通信流程

RPC(Remote Procedure Call)通常通过网络进行远程调用,实现客户端和服务器之间的通信。以下是RPC连接远程服务器和调用指定方法的一般流程:

  1. 客户端发起调用:客户端需要调用远程服务器上的函数或方法时,首先会构造一个RPC请求,包括要调用的方法名、参数等信息。
  2. 网络传输:客户端将构造好的RPC请求通过网络传输到远程服务器。通常,RPC框架会使用TCP或HTTP等协议进行数据传输。
  3. 服务器接收请求:远程服务器接收到客户端发送的RPC请求后,会解析请求,提取出要调用的方法名和参数等信息。
  4. 调用指定方法:服务器根据RPC请求中的方法名,调用相应的函数或方法。这里需要RPC框架能够根据方法名找到对应的函数或方法,实现了远程调用的功能。
  5. 执行方法:服务器执行调用的方法,并将结果返回给客户端。
  6. 返回结果:服务器将方法执行的结果通过网络传输返回给客户端。客户端接收到结果后,可以继续处理或展示。 总的来说,RPC通过网络连接客户端和服务器,实现了远程调用的功能。客户端发起调用,服务器接收请求并执行指定的方法,最后将结果返回给客户端。RPC框架提供了远程调用的支持,使得客户端和服务器之间的通信更加方便和高效。

image.png

RPC应用场景

  1. 微服务架构:在微服务架构中,不同的服务通常需要相互调用,RPC接口可以实现不同服务之间的远程调用,实现服务之间的解耦和通信。
  2. 分布式系统:在分布式系统中,不同节点之间需要进行通信和协作,RPC接口可以实现节点之间的远程调用,实现分布式系统的功能和性能需求。
  3. 数据同步:在数据同步的场景中,不同系统或数据源之间需要进行数据同步和数据交换,RPC接口可以实现不同系统之间的数据传输和同步。
  4. 远程过程调用:在需要远程调用某个函数或方法的场景中,RPC接口可以实现客户端调用服务端的函数或方法,实现远程调用功能。
  5. 高性能计算:在需要进行高性能计算或并行计算的场景中,RPC接口可以实现不同节点之间的任务分配和结果汇总,实现高性能计算的需求。

总的来说,RPC接口适用于需要远程调用、高性能、分布式系统等场景,可以帮助不同系统或节点之间进行通信和协作,实现系统之间的功能交互和数据传输。

So what's RPC?

简单理解,可以理解为RPC(Remote Procedure Call)是对HTTP、TCP、UDP、WebSocket等相关技术的集成与封装,旨在解决不同场景下的通信问题。RPC框架提供了一种高层次的抽象,使得在不同系统或服务之间进行远程调用变得更加简单和方便。

SpringCloud分布式技术中的 Feign 就是一种RPC实现方式,虽然Feign主要用于HTTP通信,而非传统的RPC通信,但在功能上可以被视为RPC的一种实现方式。Feign允许开发人员使用接口来定义服务间的通信,然后通过动态代理的方式将接口转换为HTTP请求,实现远程服务调用。