RPC是什么

RPC的全称是Remote Procedure Call,远程过程调用。简单地说,即让你在本地调用远端服务器使你在本地调用远端的函数的体验让你感觉是在本地调用函数一样的体验。所以RPC是做什么的?RPC是帮助我们屏蔽远端调用的过程中网络的细节使我们更专注于业务逻辑,其次是屏蔽远端调用和本地调用的区别,让我们感觉就是调用本地的方法。

简易RPC通信流程

RPC是一个远程调用,为了保证其可靠性我们一般都采用TCP传输,我们常用的HTTP请求也是建立在TCP上的。我们知道网络传输的数据必须是二进制数据。所以我们发送方在发送前需要把数据转二进制,这个过程称为序列化。同样的,接收方接受到二进制数据之后,需要对数据进行反序列化。

当然RPC不仅可以解决通信问题,还是可以用于其他常见,例如分布式缓存,数据库等。如下图例子:

由此可见,RPC 确实是我们日常开发中经常接触的东西,只是被包装成了各种框架导致我们很少有意识到这个RPC。

为什么不用HTTP

我们知道HTTP和RPC都是应用层协议,那我们为什么不直接用HTTP。原因在于,1HTTP协议的数据包大小相对于请求数据本身要大得多,加入了很多我们不需要的内容例如换行符之类的。2,HTTP协议属于无状态协议,客户端和服务器每次请求都要进行重新连接响应后再断开,对于高校RPC来说这是不符合要求的。

RPC协议格式

可以看到,我们协议头标志了整体长度和头长度,这样我们能精准定位处协议体的长度。其次是协议头有拓展字段,这样我们可以对未来协议头添加新内容实现可以拓展。

RPC序列化中我们应该注意:

1. 对象要尽量简单,没有太多的依赖关系,属性不要太多,尽量高内聚;

2. 入参对象与返回值对象体积不要太大,更不要传太大的集合;

3. 尽量使用简单的、常用的、开发语言原生的对象,尤其是集合类;

4. 对象不要有复杂的继承关系,最好不要有父子类的情况

最后,我们可以通 过动态代理技术,屏蔽 RPC 调用的细节,从而让使用者能够面向接口编程。

总结

RPC 是解决应用间通信的一种方式,而无论是在一个大型的分布式应用系统 还是中小型系统中,应用架构最终都会从“单体”演进成“微服务化”,整个应用系统会被 拆分为多个不同功能的应用,并将它们部署在不同的服务器中,而应用之间会通过 RPC 进 行通信,可以说 RPC 对应的是整个分布式应用系统,就像是“经络”一样的存在。

RPC,全称为Remote Procedure Call,即远程过程调用,是一种计算机通信协议,它允许调用另一个地址空间(通常是一个共享网络的另一台计算机上)的过程或函数,就像调用本地过程或函数一样,而无需显式地编写远程调用的代码。 RPC涉及两个不同的进程,一个是客户端进程,另一个是服务器进程。当客户端需要调用一个远程过程时,它将发送一个请求消息到服务器进程,服务器进程接收到请求消息后,执行请求的过程,并将结果返回给客户端。 RPC的实现涉及多个相关技术,包括: 1. 序列化框架:序列化是指将数据结构或对象转换为可传输格式的过程,例如XML、JSON、Protobuf等。在RPC中,序列化框架用于将参数和返回值序列化为字节流,并在客户端和服务器之间传输。 2. 传输协议:传输协议是指在RPC中用于传输消息的协议,例如TCP、HTTP、UDP等。传输协议必须提供可靠的消息传输,支持数据加密和压缩等特性。 3. 远程调用框架:远程调用框架是指在RPC中用于定义和实现远程服务接口的框架,例如Apache Thrift、gRPC等。 4. 服务注册与发现:服务注册与发现是指在RPC中用于管理和查询远程服务的框架,例如ZooKeeper、Consul等。 综上所述,RPC是一种基于网络的分布式系统通信协议,通过序列化和传输协议将客户端和服务器之间的消息传递,实现远程过程调用。同时,RPC的实现涉及多个相关技术,如序列化框架、传输协议、远程调用框架和服务注册与发现等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值