我们在生产中运行了一个memcached集群。现在我们将使用Couchbase集群的memcached替换为持久缓存层。问题是如何实施这种切换以及如何预热Couchbase铲斗。显然我们不能简单地切换到冷Couchbase,因为从旧缓存开始将导致整个站点关闭。
我想到的一个选择是首先将Couchbase预热为memcached节点。这意味着Couchbase正在使用(非持久性)memcached存储桶,并像任何其他memcached节点一样获取缓存集/获取流量。关于它的好处是存在最少的代码更改(需要的是配置moxi代理以获取memcached流量,并将该节点注册为memcached节点)。稍后我们将把所有memcached存储桶转换为Couchbase。但不确定Couchbase是否支持这两种类型的存储桶之间的转换。
第二个选项是在开头设置持久性Couchbase存储桶(与非持久性memcached存储桶相对)。我们更改生产缓存客户端以将所有流量复制到memcached和coucbase群集。我们监控Couchbase存储桶,一旦缓存项达到一定的大小,我们就完成了切换。一个小缺点是更改缓存客户端的额外复杂性。
思想?
2016年8月9日编辑
我后来发现,Couchbase不支持将memcached存储桶转换为couchbase存储桶。所以第一种选择是不可行的。
最后,我们决定在每个应用程序主机中设置Client-side (standalone) proxy。我们从主机到主机逐步增加缓存流量。这样,网站的变化就足够小了。
答案 0 :(得分:1)
如果您想要轻松,减少工作并且证明效果良好,请执行以下操作:
是的,有时候缓存中的内容不会很热,但Couchbase的填充时间不会太长。切换时始终使用此方法。这很容易,几乎是万无一失的。我看到人们做的一件事是在切换之前尝试从现有的memcached服务器复制到Couchbase,但我不确定他们是如何在memcached中新建每个值的键。
另请注意,Moxi是一个容易脱离常规memcached的临时步骤,它很棒,但从长远来看,切换到SDK要好得多。 SDK具有比纯memcached更多的功能。
不要使用memcached存储桶,因为它们没有HA,持久性或Couchbase的任何功能。