Titan使用Cassandra - 多个数据中心奇怪

时间:2016-09-08 17:36:00

标签: cassandra titan

假设我有2个数据中心 - DC1和DC2。 DC1有3个节点,复制3(完全复制),DC2有1个节点,复制1(完全复制)。

假设DC2中的单个节点已启动,DC1中的所有节点都已关闭,并且我的读/写一致性处于LOCAL_QUORUM处。

我尝试在DC2上执行事务但由于UnavailableException而失败,这当然意味着没有足够的节点在线。但为什么? LOCAL_QUORUM的LOCAL部分是否被忽略,因为我在该数据中心只有一个节点?

DC2中的单个节点有100%的数据,那么为什么我不能做任何事情,除非在DC1中也有2个节点,无论读/写一致性设置如何?

2 个答案:

答案 0 :(得分:0)

使用您的设置,需要将2个副本写入磁盘才能成功写入。这里失败的写(行)分区可能属于down节点。因为该分区的散列决定了它需要去的地方。一旦你解除了这些节点,环就会重新调整并正常工作。

但只要它们只是失败,一些写入将成功,一些写入将失败。您可以通过简单地检查哈希和环令牌来检查哪个写入成功以及哪个写入失败

例如:现在想象我们得到了一个令牌范围为41-50的节点请求。根据复制策略,下一个副本应该转到1-20和11-20,然后LOCAL_QUORAM不满意,因为它们已关闭。所以你的写作失败了。

Cassandra 2 DC 6 Node example

答案 1 :(得分:0)

来自https://groups.google.com/forum/#!topic/aureliusgraphs/fJYH1de5wBw

" titan使用内部一致性进行锁定和id分配,它使用的级别是仲裁。 因此,无论我做什么,泰坦都将永远访问DC。"