{博学谷学习记录} 超强总结,用心分享|狂野架构师-RPC(RPC中涉及的关键技术点及调用流程)

本文详细介绍了RPC中的关键技术,包括序列化与通信协议,以及动态代理在调用流程中的应用。重点阐述了客户端和服务端如何通过代理对象进行无感知的远程调用,以及整个调用过程中的序列化、协议编码、网络传输和解码步骤。
摘要由CSDN通过智能技术生成

目录

1 RPC中涉及的关键技术点

1.1 序列化与通信协议

1.2 动态代理 

1.3,RPC调用流程

 2 总结

2.1 RPC中涉及的关键技术点

2.2 RPC请求调用的具体流程

1 RPC中涉及的关键技术点

1.1 序列化与通信协议

1.2 动态代理 

从代码的编写角度来看,引出第三个技术要点

上层开发者的角度

服务端开发者提供了一个业务接口(对外暴露)

并在服务端提供了接口的实现,客户端:需要调用接口的方法,底层的实现逻辑由RPC框架来完成

问题分析:

在客户端只有接口没有接口的实现,是不能进行工作的

也就是说在客户端也是要一个接口的实现的只不过是在客户端的接     口实现中并不提供接口方法的业务逻辑的实现,接口业务逻辑的实     现在远程

接口实现怎么来呢:

方法一,开发者针对这个接口在客户端提供一个默认的实   现,并把实现注入到指定的位置

在实现里面进行远程调用,包装远程调用的实现   的细节,序列化,协议约定等等操作

看似是没什么问题的,但是我们前面学RPC远程调用的理念是远程调用,是不需要我们上层开发者关注一些底层的调 用,不需要对底层的逻辑做额外的编码的

在实际业务中,我们可以有很多需要远程调用的业务场 景,每一个远程调用我们都自己去提供实现,显然不太合 理,不符合RPC的规范也太分担我们的额外的精力了

 远程调用想要真正的让上层开发者,无代码侵入性,无感 知的话,应该由RPC框架为远程调用的接口动态的生成一个 实现,在实现内部完成远程调用,并把实现注入到指定的 位置,才能做到让上层开发者无感知此技术的实现为


1.3 调用流程

首先客户端与服务端的网络是通的

上层开发者要干的事

1,服务端上层开发者提供一个接口对外暴露,并在服务端提供了接口的实现

2,消费者这边调用接口的方法即可

rpc框架要干的事

客户端

1,在项目初始化的时候在客户端这一侧针对于接口,动态的生成接口的代理对 象并注入到指定置

2,当客户端执行到接口的方法的时候,在这个方法执行的背后就要执行一次 RPC网络调用

   执行流程:

   客户端:

   首先请求会走到接口的代理实现类上

   在代理的实现类中,组装请求对象,并封装相应的request信息等并对要发送的信息进行序列化,让它能在网络中传输,客户端要想将数据发送给服务端需要有应用层协议的支撑,就是根据客户端与服务端的约定信息(协议)进行协议的编码,就是把序列化的数据放到协议中的指定位置,不提前做好协议约定客户端就不知道怎么解析我们的数据,可能导致请求发送失败,我们的序列化的数据和协议的数据,最终是要发送到网络中去的,因此就涉及一些底层网路通讯的一些工作,因此需要网络模块(内核层面的东西,网卡,前面所学的网络编程,站在操作系统的视角来看网络编程,由内核将数据发送)来帮助我们将数据发送到网络中去。

服务端:

    首先会由服务端的rpc框架的网络模块先从网络中接收到数据,然后在根据应用层协议的约定对协议进行解析(解码),解析完以后在根据协议的约定从指定位置获取到请求的数据,并对数据进行反序列化获取到我们想要的数据

拿到数据以后,我们就可以根据请求的数据去执行相应的方法即可,一般由调用模块来完成相应的工作,当执行完业务的接口方法以后,会给我返回相应的业务数据,此时我们就可以封装相应的响应数据了,响应数据同客户端发送网络请求时一样的,将响应信息进行序列化,并进行协议的编码,在由网络模块将数据发送到网络中

客户端会先由网络模块接收到数据,并对协议进行解码,解码后获取到响应的数据,并对数据进行反序列化获取到真正的响应数据,并执行后续的操作即可。

 

 2 总结

2.1 RPC中涉及的关键技术点

序列化技术,通信协议,动态代理

2.2 RPC请求调用的具体流程

1,客户端调接口走到代理类,组装请求并序列化,然后协议编码并发送

2,服务端收到请求,进行协议解析以及反序列化拿到请求参数

3,服务端根据请求参数调用接口实现,然后组装响应

4,响应按同样的方式返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值