rpc和http的区别

我的猫 832
左侧宽880
左侧宽880

http指的是客户端向服务器端的请求报文,rpc 是远程过程调用协议,使用具有标准语义的通用接口将 HTTP 请求定向到资源,这些语义可以被中间组件和提供服务的源机器解释。rpc的机制是根据语言API(language API)来定义的,而不是根据基于网络的应用程序来定义。

rpc和http有什么区别

rpc 和 http 之间的主要区别在于:使用具有标准语义的通用接口将 HTTP 请求定向到资源,这些语义可以被中间组件和提供服务的源机器解释。

结果是一个支持转换层和间接层的应用程序,独立于新闻来源,这是一个互联网规模、多个组织、对于可扩展性不可控的信息系统,很有用。

和....相比,rpc的机制是根据语言API(language API)来定义的,而不是根据基于网络的应用程序来定义。

HTTP 和 RPC 的优缺点

主要讲解HTTP和RPC的异同点,让大家更容易根据自己的实际情况选择更合适的方案。

传输协议

远程过程调用:可基于TCP协议,也可以基于HTTP协议

HTTP:基于HTTP协议

传输效率

远程过程调用:使用自定义 TCP 协议,可以让请求报文变小,或者使用 HTTP2 协议,它还可以很好地降低消息的音量,提高传输效率

HTTP:如果是基于HTTP1.1 份协议,请求中会包含很多无用的内容,如果是基于HTTP2.0,那么下面这个简单的包就可以作为RPC了,这个时候标准的RPC框架更多的是服务治理

性能消耗

远程过程调用:基于thrift可以实现高效的二进制传输

HTTP:大部分都是通过json实现的,字节大小和序列化耗时都比thrift更耗性能

负载均衡

远程过程调用:基本上自带负载均衡策略

HTTP:需要配置Nginx,HAProxy实现

服务治理

远程过程调用:可以做自动通知,不影响上游

HTTP:需要提前通知,修改 Nginx/HAProxy 配置

总结

RPC主要用于公司内部的服务调用,低性能消耗,传动效率高,便捷的服务管理。HTTP主要用于外部异构环境,浏览器接口调用,APP接口调用,第三方接口调用等。

标签: rpc和http的区别