HTTP通信与RPC通信区别

概念
HTTP,首先回顾一下计算机的七层协议:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,tcp属于传输层协议,http是建立在tcp之上的应用层协议
RPC,即 Remote Procedure Call(远程过程调用),一种进程间的通信方式,允许像调用本地服务一样调用远程服务(rpc就像方法之间调用一样,很简单)

1、灵活性
RPC,要求服务器和客户端都采用相同的框架,相同语言
HTTP,跨语言、跨平台,更加灵活

2、传输协议
RPC,可以基于TCP协议,也可以基于HTTP、UDP等协议
HTTP,基于HTTP协议

3、性能消耗,主要在于序列化和反序列化的耗时
RPC,可以基于thrift实现高效的二进制传输
HTTP,大部分是通过json来实现的,字节大小和序列化耗时都比thrift要更消耗性能

4、网络开销
RPC,长连接,不必每次通信都要像http一样去3次握手什么的,减少了网络开销
HTTP,短连接

补充说明:

  1. 短连接: 指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送
  2. 长连接( keep-alive ): 指在一个连接上可以连续发送多个 数据包 ,在连接保持期间,如果没有数据包发送,需要双方发链路检测包
  3. 通俗的讲:
    (1)长连接就像是一通不挂机的电话:双方一直在线,随时可以通话,当然前提是你有足够的话费
    (2)短连接就相当于日常电话:当你有事的时候就给对方打电话,没有事情则及时挂断,下次有事情则重新打电话

参考:
link1
link2(说明:以上网络开销总结是正常使用,不要过度探讨长连接还是短连接,rpc就是指常用的rpc框基于tcp的协议,http就是常用的web调用服务过程的协议,其实tcp和http都有各自的长链接和短连接,有精力可以继续探讨…)

5、负载均衡
RPC,基本都自带了负载均衡策略(封装了“服务发现”,“负载均衡”,“熔断降级”一类面向服务的高级特性)
HTTP,需要配置Nginx,HAProxy来实现

6、服务治理(下游服务新增,重启,下线时如何不影响上游调用者)
RPC,能做到自动通知,不影响上游
HTTP,需要事先通知,修改Nginx/HAProxy配置

总结:

RPC,主要用于公司内部的服务调用,性能消耗低,传输效率高,服务治理方便(RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作)
HTTP,主要用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值