[译] Cache warming: Agility for a stateful service (一)

栏目: 后端 · 发布时间: 5年前

内容简介:图 OWLIE by Mickael Lelièvreby Deva Jayaraman, Shashi Madappa, Sridhar Enugula, and Ioannis Papapanagiotou

[译] Cache warming: Agility for a stateful service (一)

图 OWLIE by Mickael Lelièvre

by Deva Jayaraman, Shashi Madappa, Sridhar Enugula, and Ioannis Papapanagiotou

译: 麦芽面包

原文:

https://medium.com/netflix-techblog/cache-warming-agility-for-a-stateful-service-2d3b1da82642

EVCache现在是Netflix平台的一个基础部分(我们叫它一层),保存了PG级的数据。我们的缓存层服务了包括登录,个性化,搜索,回放等许多场景。它是由千记的节点和百记的集群组成,由于我们的用户增长所以它需要经常常规性地进行扩容。为了满足我们对缓存的需求,我们最近讨论了应用数据缓存的进化:从RAM到SSD。

缓存的存储能力可以通过横向或纵向扩展(一些情况是从RAM到SSD)。许多服务每天进行千亿级别的查询,我们缓存基础设施的网络能力。当我们由于存储或网络的原因需要对缓存进行扩展时,我们的方式是提供一个新的空缓存,双写到老缓存和新缓存中,然后让数据在老集群中的TTL到期时失效。这个方法工作的很好。但当每次扩容时,我们都需要在TTL区间关注老缓存和新缓存集群。这个方式对于有些集群中存在不过期的item或一些会变化的item会有问题。并且在节点上自然地预热数据会导致在缓存替换时出现一些数据丢失。

[译] Cache warming: Agility for a stateful service (一)

图1. 新部署的EVCache数据路径

为了解决以上提到的问题,我们引入了EVCache缓存预热设施,它具备以下能力:

复制预热:一种从一个已存在的节点尽可能快的将数据复制到新节点并且不影响客户端使用已存在的节点的机制。

实例预热:一种将当前节点替换或停止后能使用非当前节点的数据来进行启动的机制。

Cache Warmer

设计缓存预热系统的目标是:

  • 减少当前EVCache客户端的网络影响

  • 最小化当前EVCache节点的内存和磁盘使用。

  • 减少预热时间

  • 对于何时(高峰/低峰)进行预热没有限制。

之前的方法

我们试验了几种设计方式来达到这些需求。

Piggybacking on Replication

Netflix的云部署模型是 主-主,所以我们需要保证在AWS的三个region中同步所有EVCache集群。我们需要建一个使用自定义Kafka的基于多region的复制系统。在我们最初的迭代中,我们考虑可以使用Kafka的队列消息来对新节点进行预热。但是,一个问题是这个方式需要我们在TTL过期前(可能几周)存储所有的key,这样成本较高。我们也遇到了key的重复复制问题,尤其是过期的那种。

微信公众号「麦芽面包」, id darkjune_think

开发者 / 科幻爱好者 / 硬核主机玩家 / 业余翻译家 / 书虫

交流 Email: zhukunrong@yeah.net


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

社交红利

社交红利

徐志斌 / 北京联合出版公司 / 2013-8 / 42

如今的互联网,社交网络已占据了主要的位置。如腾讯微博、微信、QQ空间、人人网、新浪微博、唱吧、美丽说、啪啪等等,都可以算是社交网络,将大部分活跃的人们聚集起来,通过文字、图片、语音等形式分享着身边的事。这些社交网络吸引着更多兴趣相投的陌生人成为朋友结成圈子,也衍生出的海量流量和机会,为业界和创业者提供着源源不绝的新机会。可以这样说,社交网络在将散落在人们中的需求汇聚起来,等待着企业来提供服务。因此......一起来看看 《社交红利》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码