基于多服务器存储的Couchbase查询

基于多服务器存储的Couchbase查询,couchbase,Couchbase,我在couchbase工作。我看到几个couchbase服务器运行,其中一个作为主服务器,其余作为副本服务器,用于特定的读/写请求。这是否意味着在所有服务器上复制数据库的完整数据?假设有10台服务器,这是否意味着在10台不同的服务器上会有10个数据库副本?这不是对存储空间的低效利用吗 在故障转移期间,vBucket映射中只会有更新,不会将数据传输到故障转移服务器到其他服务器,因为服务器的其余部分已经包含数据库的完整数据。我的理解正确吗 我阅读了couchbase网站上的文档,但无法完全理解上述问

我在couchbase工作。我看到几个couchbase服务器运行,其中一个作为主服务器,其余作为副本服务器,用于特定的读/写请求。这是否意味着在所有服务器上复制数据库的完整数据?假设有10台服务器,这是否意味着在10台不同的服务器上会有10个数据库副本?这不是对存储空间的低效利用吗

在故障转移期间,vBucket映射中只会有更新,不会将数据传输到故障转移服务器到其他服务器,因为服务器的其余部分已经包含数据库的完整数据。我的理解正确吗

我阅读了couchbase网站上的文档,但无法完全理解上述问题的答案

有人能帮我找到以上问题的答案吗


提前感谢

Trond Norbye在他的网站上对vBuckets和复制有很好的解释

要直接回答您的问题:

Couchbase在整个集群中分发数据的方式是通过。这些可以被认为是数据的“碎片”或“分区”。集群中的默认VBucket数量为1024,因此您的数据将被拆分为1024个部分,这些部分将平等地共享给集群中的每个节点。因此,在具有10个节点的集群示例中,每个节点将负责刚好超过100个vBuckets的数据。还使用vBuckets并将相同的vBuckets分发到群集中的不同节点。因此,活动和副本vBuckets将始终位于不同的节点上。如果具有活动vBucket的节点发生故障,则副本节点将无缝地开始为该vBucket提供流量服务

在上面的博文中,Trond Norbye发布了一个方便的表格来展示这一点:

+------------+---------+---------+---------+
| vbucket id | active  | replica | replica2|
+------------+---------+---------+---------+
|     0      | node A  | node B  | node D  |
|     1      | node B  | node C  | node A  |
|     2      | node C  | node D  | node B  |
|     3      | node D  | node A  | node C  |
+------------+---------+---------+---------+
因此,如果您为数据指定一个副本,您的数据将在Couchbase中存储两次,两个副本将在集群中存储数据的三个副本。因此不会浪费存储空间。:)

关于故障转移的情况,您是正确的,因为已经有副本vBuckets准备接管流量,因此不需要在节点之间传输数据。但是,现在集群中有一个节点提供的vBuckets流量比它原来负责的要多,因此集群将处于不平衡状态。要解决此问题,您应该使故障节点恢复或完成一个测试

除了文档之外,Couchbase YouTube频道上还有一些很好的介绍视频,特别是提供了Couchbase基础知识的良好概述。天气也很好