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

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

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

若是超时回调执行后,正常的回包又到达,经过req-id在上下文管理器里找不到上下文,就直接将请求丢弃。
画外音:由于已经超时处理了,没法恢复上下文。线程

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

异步回调能提升系统总体的吞吐量,具体使用哪一种方式实现RPC-client,能够结合业务场景来选取。队列

相关文章
相关标签/搜索