2

我的情况是,我目前有 3 个 memcached 实例在 3 个不同的服务器上运行。我的应用程序当前位于相同的 3 个不同节点。所有应用程序服务器都知道所有 memcached 服务器,但如果其中一个出现故障,我无法通知。这个想法是将 memcached 服务器移动到自己的节点。

我已经开始将 CouchBase 视为解决此问题的替代方案,但不确定它是否会起作用。

是否可以让我在每个应用程序节点上都有一个 CouchBase 集群,然后将它们连接到不同的 memcached 服务器,然后 CouchBase 将监视并知道哪些是活动的?

在这种情况下,当前与 memcached 实例相关联的应用程序如何知道如果 memcached 实例之一关闭了如何获取数据?还是 CouchBase 将成为负责存储它的中间人?

4

2 回答 2

2

Couchbase 是一个非常灵活的平台,可在替换标准 memcached 实例时使用。它允许您将大量容错从您的应用程序转移到 couchbase 实例。

由于您使用的是 PHP,我建议您在访问 Couchbase 集群时使用 PHP SDK。可以在这里获得:http: //www.couchbase.com/develop/php/current

现在,重要的是要知道 PHP 的 SDK 是“vbucket 感知”的。这意味着当您使用它连接到 Couchbase 集群时,它将从您放入构造函数的地址中收集所有节点的所有信息。例如:

#Create the Couchbase object
$cb_obj = new Couchbase("127.0.0.1:8091", "user", "pass", "default");

这将创建一个对象,您可以通过该对象运行命令,它自己能够在节点出现故障时处理所有故障转移,等等。每种语言都有自己的小代码过程(我自己通常使用 Python),但是一旦你熟悉了它们,它们就会非常有效。

可以通过命令行界面或通过访问 Web URL 来管理集群http://<nodehostname>:8091/。这也是您在安装初始集群后将访问的 URL。

我强烈推荐 Couchbase 作为独立 memcached 的替代品。

于 2012-04-13T18:39:36.403 回答
1

使用 Couchbase,您将创建一个由三个节点中的每一个组成的集群。在您的应用程序中,您创建了一个 PHP(?) Couchbase 客户端的实例,并为其提供了指向至少一个节点的 URI。客户端将从这些节点中的任何一个了解集群的拓扑。

客户端维护与集群的流式连接,并将在拓扑发生任何变化时收到通知。如果一个节点宕机,客户端会做出相应的反应。

您可以设置自动故障转移和通知以提醒您自动故障转移事件。

于 2012-04-13T17:29:41.193 回答