当前位置: 首页 > 后端技术 > Java

【Java面试】这个太复杂了~面试居然问,HTTP协议和RPC协议的区别

时间:2023-04-02 00:03:52 Java

《Http协议和RPC协议有什么区别?》最近很多人问我这个问题,他们都不知道怎么回答。今天我们就来看看这个问题的专家解答。另外,我把文字版的内容整理成了一个15W字的面试文档。您可以在文章末尾阅读。来看看师父的回答师父:我想从三个层面来回答这个问题。在功能特性方面。http是属于应用层的超文本传输??协议,是万维网上数据通信的基础,主要服务于网页与服务器之间的数据传输。RPC是一种远程过程调用协议。它的定位是实现不同计算机应用程序之间的数据通信,屏蔽通信底层的复杂性,让开发者可以像调用本地服务一样完成远程服务调用。因此,这两种协议在定位层面是完全不同的。二、从实现原理上。http协议是一个实现成熟的应用层协议,它定义了通信报文格式RequestBody和RequestHeader,以及ResponseBody和ResponseHeader。也就是说,符合这种协议特性的通信协议就是http协议。RPC只是一种协议规范,并没有具体的实现。只有按照RPC通信协议规范实现的通信框架,即RPC框架,才是协议的具体实现,比如Dubbo、gRPC等。因此,在实现RPC框架的时候,我们可以自定义协议规范消息通信、自定义序列化方式、自定义网络通信协议类型等。因此,从这个层面来说,http是一个成熟的应用协议。RPC只是定义了不同服务之间的通信规范。最后,在应用层面。http协议和实现RPC协议的框架都可以实现跨网络节点的服务间通信。并且它们都使用TCP协议作为通信的基础。但是,由于RPC只是一种标准协议,只要框架符合RPC协议,就属于RPC框架。因此,RPC的网络通信层也可以使用HTTP协议来实现。比如gRPC和OpenFeign都在底层使用了HTTP协议。综上所述,这个问题的调查频率还是挺高的。网上很多人对这两个协议的理解都是一知半解,半天也没有解释。其实只要了解这两个协议的特点和背景,就可以轻松答对。喜欢我的作品记得点赞、收藏、关注哦!!!版权声明:除特别声明外,本博客所有文章均采用CCBY-NC-SA4.0许可协议。转载请注明来自Mic带你学建筑!如果本文对您有帮助,请给个关注和点赞。您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!