Rayson API 框架分析系列之4:RPC调度原理

本系列之1: 简介
本系列之2: API服务开发
本系列之3: RSON序列化格式
本系列之4: RPC调度原理👈
本系列之5: NIO实现原理
本系列之6: 客户端动态代理原理
本系列之7: 注解处理器(APT)原理

本文介绍Rayson框架底层实现RPC(Remote-Procedure-Call)调度的原理。

RPC基本概念

Rayson RPC基本概念图

上图描述了Rayson框架底层实现RPC的基本概念,说明如下:

  • 客户端和服务器端默认使用长连接(Connection),连接建立后会被保持,客户端请求会通过同一个连接发送到服务器端,直到该连接因不活动而超时进而被关闭。
  • 客户端和服务器的应用层通信协议采用标准的HTTP1.1协议。
  • 请求通过HTTP的URL地址来指定目标API。通过GET的URL参数或者POST的data来传递参数。
  • 响应通过HTTP Status Code来返回响应码,通过HTTP Body来返回结果。
  • 图中小方块1,2,3表示不同的请求,对应不同的响应。响应不必和请求一样的时序。框架通过HTTP请求头中的RID来区分不同的请求和响应。同一请求对应的响应,其请求头RID的值相同。这种异步的设计可以大大提高API服务后台的吞吐量。
  • Rayson的Java客户端通过动态代理的方式,直接通过调用定义API协议的接口来执行RPC,非常简单明了。

RPC基本原理

Rayson RPC基本原理图

上面的流程图描述了Rayson框架底层实现RPC调度的基本原理,说明如下:

  1. 客户端使用HTTP协议发送RPC请求给服务器。
  2. 服务器端网络侦听组件Listener接收客户端请求。
  3. Listener组件把接收到的请求添加到Request Manager中去。
  4. Worker组件持续地把请求从Request Manager中取出。
  5. Worker取出请求之后开始处理请求,把请求交给Service Manager处理。
  6. Service Manager调用Filter Chain组件来对请求进行过滤处理(Filter),关于过滤器,请参考本系列之2: API服务开发的“过滤器”部分。
  7. Filter Chain对请求进行一系列的过滤处理,其中一步会调用Service Filter组件执行请求对应的目标API服务的JAVA方法(Method),得到请求的处理结果。
  8. 把API服务处理结果形成响应结果,把响应添加到Request Manager中去。
  9. 然后往Listener注册写事件,Listener开始往客户端写数据。
  10. 最后,客户端接收到服务器端的响应数据。完成整个RPC调用的过程。

过滤器工作流程

上文说到,Rayson服务器接收到一个RPC请求后,把请求交给过滤器链(Filter Chain)来执行处理。下图描述过滤器链处理请求的流程。

过滤器链工作流程图

整个流程说明如下:

  • 按顺序先后执行两条过滤器链:HTTP Filter ChainService Filter Chain,分别执行HTTP协议层面的过滤处理和API服务层面的过滤处理。
  • 第一条过滤器链HTTP Filter Chain的处理流程如下:
    1. 执行系统内置过滤器First HTTP Filter,初始化HTTP请求对象以及RPC上下文环境。
    2. 执行开发者自定义的HTTP过滤器。可能有零个或者多个。
    3. 执行系统内置的过滤器Last HTTP Filter,它首先根据HTTP请求找出对应的API服务层面的过滤器链,然后初始化服务请求对象,最后调用服务层过滤器链执行对服务请求的过滤处理。
  • 接着执行第二条过滤器链Service Filter Chain的处理,流程如下:
    1. 执行开发者自定义的服务过滤器。可能有零个或者多个。
    2. 执行系统内置的过滤器Last Service Filter,使用服务请求对象的API参数调用对应的API服务Java方法(Method),并把方法执行结果设置到服务响应对象中去。
  • 过滤处理流程结束。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值