1.不在一层

rpc在7层模型中的会话层,http在应用层,这导致了两者的根本目的就不同

rpc的作用就是实现远程调用网络主机上的函数,而http的作用有很多,根本作用是使用http在浏览器和服务器之间传输文档

2.rpc包的序列化和反序列化,传输协议

http和rpc最大的区别还是在传输协议上

http协议(http1.1)中一个http包由head和body组成,显然我们序列化之后的文件应该放在body中,但http协议的头文件有很多冗余信息,降低了信道传输速率

一般rpc使用自定义的tcp协议,一般只加上了包序号,包名称和包长

但grpc使用了http2.0协议,因为http2.0协议解决了这些问题,优化了编码效率

3.服务可用性和效率优化

使用http完全可以调用另一个应用的函数,只要这个函数暴露并和一个url对应,我们就可以用get或post上传参数并收到结果

但rpc不止有传包这一通信过程还有如下功能

超时处理,服务发现,熔断,动态代理等等