资讯专栏INFORMATION COLUMN

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

endiat / 2840人阅读

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

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

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

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

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75259.html

相关文章

  • Java多线程进阶(六)—— J.U.C之locks框架:AQS综述(1)

    摘要:在时,引入了包,该包中的大多数同步器都是基于来构建的。框架提供了一套通用的机制来管理同步状态阻塞唤醒线程管理等待队列。指针用于在结点线程被取消时,让当前结点的前驱直接指向当前结点的后驱完成出队动作。 showImg(https://segmentfault.com/img/remote/1460000016012438); 本文首发于一世流云的专栏:https://segmentfau...

    cocopeak 评论0 收藏0
  • 分布式 - RPC异步调用

    摘要:负载均衡,故障转移与同步调用的连接池思路基本相同。而由于异步调用,端会很快返回,所以端多个服务同时路由到同一个的情况是很少的,因此一个服务的一个只需要建立少量的连接。 要实时就用同步,要吞吐率就用异步。 同步调用 流程略 实现负载均衡:连接池中建立了与一个RPC-server集群的连接,连接池在返回连接的时候,需要具备负载均衡策略。实现故障转移:连接池中建立了与一个RPC-server...

    lewinlee 评论0 收藏0
  • TiDB 在转转的业务实战

    摘要:而批处理,可以复用一条简单,实现批量数据的写入或更新,为系统带来更低更稳定的耗时。批处理的简要流程说明如下经业务中实践,使用批处理方式的写入或更新,比常规或性能更稳定,耗时也更低。 作者:陈维,转转优品技术部 RD。 开篇 世界级的开源分布式数据库 TiDB 自 2016 年 12 月正式发布第一个版本以来,业内诸多公司逐步引入使用,并取得广泛认可。 对于互联网公司,数据存储的重要性不...

    hover_lew 评论0 收藏0

发表评论

0条评论

endiat

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<