REST和RPC的区别

4 篇文章 0 订阅
订阅专栏
REST是一种基于HTTP协议的架构风格,主要通过动词(GET,POST等)和名词(URI)操作资源,适合对外提供服务。RPC是远程过程调用,更注重调用远程函数,通常使用二进制协议,效率高,适合内部系统间调用。REST具有较低的耦合性和更好的跨语言支持,但性能稍逊;RPC则调用简单,性能高,但耦合性强,不利于跨语言交互。
摘要由CSDN通过智能技术生成

1 REST

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

  • method:动词(GET、POST、PUT、DELETE之类的)
  • Host:URI(统一资源标识),服务器ip,端口
  • Path:名词(路径,服务器里面的某个东西)路径的结尾是资源的形态(如html、text、image、pdf等)

即对 Host 中的某个 Path对应的资源做method操作。

2 RPC

RPC 是一种技术思想而非一种规范或协议,通常的调用过程为:

1)客户端把函数序列化;

2)远端服务收到后,再把函数反序列化,完成函数调用。

就是像调用本地方法一样调用远程方法,通信协议大多采用二进制方式,长链接,效率更高。

2.1 组件

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

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

2.2 实现过程

RPC具体实现步骤如下:

1)服务调用方(client)(客户端)以本地调用方式调用服务;

2)client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体,比如在Java里就是序列化的过程;

3)client stub找到服务地址,并将消息通过网络发送到服务端;

4)server stub收到消息后进行解码,比如在Java里就是反序列化的过程;

5)server stub根据解码结果调用本地的服务;

6)本地服务执行处理逻辑;

7)本地服务将结果返回给server stub;

8)server stub将返回结果打包成消息,Java里的序列化;

9)server stub将打包后的消息通过网络并发送至消费方

10)client stub接收到消息,并进行解码, Java里的反序列化;

11)服务调用方(client)得到最终结果。

RPC框架的目标就是把2-10步封装起来,把调用、编码/解码的过程封装起来,让用户像调用本地服务一样的调用远程服务。

3 REST和 RPC的区别

3.1 REST

如需对服务资源进行操作,需要先确认服务端的当前状态,修改之后将最终用户所期待的状态发送给服务端,服务端按照客户的期待进行修改。

修改代码在客户端,所以REST风格客户端逻辑相比客户端更复杂。自由度更大一些,但因此造成失误的可能性也大一些。

传输层基于HTTP,相比于TCP,多了一层协议。但基于HTTP传输,可以穿越防火墙,适合组织内向组织外提供服务,此外REST的接口的安全性相比RPC更高。

3.2 RPC

如需对服务里面的资源进行修改,首先需要了解服务端中各个接口的功能和调用方式,然后把相关参数传给服务端提供的接口,让服务端自己去执行修改。

修改代码在服务端,所以RPC服务端逻辑更复杂些,服务端会有很大的工作量,但分工明确,不容易造成失误。

可以基于TCP或HTTP,如果基于TCP,将少一层协议。

3.3 使用场景

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

对比项RESTRPC
范式面向资源的范式,它强调对 URI 所代表的资源进行操作。面向方法的范式,强调远程调用函数,客户端和服务器之间传递的数据是通过序列化方法的参数和返回值来实现的
通信协议HTTP一般使用TCP
数据格式REST 使用 JSON、XML 等文本格式传输数据,这些格式易于阅读和解析RPC 通常使用二进制格式传输数据,如 Protobuf 和 MessagePack 等
编程模型REST 是基于 HTTP 协议的,只要能够发送 HTTP 请求和解析 HTTP 响应的语言都可以使用 RESTRPC 支持多种编程语言和平台,如 Java、C++、Python 
性能
灵活度
使用场景
  • 对外提供服务
  • 低频调用
  • 内网服务调用
  • IO 密集调用

3.4 案例

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

  • REST:服务端只需要一个接口,作用是更改数据库里面的数(不管是加了还是减了),然后客户端有两个函数,分别进行加操作和减操作,但客户端操作完都提交给同一个服务端函数,然后更改数据库。
  • RPC中:服务端应该留两个接口函数,分别对应加1和减1操作,当客户端需要进行修改时,先要弄明白哪个做加1操作、哪个做减1操作,然后入参调用,让服务端进行加1,减1操作后更改数据库。

