RPC的通信流程?

 如上图,OrderService(订单业务)和PaymentService(支付业务)是微服务中的两个业务模块,一个订单业务需要调用支付业务中的支付功能(方法),那么在微服务RPC中,他们是如何完成通信的呢?

1. 我们的编译工具通常会把PaymentService业务模块中它所能提供的函数编译生成一个stup桩文件,相当于一个静态函数库,这个函数库就会被OrderService的Client端引入,这样OrderService业务模块就实现了对PaymentService业务模块中函数的映射,相当于在OrderService业务模块本地就有了这么一个静态函数库,方便我们的OrderService后续的调用。

2. 我们知道,在网络底层所有的数据都是二进制数据,所以有一步就是我们需要把请求体序列化成一个二进制的数据,就是图中的第一步;

3. 然后经过第二步要约定好数据头,元数据,消息体等,保证请求与相应一一映射,对应图中的第二步;然后我们根据一些成熟的网络库去进行TCP或UDP的传输,在不同的公司也会有自定义的RPC协议。

4. 第四步第五步和第六步点高档于是反过来的一个过程,接收到消息之后。再根据协议把头数据,消息体等得到,再反序列化把二进制数据转化成语言可以识别的结构体。

5. 第七步第八步第九步再反过来,将查询到的结果数据或完成的动作序列化成二进制数据,规范头数据,数据体。

6. 之后,再通过网络传输给调用方,对应第十步。

7. 然后又是同样的操作,取出消息头消息体,再反序列化成语言可以识别的数据,将数据返回;对应图中的第11,12,13步。

当我们在面试过程中遇到时,可以遵循下面这幅图来回答,挑出重点来回答。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值