从功能层面来说,HTTP协议是一个应用层的超文本传输协议,它是万维网数据通信的一个基础,主要服务在网页端和服务端的一个数据传输上。而RPC是一个远程过程调用协议,它是定位在实现分布式应用之间的一个数据通信,屏蔽了通信的底层的复杂度,让我们开发者可以像调用本地服务一样去完成远程服务的一个调用,因此这两个协议在定位层面是完全不同的。
从实现层面来说,http协议是一个已经实现并且成熟的应用层协议,它定义了一些通信报文的格式
RPC只是一种通信协议的一个规范,并没有具体的实现,只有按照RPC通信协议规范去实现的通信框架,才是协议的真正具体的一个实现,因此我们可以在实现RPC框架的时候自定义报文通信的一个协议规范和自定义序列化的一个方式,或者自定义网络通信协议的一个类型等等。
因此从这个层面上来说,HTTP协议是一个比较成熟的应用层协议而RPC协议定义了不同服务之间数据通信的一个规范,HTTP协议和实现了RPC协议的框架都能去实现跨网络节点的一些通信,并且他们的底层都是使用的TCP协议做为通信基础的,但是由于RPC只是一种协议框架,我们只需要符合RPC协议的框架 都属于RPC框架,因此RPC的网络通讯协议层也可以使用HTTP协议去实现,比如OpenFeign。