【问题标题】:Getting the grasp of Couchbase using memcached buckets使用 memcached 存储桶掌握 Couchbase
【发布时间】:2012-04-12 06:48:56
【问题描述】:

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

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

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

在这种情况下,当前绑定到 memcached 实例的应用程序如何知道如果 memcached 实例之一关闭,如何获取数据?还是由 CouchBase 充当中间人负责存储它的位置?

【问题讨论】:

    标签: php memcached couchbase


    【解决方案1】:

    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),但是一旦您熟悉了它们,它们就会非常有效。

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

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

    【讨论】:

    • 谢谢,关于为所有节点收集信息的问题。这是否意味着如果我有一个带有 e.x 2 couchbase 服务器的集群,只需连接到其中一个,就可以让对象知道这两个节点?如果提供的那个出现故障,它会尝试从其他节点获取它吗?只是想知道当 couchbase 服务器宕机时会发生什么,而不仅仅是 memcached 存储桶宕机。
    • 所以初始通信获取 vbucket 列表,但它会检查它更新 vbucket 信息的位置。通常一个好主意是设置某种虚拟 IP 接口或代理,如 nginx,让您在所有节点上进行循环负载平衡。这样,如果其中一个节点出现故障,您仍然可以连接并获取这些 vbucket 更新,而无需更改代码以支持故障转移。除了这方面,是的。一旦它使用 Couchbase SDK 与初始节点对话,它就会知道所有其他服务器并相应地分配流量。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多