RPC、RMI、REST的区别

初入职场,接触了不少企业常用的技术,与学校实训使用的技术有很大差异,在这里记录一下RPC、RMI与REST的区别。

概念

RPC(Remote Procedure Call,远程过程调用)
  • 一种通过从远程计算机程序上请求服务,而无需了解底层网络技术的协议。
  • 面向过程。解决分布式系统中,服务之间的调用问题。
  • 远程调用时,像本地调用一样方便,调用者感觉不到远程调用的逻辑。
  • 可以采用 TCP、UDP、HTTP、管道通信等技术去实现。
RMI(Remote Method Invocation,远程方法调用)
  • 仅支持Java,由java.rmi包提供支持。
  • 能够让一个Java程序去调用远程计算机上的Java对象的方法,调用的结果就像在本地调用一样。
  • 是EJB(Enterprise JavaBeans)的支柱,是建立分布式Java应用程序的方便途径。
  • 使用JRMP(Java Remote Messaging Protocol,Java远程消息交换协议)进行通信。JRMP是专为Java的远程对象制定的协议。
REST(Representational State Transfer,表述性状态传递)
  • 一种软件架构风格,面向资源(URL)。
  • 很好的利用了 HTTP 中已有的请求方法(PUT、POST、GET、DELETE)做操作形式的区分,以简化URL。
  • 通过HTML协议使用JSON字符串传输数据。

区别

名称 适用范围 底层 优势/劣势
RPC 一种协议,可以跨语言实现 可以采用 TCP、UDP、HTTP、管道通信等实现 面向过程;
性能通常更高,因为实现更底层、封装的数据量更小
RMI Java对象和基本数据类型 JRMP协议 仅适用于Java,要求服务端和客户端均为Java开发
REST 应用服务架构 HTTP协议 URL精简性、可读性高;
面向资源;
资源描述与视图的松耦合
  • 一般后端使用RPC(性能高),前端使用REST(HTTP)。
  • REST 基于 HTTP 协议,因此通常会有前端代理进行请求分发,这种前端代理层的水平扩展不太容易;但 RPC 服务借助注册中心可以轻易实现服务节点的增删和动态调整。
上一篇:GraphQL和RESTful的区别


下一篇:阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别(转载)