具有负载平衡和冗余的RavenDb拓扑

时间:2015-10-13 11:23:36

标签: performance replication load-balancing ravendb redundancy

我们正在尝试提供适当的RavenDb拓扑结构,以便我们平衡负载并具有容错能力。 似乎更好的负载均衡方法是使用原生分片,我们可能会转而使用它,但由于域特性,此时并不是微不足道的。 为了实现冗余,我们只需在每个组中设置2个ravendb节点,并在主机/主机之间进行复制,因此如果一个发生故障,RavenDb客户端将自动切换到另一个节点。 我们有索引“组件”,它是唯一一个将写入数据库的人,因此它将写入一个节点,我们希望最终分发这些更改。我们将在两组ravendb节点之间设置主/主复制,因此如果索引组件最终将回退到组1,则应将更改复制到第二组。

The schema

所以,似乎存在冲突的风险很低,因为我们只有一个玩家写入数据库(带有一串,一分钟一次)。关于此设置的几个问题:

  1. RavenDb通常拥有如此多的主/主人 复制?
  2. 这个问题能否以更简单的方式解决?
  3. 如何配置客户端的回退约定,以便每个Web节点在失败前首先失败到其组中的另一个节点 另一组的RavenDb节点?
  4. 如果我们为每个网络节点上的读取嵌入简单的循环逻辑,你会看到任何潜在的问题(网络节点1将从 两者:RavenDb1_01和RavenDb1_02)?它会制作标准的RavenDb吗? 后退行为变得疯狂吗?

1 个答案:

答案 0 :(得分:0)

1)在这样的集群中有很多节点是很常见的,是的。请注意,您需要设置要在此类拓扑中更改和复制的复制。

2)通常更容易拥有一个完全连接的拓扑,而不是你在这里拥有的层......

3)故障转移始终基于客户端的主节点目的地顺序。换句话说,如果节点2具有目的地(节点1,节点3)并且节点1具有目的地(节点3,节点2)。 最初连接到节点2的客户端将转到节点1,然后转到节点3 故障转移时,最初连接到节点1的客户端将在故障转移时转到节点3,然后转到2。

4)循环和故障转移单独行动。