RPC:Remote Procedure Call远程过程调用协议,目标是是让开发人员在进行远程方法调用的时候 ,就像调用本地方法一样,不 需要去额外完成这个交互去做过多的编码。所以为了达到这个目的,就有了这样一个RPC模型。Client stub它是作为客户端的一个存根,去代理客户端的请求,然后通过pack做序列化,最后通过远程通信协议,把序列化的数据传输到服务器上。注意,这里用到了远程通信协议,这个远程通信协议既可以使用TCP协议去传输,也可以使用HTTP协议去传输。所以,通过这个一个模型,就实现了RPC这样一个目标:让开发人员在没有任何感知的情况下,去实现远程方法调用。 而HTTP协议是为了Web浏览器和Web服务器之间的通信去 设计的一个通信协议,它的底层仍然采用TCP协议传输,而在TCP协议之上自己定义了通信报文的一个规范。我们可以使用HTTP协议来实现跨网络节点的数据传输。所以,这就是这两个协议的一个特点。 所以,通过这个的一个分析,我们发现:RPC协议并不是一个通信协议,HTTP协议才是通信协议。而RPC协议定义的是一个远程过程调用协议,它的底层通信去实现数据传输,它得依赖一一些成熟的通信协议,比如HTTP协议,甚至我们可以直接去在TCP协议之上去做自定义的报文协议,这些都可以。所以我才在前面说,RPC和Http这两个并不是同一个维度的协议,这两者并没有可比性。