RPC和HTTP的区别?

目录

1. 概念不一样

2. 请求流程不一样

2.1 编(解)码层

2.2 协议层

2.3 网络传输层

3. RPC的优势与不足

4. RPC和HTTP的使用场景


这里先声明,这里RPC对比的是HTTP1和HTTP1.1,不包括HTTP2,因为HTTP2做了一部分改动,性能相比于HTTP1.1已经得到了提升。

1. 概念不一样

HTTP是应用层协议

RPC是远程调用方式,它是调用方式,对应的是本地调用

所谓的RPC协议,实际上是基于TCP,UDP甚至HTTP2改造后的自定义协议。所以有时候说它是一个协议也不能算错,很多公司都有自己自定义的RPC协议。

2. 请求流程不一样

2.1 编(解)码层

网络传输前,需要结构体转化成二进制数据——>序列化

在HTTP1.1中,序列化协议是JSON。优点:非常的直观;缺点:占的空间大,传输速率较慢。

在RPC中,序列化协议是protobat。优点:数据包小, 传输速率快,序列化与反序列化效率快。

2.2 协议层

HTTP和RPC都是基于TCP传输,都会有消息头和消息体,区别在于消息头。

HTTP1.1

优点:灵活,可以定义很多字段。

缺点:包含许多为了适应浏览器的冗余字段,这些字段在内部服务其实是用不到的。

RPC

优点:可定制化,自定义必要字段即可;所以可以摒弃HTTP Header中的冗余字段,比如浏览器的各种行为。

2.3 网络传输层

HTTP和RPC本质都是基于Socket通信。

HTTP1.1

建立一个TCP长连接,设置keep-alive长时间服用这个连接。

框架中会引入成熟的网络库,给HTTP加连接池,保证不只有一个TCP连接可用。

RPC

建立TCP连接池,框架也会引入成熟的网络库来提高性能。

gRPC基于HTTP2,拥有多路复用,优先级控制,头部压缩等优势。

3. RPC的优势与不足

优点:

(1)相较于HTTP1.1,数据包更小,序列化更快,传输速率很高。

(2)基于TCP或HTTP2的自定义RPC协议,网络传输性能比HTTP1.1更快。

(3)适用于微服务架构,微服务集群下,每个微服务指责单一,有利于多团队的分工合作。

缺点:

(1)RPC协议本身无法解决微服务集群的问题,例如:服务发现,服务治理等,需要工具来保障服务的稳定性。

(2)调用方对服务端的RPC接口有很强的依赖性,需要有自动化工具,版本管理工具来保证代码级别的强依赖性。例如,stup桩文件需要频繁更新,否则接口调用方式可能会出错。

4. RPC和HTTP的使用场景

微服务架构下,多个内部微服务调用频繁,使用RPC。

对外服务,单体服务,为前端提供的服务,适用于HTTP,特别是HTTP2性能也很好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值