一文讲清 RPC是什么?和HTTP什么关系?

RPC是什么

RPC:Remote Procedure Call,远程过程调用
是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。
为什么要用RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同的系统间的通讯,甚至不同的组织间的通讯,由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用。
也便于微服务的划分,根据业务模块做了不同的拆分,像用户的服务不用我这个小组负责,我这小组只要写订单服务就行了。

HTTP和RPC

在这里插入图片描述
图源:链接

HTTP和RPC不是对等的概念

RPC是一个完整的远程调用方案,它包括了:接口规范+序列化反序列化规范+通信协议等。
HTTP只是一个通信协议,工作在OSI的第七层,不是一个完整的远程调用方案。
所以可以说 RPC是能够基于 HTTP 实现,也可以不基于,基于更下一层的 TCP/ UDP协议
且主要有以下两点:

  • HTTP是一种国际语言,大家都用的协议,所以相对于内部使用的过于冗余,而内部使用往往可以通过牺牲可读性换取更高的效率。而RPC往往是指与框架相关的定制化协议,及上层的IDL(可以理解为内部接口);(框架有什么:gRPC、brpc、thrift、srpc等;IDL有什么:protobuf、thrift等;)
    所以,如果我们更习惯用 HTTP,那么只是因为它更通用;如果我们更习惯用RPC,那么只是因为框架使得我们操作IDL更方便;
  • 我们既可以用HTTP client访问RPC server,也可以用RPC client发出HTTP请求;

更通俗的讲
基于HTTP实现的 RPC 好比普通话,而基于TCP/UDP自定义的 RPC 好比团伙内部黑话
讲普通话,好处就是谁都听得懂,谁都会讲。

讲黑话,好处是可以更精简、更加保密、更加可定制,坏处就是要求“说”黑话的那一方(client端)也要懂,而且一旦大家都说一种黑话了,换黑话就困难了。

且很多RPC框架包含了重试机制,路由策略,负载均衡策略,高可用策略,流量控制策略等等。 如果应用进程之间只使用HTTP协议通信,显然是无法完成上述功能的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值