从三个层面:
一、功能层面
Http协议:是应用层的的超文本传输协议,万维网数据传输通信的一个基础,
主要在于网页端和服务端之间一个数据传输上。PRC协议:是一个 远程过程调用协议,它是定位在实现(不同计算机应用之间)的一个数据通信,屏蔽了通信的底层复杂度,让我们的开发者,能够像调用本地服务一样,去完成远程服务的一个调用,
因此,这两个协议,在定位层面,他是完全不同的
二、 实现层面:
Http协议:它是一个已经实现,并且成熟的应用层协议,它定义了通信报文的一些格式
像: Request Body、Request Header、Response Body、Response Header
符合这样一个协议特征的 通信协议,才是Http协议
RPC协议: RPC只是通信协议的一个规范,它并没有具体的实现,只有按照RPC通信协议规范,去实现的通信框架,才是协议真正具体的一个实现。
比如像:Dubbo、grpc.....都是高性能远程过程调用的框架。
因此,我们在实现RPC框架的时候, 自定义报文通信的一个协议规范和自定义序列化方式,或者自定义网络通信通信协议的类型等等。
三、应用层面:
Http协议和实现了RPC协议的框架,都能够去实现跨网络节点之间的一些服务通信。
并且他们底层 都使用了一个TCP协议作为通信基础,但是由于RPC协议只是一种标准协议,我们只需要符合RPC协议的这个框架,都属于RPC框架
因此,RPC网络通信协议层呢,也可以使用http协议来去实现,例如:grpc、OpenFeign,它底层都采用了http协议,作为一个通信的基础
知识补充:
Dubbo是阿里巴巴公司开源的一个Java高性能优秀的服务框架。它使得应用可以通过高性能的RPC实现服务的输出和输入功能,具有良好的可扩展性和灵活性。Dubbo可以与Spring框架无缝集成,支持多种协议,包括Dubbo协议、REST协议和gRPC协议等。Dubbo提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
gRPC则是由Google开发的高性能、通用的开源RPC框架。它主要面向移动应用开发,并基于HTTP/2协议标准设计。gRPC使用Protocol Buffers(ProtoBuf)作为接口定义语言(IDL),支持多种开发语言,并具有高效的序列化和反序列化性能、双向流和流控制等特性,非常适合在分布式系统中使用。它可以高效地连接数据中心内和跨数据中心的服务,支持负载平衡、跟踪、运行状况检查和身份验证。