欢迎大家来到IT世界,在知识的湖畔探索吧!

欢迎大家来到IT世界,在知识的湖畔探索吧!
RPC框架在分布式架构中占据了非常重要的位置,国内大家使用比较多的,比如:以Dubbo为代表的RPC框架,之前我就讲过不要仅仅满足于会使用,你还需要深入了解背后的原理,特别以阿里为代表的大厂,经常喜欢问RPC框架的实现原理,以及RPC工作流程等问题。
以下我将分别从如下四个方面详解RPC@mikechen
什么是RPC?
RPC,全称是Remote Procedure Call,翻译过来就是远程通信调用,它使得一个程序可以请求另一个程序或计算机上的某个服务的执行。
与本地调用类似,RPC的调用方可以通过发送请求来调用远程服务,并等待远程服务返回结果。
说简单点,就是可以像调用本地方法一样,可以调用远程服务器的方法。
为什么需要RPC?
比如早期一个应用Java War包,将所有功能都打包,部署在一个单机服务器。
随着业务的快速发展,业务越来越多、子系统也越来越多时。
比如:淘宝的交易系统、商品系统、用户系统、评价系统…上百个系统的出现。
这个时候,你会发现技术已经成了业务的瓶颈,急需把业务单独抽离出来,各自单独部署,应用系统一旦涉及到拆分部署,问题就来了。
急需一种高效的应用程序间的通讯手段来完成这种需求,这就会涉及到远程调用。
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
此时,用于提高业务复用及整合的 分布式服务框架(RPC),提供统一的服务是关键。
所以,统一RPC框架来解决提供统一的服务。
RPC的实现原理
RPC(Remote Procedure Call)的实现原理通常包括以下几个步骤:
1.定义接口
首先需要定义接口,包括接口名称、方法名称和参数类型等信息,以便服务提供者和服务消费者进行通信。
2.建立通信
然后要解决通讯的问题:即A机器想要调用B机器,首先得建立起通信连接。
3.通信协议
RPC框架通常使用TCP或HTTP等协议进行通信。
比如:TCP协议是一个面向连接的协议,可以保证数据的可靠性。
4.网络传输
序列化和反序列化:在进行远程调用时,需要将数据打包成二进制格式进行传输。
服务提供者和服务消费者需要使用相同的序列化和反序列化方式将数据转换成二进制格式,以及从二进制格式中解析出数据。
5.远程过程调用
服务消费者向服务提供者发起远程调用请求,包括接口名称、方法名称和参数信息等。
服务提供者接收请求后进行处理,并将结果返回给服务消费者。
在整个RPC调用过程中,需要进行序列化和反序列化、网络通信、负载均衡和故障转移等操作。
RPC调用全过程
1、服务消费者(client客户端)通过本地调用的方式调用服务
2、客户端存根(client stub)接收到调用请求后负责将方法、入参等信息序列化(组装)成能够进行网络传输的消息体
3、客户端存根(client stub)找到远程的服务地址,并且将消息通过网络发送给服务端
4、服务端存根(server stub)收到消息后进行解码(反序列化操作)
5、服务端存根(server stub)根据解码结果调用本地的服务进行相关处理
6、本地服务执行具体业务逻辑并将处理结果返回给服务端存根(server stub)
7、服务端存根(server stub)将返回结果重新打包成消息(序列化)并通过网络发送至消费方
8、客户端存根(client stub)接收到消息,并进行解码(反序列化)
9、服务消费方得到最终结果
以上
更多分布式架构系列、阿里架构师进阶系列,请查看以下文章:
阿里架构师进阶从0到1全部合集(建议收藏)
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/121530.html