• 【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协议。

    总结

    这个问题考察频率还挺高的。

    网上很多人对这两个协议的理解也是一知半解,说了半天没说明白。

    其实只要理解这两个协议本身的特性和背景,就能很轻松的回答出来。

    另外,我将所有Java面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前已经更新180期,总计超过15W字!

    【想领取面试文档的小伙伴可以点击文章底部名片无套路免费赠送给大家!】

    需要高手面试文档面试文档的小伙伴可以扫描下方二维码
    ↓↓↓↓↓↓↓↓↓↓↓↓↓

  • 相关阅读:
    Oracle19c单实例数据库配置OGG单用户数据同步测试
    Vue框架--Vue中的数据代理
    Docker-compose
    真良心干货保姆级手把手教你Python网络编程,学不会我去你家教你
    【2】c++11新特性(稳定性和兼容性)—>超长整型 long long
    【ajax核心01】ajax底层原理
    LX12864P1屏幕使用介绍(ST7567驱动),显示横线、字符、图形
    面向对象设计原则总结:SOLID/LKP/DRY/KISS…
    A Philosophy of Software Design读书笔记——模块应该有深度
    Java堆外缓存(一个很有意思的应用)
  • 原文地址:https://blog.csdn.net/q331464542/article/details/126585160