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的区别