3.5 优缺点

3.5.1 REST优缺点

优点:耦合性低,兼容性好,提高开发效率,不用关心接口实现细节,相对更规范,更标准,更通用,跨语言支持

缺点:性能不如 RPC 高。

3.5.2 RPC优缺点

优点:

  • 调用简单,清晰,透明,不用像 rest 一样复杂,就像调用本地方法一样简单。
  • 高效低延迟,性能高
  • 自定义协议(让传输报文提及更小)
  • 性能消耗低,高效的序列化协议可以支持高效的二进制传输
  • 自带负载均衡

缺点:

  • 耦合性强,例如:开发人员为每个微服务定义了各自的 service 抽象接口,并通过持续集成发布到私有仓库中,调用方应用对微服务提供的抽象接口存在强依赖关系,因此不论开发、测试、集成环境都需要严格的管理版本依赖,才不会出现服务方与调用方的不一致导致应用无法编译成功等一系列问题,以及这也会直接影响本地开发的环境要求,往往一个依赖很多服务的上层应用,每天都要更新很多代码并 install 之后才能进行后续的开发。若没有严格的版本管理制度或开发一些自动化工具,这样的依赖关系会成为开发团队的一大噩梦。而 REST 接口相比 RPC 更为轻量化,服务提供方和调用方的依赖只是依靠一纸契约,不存在代码级别的强依赖,当然 REST 接口也有痛点,因为接口定义过轻,很容易导致定义文档与实际实现不一致导致服务集成时的问题,但是该问题很好解决,只需要通过每个服务整合swagger,让每个服务的代码与文档一体化,就能解决。所以在分布式环境下,REST 方式的服务依赖要比 RPC 方式的依赖更为灵活。
  • 无法跨语言,平台敏感,Java 写的 RPC 微服务无法给 Python 调用。需要再实现一层 REST 来对外提供服务


 

RESTRPC区别
Spring Boot-Common On With You
12-10 1463
                                                   《 REST 与  RPC区别 》     前言 为什么写这篇文章,前段时间一位同学问到这个问题,介绍了个大致,回头后又去网上自我补充了哈,但是总是感觉不是那么完美,于是此篇文章便产生了,如果有不到之处欢迎指正。   关于 RPC (远程过程调用协议) 一、RPC 简介 ...
