zoukankan      html  css  js  c++  java
  • 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 服务借助注册中心可以轻易实现服务节点的增删和动态调整。




  • 相关阅读:
    leecode 91. 解码方法
    leecode 166. 分数到小数
    剑指 Offer 31. 栈的压入、弹出序列
    leecode 386. 字典序排数
    LeetCode 311 稀疏矩阵的乘法
    leecode 89. 格雷编码
    leecode 79. 单词搜索
    leecode 207. 课程表
    QT -- 解决:Error: Could not decode "*.cpp" with "UTF-8"
    VS+QT -- 没有PRO文件的问题
  • 原文地址:https://www.cnblogs.com/Jeremy2001/p/11789579.html
Copyright © 2011-2022 走看看