首页 文章

哪个couchbase节点将提供请求?

提问于
浏览
0

我正在使用NodeJS服务与couchbase集群进行对话以获取数据 . couchbase集群有4个节点(在ip1,ip2,ip3,ip4上运行),服务也运行在相同的4台服务器上 . 在所有NodeJS服务上,我的连接字符串如下所示:

couchbase://ip1,ip2,ip3,ip4

但每当我尝试从存储桶X中获取某些文档时,控制台显示ip4上的节点正在执行该操作 . 无论哪个NodeJS应用程序发出请求,同一ip4都在提供所有请求 .

我希望每个NodeJS服务器都使用他们的couchbase节点,以便所有服务器上的RAM和CPU消耗相等,所以我改变了连接字符串中IP的顺序,但每次请求都由相同的ip4提供服务 .

我创建了另一个存储桶并将我的数据放入其中并尝试获取它,但它再次进入相同的ip4 . 有人可以解释为什么会发生这种情况并且会导致其中一个节点出现高负载吗?

1 回答

  • 1

    你是什么意思“我希望每个NodeJS服务器都使用他们的couchbase节点”?在Couchbase中,活动数据集的一部分位于群集中的每个节点上 . 分片是自动的 . 当您拥有一个集群时,每个Bucket的1024个活动vBuckets(分片)将分布在集群的所有节点上 . 因此,对于4个节点,每个节点上将有256个vBucket . 鉴于Couchbase SDK使用的一致哈希算法,它将能够从密钥中告知该对象进入哪个vBucket并与从群集中获得的群集映射相结合,知道vBucket在群集中的哪个节点 . 因此,如果您正确配置了数据,则应用程序将从群集中的每个节点获取数据,因为数据均匀分布 .

    在文件系统上,作为Couchbase安装的一部分,将安装一个CLI工具调用vbuckettool,它将objectID和clustermap作为参数 . 它所做的只是一致的散列算法集群映射 . 因此,即使物体尚不存在,您也可以实际预测物体的去向 .

    另一方面, 生产环境 中的最佳实践是不在与Couchbase相同的节点上运行应用程序 . 它应该是独立的,以充分利用其无共享架构等原因 .

相关问题