李狗蛋和二狗子因为 HTTP or RPC 打起来了

栏目: 服务器 · 发布时间: 5年前

内容简介:[╮(╯_╰)╭一个小故事]从前有两个程序员,一个叫李狗蛋一个叫二狗子,正在启动一个 web 项目。李狗蛋说我们系统交互就用HTTP听我的准没错。二狗子说,为什么我们不用RPC呢听我的准没错?李狗蛋说凭什么要听你?二狗子说那凭什么要听你的?李狗蛋说老子说用HTTP就用HTTP老子天下第一。二狗子脸无表情说了一声,滚。风。

[╮(╯_╰)╭一个小故事]

从前有两个程序员,一个叫李狗蛋一个叫二狗子,正在启动一个 web 项目。李狗蛋说我们系统交互就用HTTP听我的准没错。二狗子说,为什么我们不用RPC呢听我的准没错?李狗蛋说凭什么要听你?二狗子说那凭什么要听你的?李狗蛋说老子说用HTTP就用HTTP老子天下第一。二狗子脸无表情说了一声,滚。

风。

风吹。

空调风吹。

冷冽的空调风挡不住他们之间对于技术的热情,他们。。。打起来了。

看他们打架其实我挺....挺饱的,毕竟搬了板凳吃了很多西瓜,有点撑。但他们好像吵架的前提都没整明白,HTTP跟RPC的区别都没整清楚。希望你们不要因为这玩意吵架了,阿弥陀佛,毕竟太多人肚子撑不好。

[╮(╯_╰)╭HTTP和RPC的区别]

HTTP,Hypertext Transfer Protocol,超文本传输协议,是一款网络传输协议。

RPC,Remote Procedure Call,远程方法调用,是一款服务调用方案。

一个是协议一个是方案,这两者没什么必然的关系,所以也没什么可以比较的。

为什么会有人拿他们来比较呢?

是因为,现在有着 SpringCloud为首的HTTP restful 风格的调用模式,也有着grpc等这类私有协议的调用方式。所以自然而然,会有很多人从这个层次上认为,他们是同一类东西,其实并非如此。

二者本质都是希望得到服务,而被创造出来的技术。

[╮(╯_╰)╭HTTP究竟是什么]

HTTP 全名叫超文本传输协议,是在互联网中用来传输大量信息(比如文本、声音、视频等)的一个协议,这个模式是C/S 模式,也就是客户端(一般是浏览器)用HTTP发起请求,服务端接收到请求后同样用HTTP响应请求。HTTP是不是互联网本身呢?明显不是。互联网始于1969年美国的阿帕网,而HTTP1.0在1996年才开始使用,也是在这一年,以浏览器技术为基础的我们认知的互联网,开始蓬勃发展。一图胜百言,我就不多介绍了。

HTTP请求交互:

李狗蛋和二狗子因为 HTTP or RPC 打起来了

一次 HTTP 请求

客户端:你准备好我要发送了啊。

服务端:好吧你发送吧。

客户端:你真的准备好我真的要发送了啊。

客户端:发送请求。

服务端:响应请求。

客户端:你准备好我要关闭了啊。

服务端:好吧你关闭吧。

服务端:我关闭连接了。

客户端:好的我知道你关闭了。

[╮(╯_╰)╭RPC究竟是什么]

RPC 全名叫 远程过程调用,是指在调用远程服务的时候,用本地调用的方式,本地的处理器屏蔽了所有的网络、异常、重试等细节,服务调用方只关注输入值和返回的服务,相当于一个代理。之前讲过一次了,不多说了。 企业神奇中间件-RPC(总览) No.97

李狗蛋和二狗子因为 HTTP or RPC 打起来了

[╮(╯_╰)╭ HTTP和RPC开始PK了 ]

Round1

用 HTTP 可以实现 RPC 吗? 能。不仅仅HTTP可以实现RPC,任何网络协议都可以用来实现RPC,只要两台机器之间网络是通的,用什么协议都无所谓。

用 RPC 可以实现 HTTP 吗? 不能。HTTP 是有国际标准滴。

Round2

HTTP可以抛弃 TCP/IP 吗?暂时不能。现在HTTP/1.1 甚至 HTTP/2.0 暂时都还是基于 TCP/IP 协议的,HTTP/3.0 有一点点可能可以解除TCP依赖。

RPC可以抛弃 TCP/IP 吗?能。还是之前的结论,只要网络是通的,什么TCP、UDP、甚至小众的网络协议都可以支持RPC的实现。

Round3

HTTP可以跨平台跨语言吗?天然支持。毕竟拿到就用嘛,都是文本。

RPC可以跨平台跨语言吗?需要一定的努力,一些私有协议会把自己的序列化和反序列化给定制化了,只能自己解析自己,比如 Java 的RMI。

Round4

我能自己实现一个HTTP吗?想得有点多。国际标准来的。

我能自己实现一个 RPC 吗?小伙子有前途,可以的,写一个呗。

https://github.com/CallMeDJ/BigBanana-rpc.git

Round5

HTTP快吗?快,但是有一些头在企业应用没啥用。

RPC快吗?快,基于私有协议可以把网络传输冗余数据降到最低。

李狗蛋和二狗子因为 HTTP or RPC 打起来了

看这个厚重的头..

[╮(╯_╰)╭小结]

如果你只能记住一句话,那就记住这句吧。

HTTP是网络协议,跨平台跨语言,结合restful开发应用协作,开发很高效,但是协议头很重。RPC是调用方案,一般都会有私有协议,没什么多余信息,运行很高效,但大多数rpc的迁移性并不是很好。

HTTP就是英语,能处理非常多非常广泛的场景。RPC 就是方言,效率可能比英语高多了,但是可能有人听不懂。

[╮(╯_╰)╭后话]

关于 HTTP 和 RPC 这个话题是在大蕉的朋友们这个群里抛出来的问题,我觉得很有价值也很好玩,因为很多人的认知里,RPC就是比HTTP快。说实话,现在 gRPC 确实比 HTTP/1.1 要更快更有效率,所以大家才会觉得 RPC 就是比HTTP 快。但其实一些实现很糟糕的RPC未必比HTTP快比如大蕉自己实现的RPC。反过来说,RPC也可以基于HTTP搭建,把 HTTP 作为基础网络层。所以这两个东西并不是非此即彼的敌对关系,而是分工合作甚至相互协作的关系。

催更的小伙可以转发给我个好看了喂!!不然我就,我就生气。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

云攻略

云攻略

马克·贝尼奥夫、卡莱尔·阿德勒 / 徐杰 / 海天出版社 / 2010年8月 / 36.00元

Apple、Google、甲骨文、腾讯 都已投入了云的怀抱, 你还在等什么? 快来加入我们! 最初,Salesforce.com 只是一间小小的租赁公寓 在短短10年内 它已成长为 世界上发展最快、最具创新力的 产业变革领导者 曾经,这是个软件为王的时代。 现在,这是个云计算的新时代。 NO SOFTWARE 抛弃软件的......一起来看看 《云攻略》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具