Presto之 Exchange和访问MetaStore的反压机制

一. 前言

      反压(backoff)是指网络请求如果失败时,将适当削弱访问的请求流量,避免造成更大拥塞。在Presto中,支持Exchange和MetaStore两种请求的自动反压,本文主要介绍在Presto中,这两种反压是如何实现的。

二. Presto中Exchange反压

       Presto中各个Stage和节点间数据交换完全通过exchange算子实现,exchange算子有大量的数据传递,因此Presto在其实现中增加了网络反压机制。该实现是在Backoff类中实现的,主要原理是通过连续失败次数逐步增加请求的延时,延迟时间的梯度的核心代码为:

       Presto将根据上述的请求失败和延迟梯度的映射关系,如果发生一次网络请求失败,则延时50毫秒再请求第二次,连续2次失败,则延时100毫秒再请求下一次,依次类推。

       背压的实现也很简单,主要核心代码如下所示:

        当请求成功时,Presto请清零失败次数和延时时间,直到再发生请求失败时候才触发下一次延迟请求。

三. Presto访问Metastore反压

       Presto访问Metastore也支持反压实现流量管控,默认延迟时间是1s,延迟时间的增加系数为2,每次失败,都会按照2的倍数的延迟时间进行延迟访问。比如一次失败,延时1s再发送下一次请求,连续两次失败,延迟2s再发送下一次请求,连续3次失败,延迟4秒再发送下一次请求....依次类推,最大的延迟时间为延迟30s。

      在Presto中,访问MetaStore的backoff机制和Exchange的backoff机制实现原理不太一样,Presto访问MetaStore的backoff的核心实现代码如下所示:

      实现原理就是根据失败次数,求取对应的睡眠时间,直接睡眠即可。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值