本文转载自: https://blog.csdn.net/laomo_bible/article/details/79677677

                             REST与RPC比较与应用场景

1.1.1   REST与RPC概念

什么是REST

REST是一种架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源,网络上一切皆资源。

REST并没有创造新的技术,组件或服务,只是使用Web的现有特征和能力。 可以完全通过HTTP协议实现,使用 HTTP 协议处理数据通信。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。

HTTP动词与REST风格CRUD对应关系:

什么是RPC

远程方法调用,就是像调用本地方法一样调用远程方法。常见RPC框架结构图:

RPC框架要做到的最基本的三件事:

1、服务端如何确定客户端要调用的函数;

在远程调用中,客户端和服务端分别维护一个【ID->函数】的对应表,  ID在所有进程中都是唯一确定的。客户端在做远程过程调用时,附上这个ID,服务端通过查表,来确定客户端需要调用的函数,然后执行相应函数的代码。

2、如何进行序列化和反序列化;

客户端和服务端交互时将参数或结果转化为字节流在网络中传输,那么数据转化为字节流的或者将字节流转换成能读取的固定格式时就需要进行序列化和反序列化,序列化和反序列化的速度也会影响远程调用的效率。

3、如何进行网络传输(选择何种网络协议);

多数RPC框架选择TCP作为传输协议,也有部分选择HTTP。如gRPC使用HTTP2。不同的协议各有利弊。TCP更加高效,而HTTP在实际应用中更加的灵活。

1.1.2   REST与RPC比较

都是网络交互的协议规范。通常用于多个微服务之间的通信协议。

比较项        规范

REST

RPC

通信协议

HTTP

一般使用TCP

性能

灵活度

高与低是对实现两种规范框架的相对比较,但也不是绝对的,需要根据实际情况而定。

1.1.3   REST与RPC应用场景

REST和RPC都常用于微服务架构中。

1、HTTP相对更规范,更标准,更通用,无论哪种语言都支持http协议。如果你是对外开放API,例如开放平台,外部的编程语言多种多样,你无法拒绝对每种语言的支持,现在开源中间件,基本最先支持的几个协议都包含RESTful。

RPC在微服务中的利用

2、 RPC 框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节。让调用方感觉就像调用本地函数一样调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务。

最后建议

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

微服务之REST与RPC比较相关推荐

  1. 微服务架构介绍和RPC框架对比

    微服务架构介绍和RPC框架对比 1.微服务架构 1.1 特征 自动化部署,端点智能化,语言和数据的去中心化控制. 1.2架构 一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中 ...

  2. 微服务治理平台的RPC方案实现

    文章作者:用友云平台 原文链接:http://blog.51cto.com/14084875/2326311?utm_source=tuicool&utm_medium=referral 复制 ...

  3. Go微服务(一)——RPC详细入门

    篇幅可能较长,可以先收藏,方便后续观看. 文章名称 地址 Go微服务(一)--RPC详细入门 前往 Go微服务(二)--Protobuf详细入门 前往 Go微服务(三)--gRPC详细入门 前往 目录 ...

  4. c# 调用restful json_微服务调用为啥用RPC框架,http不更简单吗?

    背景 在一次的面试交谈中,聊到业务实现的技术架构.不管系统大小,一般都是微服务的架构,所以就产生了一个问题,为什么服务之间调用,选择用RPC,http 不也能实现服务之间的通信吗?怎么不用呢?或者 R ...

  5. 微服务之Feign分布式RPC

    从换了工作到web 之后,一直在各种新技术之间切换,各种挣扎,一直没有时间进行总结,今天稍微总结下,做个记录. 1 基本概念 Feign是Netflix开发的声明式.模板化的HTTP客户端, Feig ...

  6. 离不开的微服务架构,脱不开的RPC细节(值得收藏)!!!

    点击▲关注 "数据和云"   给公众号标星置顶 更多精彩 第一时间直达 微服务离不开RPC框架,RPC框架的原理.实践及细节,是本篇要分享的内容. 服务化有什么好处? 服务化的一个 ...

  7. 微服务RPC原理【深度好文】

    转自:https://mp.weixin.qq.com/s/y3l9VuIeXxSI0tLG784lqA 上一篇<微服务架构,多"微"才合适?>聊了微服务的粒度.微服务 ...

  8. 开源 | 蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系

    小蚂蚁说: 数据.消息.微服务是蚂蚁金服自主研发的金融级分布式中间件 SOFA (Scalable Open Financial Architecture)的三大方向. 一个多月前,蚂蚁金服开源了 S ...

  9. 微服务架构10个最重要的设计模式

    自从软件开发的早期(1960年代)以来,解决大型软件系统中的复杂性一直是一项艰巨的任务.多年来,软件工程师和架构师为解决软件系统的复杂性进行了许多尝试:David Parnas的模块化和信息隐藏(19 ...

最新文章

  1. 《重构:改善既有代码的设计》阅读笔记
  2. XP访问Linux共享错误提示
  3. Android TextView跑马灯效果与设置文字阴影
  4. java最全基础知识_Java编程入门,选择排序(Selection Sort)怎么做?
  5. 四种浏览器对 clientHeight、offsetHeight、scrollHeight、clientWidth、offsetWidth 和 scrollWidth 的解释差异...
  6. 中国计算机信息系统集成行业协会有含金量吗,系统集成工程师证书的含金量怎么样...
  7. 异常详细信息: System.UnauthorizedAccessException: 对路径“”的访问被拒绝。
  8. python——socket网络编程
  9. vant-uploader上传照片无法删除
  10. 将图片(HDC)打印出来
  11. 一周疫情对行业影响观察 | 中国资产或成避险资产;亚太旅游零售业呼吁政府财政支持...
  12. 如何安装最新igraph 现在已经无坑了
  13. int类型变量的取值范围?
  14. JMeter做性能测试之前,你应该要知道的套路?
  15. ch552开发环境配置
  16. 命令行登录和退出MySQL
  17. 2022-2028年中国汽车转向系统零部件行业发展现状调查及前景战略分析报告
  18. 做公关必用的四大法宝
  19. 亚马逊AWS免费EC2服务器搭建总结
  20. 中国矿业大学测绘工程专业课-学习笔记

热门文章

  1. 2019年脱单攻略|用Python爬取世纪佳缘美女照片,实现颜值评分
  2. 财管U11 股利、回购、送股与股票分割 教材解读
  3. 【Unity2DMobileGame_PirateBomb09】—— 设置基本敌人Prefab
  4. android状态栏透明!6年菜鸟开发面试字节跳动安卓研发岗,年薪50W
  5. 定义一个结构体变量(包括年,月,日)。计算该日在本年中是第几天
  6. 做了六年Android,终于熬出头了,15K到31K全靠这份高级面试题+解析
  7. Android浏览器自动播放视频,HTML 5自动播放谷歌浏览器Android不播放
  8. Graph Coarsening And multi-source BFS
  9. 基于ESP8266的智能跟随行李箱
  10. 次世代建模流程必备的七类软件,快来了领取