乐趣区

超时管理器如何实现超时管理

超时管理器,用于实现请求回包超时回调处理。
每一个请求发送给下游 RPC-server,会在上下文管理器中保存 req-id 与上下文的信息,上下文中保存了请求很多相关信息,例如 req-id,回包回调,超时回调,发送时间等。

超时管理器启动 timer 对上下文管理器中的 context 进行扫描,看上下文中请求发送时间是否过长,如果过长,就不再等待回包,直接超时回调,推动业务流程继续往下走,并将上下文删除掉。

如果超时回调执行后,正常的回包又到达,通过 req-id 在上下文管理器里找不到上下文,就直接将请求丢弃。
画外音:因为已经超时处理了,无法恢复上下文。

无论如何,异步回调和同步回调相比,除了序列化组件和连接池组件,会多出上下文管理器,超时管理器,下游收发队列,下游收发线程等组件,并且对调用方的调用习惯有影响。
画外音:编程习惯,由同步变为了回调。

异步回调能提高系统整体的吞吐量,具体使用哪种方式实现 RPC-client,可以结合业务场景来选取。

退出移动版