Couchbase 热身策略
Couchbase warmup strategies
我们在生产中有一个 memcached 集群 运行。现在我们用 Couchbase 集群替换 memcached 作为持久缓存层。问题是如何实现这种切换以及如何预热 Couchbase 存储桶。显然我们不能简单地切换到冷的 Couchbase,因为从旧缓存开始会导致整个站点崩溃。
我考虑的一个选择是首先将 Couchbase 作为内存缓存节点进行预热。这意味着 Couchbase 正在使用(非持久性)memcached 存储桶,并像任何其他 memcached 节点一样获取缓存 set/get 流量。它的好处是代码更改最少(需要的是配置 moxi 代理以获取 memcached 流量,并将该节点注册为 memcached 节点)。稍后我们会将所有 memcached bucket 转换为 Couchbase。但不确定 Couchbase 是否支持这两种类型的桶之间的转换。
第二个选项是在开始时设置持久性 Couchbase 存储桶(相对于非持久性 memcached 存储桶)。我们更改生产缓存客户端以将所有流量复制到 memcached 和 coucbase 集群。我们监控 Couchbase 存储桶,一旦缓存项达到一定大小,我们就完成切换。一个小缺点是更改缓存客户端的额外复杂性。
想法?
2016 年 8 月 9 日编辑
我后来发现,Couchbase 不支持将 memcached 存储桶转换为 couchbase 存储桶。所以第一种方案不可行
最后我们决定在每个应用程序主机中设置Client-side (standalone) proxy。我们在主机之间逐步进行,以增加缓存流量。这样网站的变化就足够小了。
如果您想要简单、更少的工作并证明效果很好,请执行以下操作:
- 在每个应用服务器上设置一个 Moxi 客户端。
- 将 Moxi 指向 Couchbase 集群上的 Couchbase 存储桶。
- 将您的 Web 应用程序服务器更改为指向本地 MOXI 安装。
- 对于您的下一个代码修订,开始将您的代码转换为使用 Couchbase SDK 而不是 memcached。
是的,有一段时间缓存中的东西不会很热,但 Couchbase 很快就会被填充。一直使用这种方法进行切换。这很容易,几乎是万无一失的。我见过人们做的一件事是在切换之前尝试将内容从他们现有的 memcached 服务器复制到 Couchbase,但我不确定他们如何在 memcached 中更新每个值的键。
另请注意,Moxi 是轻松摆脱常规 memcached 的过渡步骤,它很棒,但从长远来看 运行,最好切换到 SDK。该 SDK 比纯 memcached 具有更多功能。
不要使用 memcached 存储桶,因为它们具有 none 高可用性、持久性或 Couchbase 的任何功能。
我们在生产中有一个 memcached 集群 运行。现在我们用 Couchbase 集群替换 memcached 作为持久缓存层。问题是如何实现这种切换以及如何预热 Couchbase 存储桶。显然我们不能简单地切换到冷的 Couchbase,因为从旧缓存开始会导致整个站点崩溃。
我考虑的一个选择是首先将 Couchbase 作为内存缓存节点进行预热。这意味着 Couchbase 正在使用(非持久性)memcached 存储桶,并像任何其他 memcached 节点一样获取缓存 set/get 流量。它的好处是代码更改最少(需要的是配置 moxi 代理以获取 memcached 流量,并将该节点注册为 memcached 节点)。稍后我们会将所有 memcached bucket 转换为 Couchbase。但不确定 Couchbase 是否支持这两种类型的桶之间的转换。
第二个选项是在开始时设置持久性 Couchbase 存储桶(相对于非持久性 memcached 存储桶)。我们更改生产缓存客户端以将所有流量复制到 memcached 和 coucbase 集群。我们监控 Couchbase 存储桶,一旦缓存项达到一定大小,我们就完成切换。一个小缺点是更改缓存客户端的额外复杂性。
想法?
2016 年 8 月 9 日编辑
我后来发现,Couchbase 不支持将 memcached 存储桶转换为 couchbase 存储桶。所以第一种方案不可行
最后我们决定在每个应用程序主机中设置Client-side (standalone) proxy。我们在主机之间逐步进行,以增加缓存流量。这样网站的变化就足够小了。
如果您想要简单、更少的工作并证明效果很好,请执行以下操作:
- 在每个应用服务器上设置一个 Moxi 客户端。
- 将 Moxi 指向 Couchbase 集群上的 Couchbase 存储桶。
- 将您的 Web 应用程序服务器更改为指向本地 MOXI 安装。
- 对于您的下一个代码修订,开始将您的代码转换为使用 Couchbase SDK 而不是 memcached。
是的,有一段时间缓存中的东西不会很热,但 Couchbase 很快就会被填充。一直使用这种方法进行切换。这很容易,几乎是万无一失的。我见过人们做的一件事是在切换之前尝试将内容从他们现有的 memcached 服务器复制到 Couchbase,但我不确定他们如何在 memcached 中更新每个值的键。
另请注意,Moxi 是轻松摆脱常规 memcached 的过渡步骤,它很棒,但从长远来看 运行,最好切换到 SDK。该 SDK 比纯 memcached 具有更多功能。
不要使用 memcached 存储桶,因为它们具有 none 高可用性、持久性或 Couchbase 的任何功能。