希望 Couchbase 是一个适用于 HA 系统的好系统。
让我用几句话解释它是如何工作的,假设你有一个 5 个节点的集群。使用客户端 API/SDK 的应用程序始终了解集群的拓扑结构(以及拓扑结构的任何变化)。
当您在集群中设置/获取文档时,客户端 API 使用与服务器相同的算法来选择应该在哪个节点上写入。所以客户端选择使用 CRC32 散列的节点,在这个节点上写入。然后集群将异步复制 1 个或多个副本到其他节点(取决于您的配置)。
Couchbase 当时只有一份文档的活动副本。所以很容易保持一致。所以应用程序从这个活动文档中获取和设置。
如果发生故障,服务器有一些工作要做,一旦发现故障(自动或通过监控系统),就会发生“故障转移”。这意味着副本被提升为活动的,并且知道可以像以前一样工作。通常您会重新平衡节点以正确平衡集群。
您评论的那句话只是说您拥有的节点数量越少,发生故障/重新平衡时的影响就越大,因为您必须将相同数量的请求路由到较少数量的节点。希望您不会丢失数据;)
您可以在 Couchbase CTO 博客上找到有关这种工作方式的一些非常详细的信息:http:
//damienkatz.net/2013/05/dynamo_sure_works_hard.html
注意:我在 Couchbase 担任开发人员布道师