乐趣区

关于java:Java面试这也太卷了面试竟然问HTTP协议和RPC协议的区别

“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 带你学架构
如果本篇文章对您有帮忙,还请帮忙点个关注和赞,您的保持是我一直创作的能源。欢送关注同名微信公众号获取更多技术干货!

退出移动版