我们正在尝试提供适当的RavenDb拓扑结构,以便我们平衡负载并具有容错能力。 似乎更好的负载均衡方法是使用原生分片,我们可能会转而使用它,但由于域特性,此时并不是微不足道的。 为了实现冗余,我们只需在每个组中设置2个ravendb节点,并在主机/主机之间进行复制,因此如果一个发生故障,RavenDb客户端将自动切换到另一个节点。 我们有索引“组件”,它是唯一一个将写入数据库的人,因此它将写入一个节点,我们希望最终分发这些更改。我们将在两组ravendb节点之间设置主/主复制,因此如果索引组件最终将回退到组1,则应将更改复制到第二组。
所以,似乎存在冲突的风险很低,因为我们只有一个玩家写入数据库(带有一串,一分钟一次)。关于此设置的几个问题:
答案 0 :(得分:0)
1)在这样的集群中有很多节点是很常见的,是的。请注意,您需要设置要在此类拓扑中更改和复制的复制。
2)通常更容易拥有一个完全连接的拓扑,而不是你在这里拥有的层......
3)故障转移始终基于客户端的主节点目的地顺序。换句话说,如果节点2具有目的地(节点1,节点3)并且节点1具有目的地(节点3,节点2)。 最初连接到节点2的客户端将转到节点1,然后转到节点3 故障转移时,最初连接到节点1的客户端将在故障转移时转到节点3,然后转到2。
4)循环和故障转移单独行动。