rest和rpc的区别

news2024/9/24 3:30:15

一、rest:

REST 不是一种协议,它是一种架构。大部分REST的实现中使用了RPC的机制,大致由三部分组成:

1、method:动词(get、post之类的)

2、Host:URI(统一资源标识),服务器,端口

3、Path:名词(路径,服务器里面的某个东西)路径的结尾是资源的形态(如html、text、image、pdf等)

即、对 host 里面的某个 Path 里面的东西做一些 get 或 post 操作。

二、rpc:

RPC 是一种技术思想而非一种规范或协议,通常的调用过程为:把函数序列化,远端收到后,再把函数反序列化,完成函数调用。就是像调用本地方法一样调用远程方法,通信协议大多采用二进制方式,长链接,效率更高

RPC架构里包含如下4个组件:

客户端(Client):服务调用方
客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数打包成网络消息,再通过网络发送给服务方
服务端存根(Server Stub):接受客户端发送过来的消息并解包,再调用本地服务
服务端(Server):真正的服务提供者。

Rpc具体实现步骤:

服务调用方(client)(客户端)以本地调用方式调用服务;
client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;在Java里就是序列化的过程
client stub找到服务地址,并将消息通过网络发送到服务端;
server stub收到消息后进行解码,在Java里就是反序列化的过程;
server stub根据解码结果调用本地的服务;
本地服务执行处理逻辑;
本地服务将结果返回给server stub;
server stub将返回结果打包成消息,Java里的序列化;
server stub将打包后的消息通过网络并发送至消费方
client stub接收到消息,并进行解码, Java里的反序列化;
服务调用方(client)得到最终结果。
RPC框架的目标就是把2-10步封装起来,把调用、编码/解码的过程封装起来,让用户像调用本地服务一样的调用远程服务。

作者:李明燮
链接:https://www.jianshu.com/p/6d52402360e1
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

三、rest 和 rpc 的区别

  • REST:想对服务器里面的资源进行操作,下载服务器端的当前状态,修改之后将最终用户所期待的状态发送给服务器,服务器按照客户的期待进行修改。修改代码在客户端,所以REST风格客户端逻辑相比客户端更复杂。自由度更大一些,但因此造成失误的可能性也大一些。传输层基于HTTP,相比于TCP,多了一层协议。但基于HTTP传输,可以穿越防火墙,适合组织内向组织外提供服务,此外rest的接口的安全性相比rpc更高

  • RPC:想对服务器里面的资源进行修改,首先需要了解服务器中各个接口都是干啥的,然后把相关参数传给服务器提供的接口,让服务器自己去执行修改。修改代码在服务端,所以RPC服务端逻辑更复杂些,服务器会有很大的工作量,但分工明确,不容易造成失误。可以基于TCP或HTTP,如果基于TCP,将少一层协议

REST调用及测试都很方便,RPC就显得有点繁琐,但是RPC的效率是毋庸置疑的,所以建议在多系统之间的内部调用采用RPC。对外提供的服务,Rest更加合适。

在这里插入图片描述

四、例子

如果想对服务端数据库里面的一个数进行 加1、减1 这两种操作。两种不同的实现方式如下:

REST中:服务端只要留一个接口就可以了,作用是更改数据库里面的数(不管它是加了还是减了),然后客户端有两个函数,分别进行加操作和减操作,但客户端操作完都提交给同一个服务端函数,然后更改数据库。

RPC中:服务端应该留两个接口函数,分别对应加1和减1操作,当客户端需要进行修改时,先要弄明白哪个做加1操作、哪个做减1操作,然后入参调用,让服务端进行加1,减1操作后更改数据库。

五、目前流行架构

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/376962.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试题,用 Java 解【静态扫描最优成本】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

2023-02-28 mmap的原理及使用-思考

摘要: 最近在使用mmap解决数据库内存占用损耗过高导致OOM的问题, 不得不说在有些场景下mmap是非常有用. 本文主要涉及一些对mmap的思考. mmap本身的思考: mmap和文件系统的交互规则是什么mmap中给进程虚拟内存映射的文件上的部分,是什么? 为什么是页缓存? 有没有文件缓存?…

Vscode快速配置(1)之基础工具

VScode快速配置(1)之基础工具(v1.0) Author:Once Day Date:2023年2月19日 漫漫长路,才刚刚开始… (嵌入式程序员开发环境) 1. 概述 下面是一些基础插件,基本上嵌入式程序员都会用到。 首先是远程连接…

