【Java面试】这也太卷了~面试竟然问,HTTP协议和RPC协议的区别 ...

打印 上一主题 下一主题

主题 808|帖子 808|积分 2424

“Http协议和RPC协议有什么区别?”
最近很多人问我这个问题,他们都不知道怎么回答。
今天我们就来了解一下这个问题的高手回答。
另外,我把文字版本的内容整理到了一个15W字的面试文档里了。
大家可以看文章尾端领取。
下面看看高手的回答
高手:

这个问题我想从三个层面来回答。
从功能特性来说。

  • http是一个属于应用层的超文本传输协议,是万维网数据通信的基础,主要服务在网页端和服务端的数据传输上。
  • RPC是一个远程过程调用协议,它的定位是实现不同计算机应用之间的数据通信, 屏蔽通信底层的复杂性,让开发者就像调用本地服务一样完成远程服务的调用。
    因此,这两个协议在定位层面就完全不同。
其次,从实现原理来说。

  • http协议是一个已经实现并且成熟的应用层协议,它定义了通信的报文格式Request Body和Request Header, 以及Response Body和Response Header。
    也就是说,符合这样一个协议特征的通信协议,才是http协议。


  • RPC只是一种协议的规范,它并没有具体实现,只有按照RPC通信协议规范实现的通信框架,
    也就是RPC框架,才是协议的具体实现,比如Dubbo、gRPC等。
    因此,我们可以在实现RPC框架的时候,自定义报文通信的协议规范、自定义序列化方式、自定义网络通信协议的类型等等
    因此,从这个层面来说,http是成熟的应用协议,而RPC只是定义了不同服务之间的通信规范。
最后,应用层面来说。

  • http协议和实现了RPC协议的框架都能够实现跨网络节点的服务之间通信。
    并且他们底层都是使用TCP协议作为通信基础。
    但是,由于RPC只是一种标准协议,只要符合RPC协议的框架都属于RPC框架。
    因此,RPC的网络通信层也可以使用HTTP协议来实现,比如gRPC、OpenFeign底层都采用了http协议。
总结

这个问题考察频率还挺高的。
网上很多人对这两个协议的理解也是一知半解,说了半天没说明白。
其实只要理解这两个协议本身的特性和背景,就能很轻松的回答出来。
如果喜欢我的作品,记得点赞、收藏、加关注!!!

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mic带你学架构!
如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力。欢迎关注「跟着Mic学架构」公众号公众号获取更多技术干货!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

干翻全岛蛙蛙

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表