当前位置: 首页 > 图灵资讯 > java面试题> 能说下HTTP和RPC的区别吗?

能说下HTTP和RPC的区别吗?

来源:图灵教育
时间:2024-03-19 13:12:21
 

严格来讲,HTTP和不是一个层面的东西:

HTTP和RPC

  • HTTP(Hypertext Transfer Protocol)是一种应用层协议,主要强调的是网络通信;
  • RPC(Remote Procedure Call,远程过程调用)是一种用于分布式系统之间通信的协议,强调的是服务之间的远程调用。

一些RPC框架比如gRPC,底层传输协议其实也是用的HTTP2,包括Dubbo3,也兼容了gRPC,使用了HTTP2作为传输层的一层协议。

如果硬要说区别的话,如下:

HTTP

RPC

 

定义

HTTP(超文本传输协议)是一种用于传输超文本的协议。

RPC(远程过程调用)是一种用于实现分布式系统中不同节点之间通信的协议。

通信方式

基于请求-响应模型,客户端发送请求,服务器返回响应。

基于方法调用模型,客户端调用远程方法并等待结果。

传输协议

基于TCP协议,可使用其他传输层协议如TLS/SSL进行安全加密。

可以使用多种传输协议,如TCP、UDP等。

数据格式

基于文本,常用的数据格式有JSON、XML等。

可以使用各种数据格式,如二进制、JSON、Protocol Buffers等。

接口定义

使用RESTful风格的接口进行定义,常用的方法有GET、POST、PUT、DELETE等。

使用IDL(接口定义语言)进行接口定义,如Protocol Buffers、Thrift等。

跨语言性

支持跨语言通信,可以使用HTTP作为通信协议实现不同语言之间的通信。

支持跨语言通信,可以使用IDL生成不同语言的客户端和服务端代码。

灵活性

更加灵活,适用于不同类型的应用场景,如Web开发、API调用等。

更加高效,适用于需要高性能和低延迟的分布式系统。

微服务体系里,基于HTTP风格的远程调用通常使用框架如Feign来实现,基于RPC的远程调用通常使用框架如Dubbo来实现。