You could find original post at The Morning Paper. 本文主要是对The Morning Paper的翻译。
在 The Morning Paper 上介绍了一篇来自OSDI‘18的最新文章。文章提出了一种针对Tail Latency的解决方案,使用Dynamic Cache的方法针对性的解决Tail Latency。这套系统被命名为RobinHood。
不知道的看了标题还以为这是Robinhood提出来的解决方案=-=
Tail Latency
对于那些Frequency比较低的访问数据,我们就会看到如图的Tail, 而对这个Tail里面的数据的访问都会导致非常高的延迟,是为Tail Latency。
传统解决方案一般有使用冗余的请求,合理使用Scheduling,auto-scaling 和 容量供给,和近似计算。
而RobinHood使用了Cache来解决Tail Latency。
RobinHood
RobinHood将额外的Cache空间分配给正在遭受高Tail Latency的后端服务器。
由于Tail Latency是不断变化的,受多种因素的影响,所以我们不能简单的静态的分配多余的Cache。
RobinHood具体的分配方法是:每5秒的时间段向每一个后端抽取1%的Cache空间。并重新分配给Cache不足的后端。在每个时间段中,它会追踪每一个Request的Latency,并会记录下来时间最长的后端ID。在每一个时间段的最后,RobinHood计算每一个后端的
Request blocking count (RBC) - the number of times it was responsible for the slowest query.
有的后端利用新的Cache的速度很慢,RobinHood还会监控分配Cache和使用的Cache之间的差距,如果超过30%,则会忽视对应后端的RBC。
利用Load Balancing,RobinHood保证分配决定对每个服务器是locally的。RobinHood的控制器之间相互交换RBC数据来放置Cache分配不能够收敛。对于5秒的时间段,实验收敛实践为30min。
大概就是这样=-=