力扣-销售分析III

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1084. 销售分析III二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结…

Apache Hive入门

文章目录一、Apache Hive概述1.1、什么是Hive1.2、使用Hive原因1.3、Hive和Hadoop关系二、Hive功能思想2.1、映射信息记录2.2、SQL语法解析、编译三、Hive架构、组件3.1、Hive架构图3.2Hive组件四、Hive常用操作4.1、数据类型4.1.1、基本数据类型4.1.2、集合数据类型4.2、数据库…

动态网页的核心——JSP

文章目录1,JSP 概述2,JSP 小案例2.1 搭建环境2.2 导入 JSP 依赖2.3 创建 jsp 页面2.4 编写代码2.5 测试3,JSP 原理4,JSP 总结4.1 JSP的 缺点4.2技术的发展历程4.3JSP的必要性最后说一句1,JSP 概述 JSP(全称…

IB数学/生物/化学/物理所需的教材有哪些

高中阶段的学习是迈向大学的重要步骤,涉及到的课程分为许多结构,其中最为常见的则是通过IB, AP和A-Level的学习,实现迈入国外大学的目的。 IB课程即国际文凭组织IBO(International Baccalaureate Organization)&#x…

「TCG 规范解读」规范结构

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

「TCG 规范解读」TCG 主规范-命令

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alliance,TCPA)所开发的规范。现在的规范都不是最终稿,都…

为什么需要学习shell、shell的作用

课程基于B站于超课程笔记 03 Shebang的正确玩法_哔哩哔哩_bilibili P1 shell的作用 P2 shell执行命令的流程 P3 Shebang的正确玩法 什么是shell及组成 shell概念 shelll组成 Shebang概念 /bin/sh /bin/bash一样,都是指向一个bash解释器 [rootlocalhost ~]#…

JVM篇之类加载与字节码技术

一.类文件结构 首先获得.class字节码文件 方法: 在文本文档里写入java代码(文件名与类名一致),将文件类型改为.javajava终端中,执行javac X:…\XXX.java // HelloWorld 示例 public class HelloWorld {public stat…

IB课程体系及计分方式

IB课程体系及计分方式 在全球将近150个国家,超过4000个学校,有100万的IB学生。学生在IB体系中修读相同的教材,学生毕业时参加全球统一考试,试卷的命题及批阅均由IB总部直接统筹规划,全世界的IB学生学术水平因此得以统一…

面试了一个32岁的程序员,一个细节就看出来是培训班的····

首先,我说一句:培训出来的,优秀学员大有人在,我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配,是非常遗憾的事情。 最近,在网上看到这样一个留言,引发了程序员这个圈子不少的…

利用逻辑分析仪解析串口通讯数据

利用逻辑分析仪解析串口通讯数据🔧采用的是市面上最为广泛使用的USB逻辑分析仪: 📚资料下载: 链接: https://pan.baidu.com/s/1c9lwWDbtJxaJED-kzSbiJg 提取码: 5vnr🔨测试工具为:Logic 2.4.6,也可以使用Pu…

华为OD机试题,用 Java 解【开放日活动】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

华为OD机试题,用 Java 解【求字符串中所有整数的最小和】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

【Linux】Linux根文件系统扩容

场景:根文件系统需要至少100GB的剩余空间,但是目前就剩余91GB。因此,我们需要对根文件系统进行扩容。# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 3.9G 0 3.9G 0% /dev tmpfs …

文献阅读 Improving Seismic Data Resolution with Deep Generative Networks

题目 Improving Seismic Data Resolution with Deep Generative Networks 使用深度生成网络提高地震数据分辨率 摘要 叠前数据的使用,通常可以来解决噪声迹线、覆盖间隙或不规则/不适当的迹线间距等问题。但叠前数据并不总是可用的。作为替代方案,叠后…

分布式锁实现原理与最佳实践

作者:秦泽涛 阿里云教育基座团队 在单体的应用开发场景中涉及并发同步时,大家往往采用Synchronized(同步)或同一个JVM内Lock机制来解决多线程间的同步问题。而在分布式集群工作的开发场景中,就需要一种更加高级的锁机制…

AI绘画第一步,安装Stable-Diffusion-WebUI全过程 !

别玩那些小孩子的玩意儿了,大人应该玩这些^_^!我是真没想到,AI绘画已经进化到这种程度了。实在是太!逼!真! 了!不上重马赛克都不敢贴图!看了这些图,有没有心痒痒的?今天就…