一个管理数据分块和 L1/L2 缓存的 memcached 代理
Netflix 使用缓存有多种方式。有些人将其用作真正的工作集缓存,而其他人则将其作为其服务的唯一存储机制。还有人将其用作会话缓存。这意味着,有些服务在出现部分数据丢失的情况下仍能正常运行,而其他服务则会永久丢失数据,并开始提供备用服务。Rend 旨在补充 EVCache,这是 Netflix 使用的主要缓存解决方案。
Rend 的起源是 Memcached 的内存管理。内部,Memcached 保存了一组用于不同大小数据的块。块是逻辑上的页面组,启动时设置了固定大小。页面映射到物理内存,并根据块的数据大小进行分割。在 1.4.24 及之前的版本中,页面永久分配给特定的块,即使为空也不会释放。此外,如果 RAM 中的数据中有许多空间,则不会进行压缩,因此内存会随着时间的推移而变得非常碎片化。随着时间的推移,这种情况已经发生了变化,现在这个问题不像以前那样严重。
故事的第二部分发生在 Netflix 公司内部。每天晚上,一个大型批处理程序会在多个步骤中为我们的每位会员计算推荐内容。每个步骤都会将其输出加载到 EVCache 中。某一天,底层数据源发生了变化,导致一个批处理计算过程的输出大幅变化。当数据集
暂无开放 Issues,或尚未同步最近议题。