服务间通信机制,RestRPC 的对比
javamyfriend的博客
07-24 301
服务间通信机制,RestRPC 的对比
restrpc区别
tian830937的专栏
02-28 1534
rpcrest区别
RESTRPC对比
最新发布
weixin_45990682的博客
08-23 633
REST优点:简单易用,基于标准 HTTP 协议,适合 Web 应用,易于扩展和维护。缺点:性能相对较低,不适合需要高效通信的场景。RPC优点:高效、低延迟,适合高性能、复杂交互的系统,特别是微服务内部通信。缺点:学习曲线较陡,开发和维护复杂性较高。选择 REST 还是 RPC 取决于具体的应用场景和需求。如果你的系统主要是 Web 服务,或者需要与各种客户端(如浏览器、移动设备)交互,REST 是更自然的选择。如果你的系统强调性能和效率,或者需要复杂的服务调用,RPC 可能更适合。
RPCREST对比
weixin_45979976的博客
12-03 1663
RPCREST区别
RESTRPC 之间的差异
nruuu的博客
02-21 589
RESTRPC 之间的差异 总结。
RPCREST区别(转)
热门推荐
技术博客
03-21 1万+
原文:http://pgoy.wordpress.com/2007/09/08/rpc%e5%92%8crest%e7%9a%84%e5%8c%ba%e5%88%ab%ef%bc%88%e5%8e%9f%e5%88%9b%ef%bc%89/这两天要忙着写老师布置的论文,遇到两个网络方面的专业术语不太明白,于是翻阅无数国内网站,国内对RPC的解释比较齐全也比较权威,但想查些关于REST的就很少了。国内网站对REST的解释实在是很模糊,不知道是我理解的太不彻底,还是写这些文章的本身对概念了解的就不是很彻底,最终
rest_rpc:现代C ++(C ++ 11),简单易用的rpc框架
05-13
rest_rpc c++11, high performance, cross platform, easy to use rpc framework. It's so easy to love RPC. Modern C++开发的RPC库就是这么简单好用! rest_rpc简介 rest_rpc是一个高性能、易用、跨平台、header ...
RESTRPC区别.pdf
09-21
### RESTRPC区别详解 #### 一、概述 在现代软件开发中,特别是分布式系统设计领域,REST(Representational State Transfer)与RPC(Remote Procedure Call)是两种非常重要的服务调用方式。这两种方法各有...
rest-rpc 简单易用的rpc框架 C++11
10-22
总结,`rest_rpc`是一个结合了RESTful API设计和RPC功能的C++11框架,它简化了网络通信和远程调用的实现,提供了高效、易用的API,适合各种C++11项目中使用。通过理解和掌握`rest_rpc`,开发者可以更便捷地构建...
rpcrest区别以及优缺点
桥头落日的博客
11-08 7332
restrpc之间的区别 1,rest REST是一种架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源,网络上一切皆资源。 REST并没有创造新的技术,组件或服务,只是使用Web的现有特征和能力。 可以完全通过HTTP协议实现,使用 HTTP 协议处理数据通信。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。 2,rpc RPC(Remote
RPCREST区别
shellching的专栏
06-29 642
转自:http://blog.csdn.net/u013628152/article/details/47669797 一:RPC  RPC 即远程过程调用, 很简单的概念, 像调用本地服务(方法)一样调用服务器的服务(方法).  通常的实现有 XML-RPC , JSON-RPC , 通信方式基本相同, 所不同的只是传输数据的格式.  (如果你已经习惯于XML繁重的尖括号,你不妨
restrpc的对比
coffeehot的专栏
10-24 234
REST式的Web服务和RPC式的Web服务在接口定义上的区别是,REST使用HTTP的通用方法作为统一接口的标准词汇。REST式的Web服务所提供的方法信息都在HTTP方法里,而RPC式的Web服务所提供的方法信息在SOAP/HTTP信封里(其封装的格式通常是HTTP或者是SOAP),每一个RPC式的Web服务都会公布一套符合自己商业逻辑的方法词汇。   webService三要素:SOA...
RPCREST有什么区别
逍遥壮士
07-29 1004
背景 好多开发的同学在工作中,经常分不清RPCREST区别,导致经常沟通不在一个层次上。甚至有些同学把这两个当成同一个东西。RPCREST区别?对比名称rpcrest备注架构风格RPC是基于过程调用的架构风格,它将远程方法调用封装为本地方法调用的形式,实现了不同进程或不同机器之间的通信。REST是基于资源的架构风格,它通过URL表示资源,使用HTTP协议的GET、POST、PUT、D...
RPCREST的差别
aoe41606的博客
07-31 158
一:RPC RPC 即远程过程调用, 非常easy的概念, 像调用本地服务(方法)一样调用server的服务(方法). 通常的实现有 XML-RPC , JSON-RPC , 通信方式基本同样, 所不同的仅仅是数据传输的格式. (假设你已经习惯于XML繁重的尖括号,你最好还是能够尝试下更加轻型,高效,传输效率高的 JSON.) 一个简单的通信过程通常为: R...
RPCREST区别
hero_java的专栏
05-12 2186
一句话,两者并不是一个层面意义上的东西。 1、定义 REST 是Representational State Transfer的简称,是一种软件架构风格,中文描述为表述性状态转移(是指某个瞬时状态的资源数据的快照,包括资源数据的内容、表述格式(XML、JSON)等信息)。这种风格的典型应用就是HTTP。 RPC 是 Remote Procedure Call 的缩写形式,中文描述为远程过程调用,用来屏蔽远程调用跟本地调用的区别,是解决应用间通信的一种方式。 RPC可以基于TCP/UDP,也可以基于.
HTTP(REST)和RPC区别
qq_36316285的博客
07-18 572
什么是RPCREST 在 OpenStack 里的进程间通信方式主要有两种,一种是基于HTTP协议的RESTFul API方式,另一种则是RPC调用。 RESTful主要用于各组件之间的通信(如nova与glance的通信),或者说用于组件对外提供调用接口。 RPC 则用于同一组件中各个不同模块之间的通信(如nova组件中nova-compute与nova-scheduler的通信) 1、所属类别不同 REST指的是某个瞬间状态的资源数据的快照,包括资源数据的内...
rest-rpc:基于C++11的高效RPC框架
REST-RPC框架结合了RESTRPC的优势,开发者可以使用C++11(C++的2011年版本)开发出遵循REST风格的服务接口。C++11是C++语言的一次重要更新,它引入了大量新的特性和改进,比如智能指针、线程库、lambda表达式等,...
写文章

热门文章

  • JVM调优总结 -Xms -Xmx -Xmn -Xss 148781
  • Docker配置国内Docker镜像源 21652
  • 子网掩码详解 16256
  • iptables常用命令 12645
  • Prometheus监控实战之node_exporter详解 10635

分类专栏

  • 运维开发 1篇
  • Gin 3篇
  • golang 35篇
  • GCP 1篇
  • Linux操作系统 1篇
  • Linux基础 61篇
  • Shell scripts 2篇
  • linux性能优化 12篇
  • Linux常见问题 21篇
  • GPU 6篇
  • 基础中间件
  • DNS 15篇
  • JVM 6篇
  • Etcd 3篇
  • 架构 4篇
  • macOS 7篇
  • 数据库
  • Mysql 1篇
  • 混沌工程 2篇
  • chaosblade 38篇
  • 监控告警体系 18篇
  • 云原生
  • 云原生常见问题 2篇
  • Docker系列 14篇
  • Kubernetes系列 98篇
  • kubectl系列 9篇
  • Helm工具实战 5篇
  • DevSecOps 6篇
  • terraform 55篇
  • vault 3篇
  • Gitlab 1篇
  • Git 7篇
  • 稳定性 1篇
  • nginx 2篇

最新评论

  • Docker配置国内Docker镜像源

    HUCja: 添加完内容回车咋没反应

  • GPU系列(五)-nvidia-smi 基本使用

    _DDO: 不是哥们 这么多A100

  • Docker配置国内Docker镜像源

    2401_83448718: 第四个能用,感谢

  • GPU系列(五)-nvidia-smi 基本使用

    北走帥: 为什么我看别人的process都是python,而我的process name是一串我写的运行参数?

  • Docker配置国内Docker镜像源

    Kerr_hg: 试了下,好像没一个能用

最新文章

  • curl IP绕过SSL证书检测
  • docker 部署单节点的etcd以及 常用使用命令
  • mac 桌面版docker no space left on device
2024
10月 5篇
09月 3篇
08月 8篇
07月 2篇
06月 26篇
05月 34篇
04月 43篇
03月 27篇
02月 37篇
01月 16篇
2023年252篇
2019年1篇
2018年2篇
2016年15篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

alden_ygq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家大庆玻璃钢雕塑定做玻璃钢熊夫人造型雕塑安徽公园景观玻璃钢美陈雕塑玻璃钢卡通狮子头雕塑中原玻璃钢雕塑加工厂家石家庄校园玻璃钢雕塑价格长治玻璃钢雕塑厂梅州玻璃钢卡通雕塑电话多少宝鸡花朵校园玻璃钢景观雕塑厂家衢州定制玻璃钢雕塑销售电话玻璃钢雕塑坏了可以修吗商场背景墙美陈资阳专业的成都商场美陈天津欧式玻璃钢雕塑设计益阳商场美陈优质的玻璃钢雕塑潍坊火烈鸟玻璃钢雕塑生产厂家无锡商场大型美陈东莞玻璃钢花盆制品厂宁夏玻璃钢卡通雕塑制作德州市玻璃钢雕塑定制江苏小型玻璃钢雕塑摆件德州玻璃钢雕塑制作厂家玻璃钢雕塑猎豹图片山东特色玻璃钢雕塑联系方式玻璃钢雕塑多少钱一平米兰州景区玻璃钢雕塑定制宁波玻璃钢雕塑方案仙桃玻璃钢雕塑小品厂家山东动物雕塑玻璃钢香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化