【问题标题】:Couchbase warmup strategiesCouchbase 热身策略
【发布时间】:2016-08-08 14:29:03
【问题描述】:

我们有一个在生产环境中运行的 memcached 集群。现在我们将 memcached 替换为 Couchbase 集群作为持久缓存层。问题是如何实现这种转换以及如何预热 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。我们从一个主机到另一个主机逐步增加缓存流量。这样网站的变化就足够小了。

【问题讨论】:

    标签: caching memcached couchbase


    【解决方案1】:

    如果您想轻松、减少工作量并证明效果很好,请执行以下操作:

    1. 在每台应用服务器上设置 Moxi 客户端。
    2. 将 Moxi 指向 Couchbase 集群上的 Couchbase 存储桶。
    3. 将您的 Web 应用程序服务器更改为指向本地 MOXI 安装。
    4. 对于您的下一个代码修订,开始将您的代码转换为使用 Couchbase SDK 而不是 memcached。

    是的,会有一段时间缓存中的东西不会很热,但是 Couchbase 很快就会被填充。这种方法一直用于切换。这很容易,几乎是万无一失的。我见过人们做的一件事是在切换之前尝试将现有 memcached 服务器中的内容复制到 Couchbase,但我不确定他们如何在 memcached 中新建每个值的键。

    另外请注意,Moxi 是轻松摆脱常规 memcached 的临时步骤,它很棒,但从长远来看,切换到 SDK 要好得多。 SDK 比纯 memcached 有更多的功能。

    不要使用 memcached 存储桶,因为它们没有 HA、持久性或 Couchbase 的任何功能。

    【讨论】:

    • 谢谢,柯克。这就是我们最终决定要做的事情。应用程序端 moxi 似乎是一个合理的选择。现在我们甚至可以离开这样的设置并切换到 SDK,因为在代码中切换缓存客户端太痛苦了。
    • 另外,在切换之前将内容从 memcached 复制到 coucbbase 也是同样的问题。这似乎增加了复杂性,而不是解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2020-07-03
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    相关资源
    最近更新 更多