RPC框架和HTTP框架的区别

本文对比了RPC框架和HTTP框架的不同之处,详细介绍了两者在传输协议、性能损耗、服务调用功能等方面的差异,并探讨了各自适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RPC框架和HTTP框架的区别

有了HTTP协议,为什么还需要RPC远程过程调用协议?

由于RPC直接通过自定义TCP协议实现通信,而HTTP服务通过Http协议(Http在TCP之上),相当于多了一层,所以RPC的效率高于Http。http是超文本传输协议,包含的信息比较臃肿,网关之前一般使用http,服务之间的调用采用rpc。

一方面是因为RPC框架的效率比较高,还有一个原因是RPC包含了重试机制、路由策略、负载均衡策略、高可用策略、流量控制策略,使用http无法完成上述功能

我们通常采用的原则为:**向系统外部暴露采用HTTP,向系统内部暴露调用采用RPC方式。** 也就是说前后端之间(网关之前)用http,各个服务之间用rpc

区别:

RPC主要用于系统内部服务调用,传输效率高(基于tcp),性能消耗小(高效的二进制传输)

http一般用在网关之前来提供系统与系统的通信(http包含的臃肿信息),性能

1、传输协议

  • RPC框架:基于TCP协议,亦可以基于http协议(google的grpc基于http2实现)
  • HTTP框架:基于http协议

由于RPC直接通过自定义TCP协议实现通信,而HTTP服务通过Http协议(Http在TCP之上),相当于多了一层,所以RPC的效率高于Http。

2、性能损耗

  • RPC:高效的二进制传输
  • HTTP:大部分基于json实现,字节大小和序列化比较耗时。

3、服务调用功能

  • RPC:自带了负载均衡机制、流量控制等
  • HTTP:需要增加ngnix来提供负载均衡。

4、使用

  • RPC:经过配置,可以直接调用,像调用本地接口一样调用其他服务的接口
  • HTTP:需要拼接http请求的url,然后发起请求。

项目中每次使用HTTP都需要拼接url,不是很方便,而且在服务运行中,当资源所在的服务器改变了我们需要修改源码,然后编译打包、部署,比较麻烦。

个人见解:

http协议就是为了系统与系统之间通信(Client<—>Server)出现的,所以需要设置一些额外的信息:通信的协议,请求的方法、请求的参数等等。而RPC顾名思义远程过程调用,就是用在服务之间的调用所使用的,所以不需要想http一样引入过多的信息,因此RPC协议比较小,并且RPC使用二进制传输,而http使用json要在网络中传输需要进行序列化,RPC效率也就比较高。RPC还提供了一些针对服务之间调用的机制:负载均衡、流量控制等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值