DSE如何传播数据?

时间:2019-04-07 13:08:49

标签: solr cassandra datastax-enterprise cassandra-2.0

我们将DSE与Cassandra + Solr结合使用。

我不确定它是如何传播数据的,假设我们有6个节点,复制因子为3。

我们的平台使用所有6个节点来查询数据,我从6个节点中查询一个节点是否有数据丢失的机会?

或者如果我想使用平台上的所有节点,则我需要具有与节点数相同的复制因子。

它如何工作?

2 个答案:

答案 0 :(得分:0)

如果您有6个节点且RF 3,则表示cassandra群集中存在3个数据副本。数据可用性还取决于一致性级别。如果您使用的是一个一致性,并且向下2个节点,则也将获得数据且不会丢失,但是如果两个,QOURAM,三个或全部一致性,则情况将有所不同。

答案 1 :(得分:0)

在Cassandra中,每个节点都存储数据的某些部分。构建群集时,每个节点将负责数据的特定部分。这是基于分配给该节点的令牌值决定的。现在,当您插入或选择数据时,每个插入或选择都将具有一个分区键。基于该分区键,将计算哈希值,并将数据发送到负责该特定令牌值的节点。

如果有6个节点且RF = 3,则在群集内您将拥有3个完整数据副本。基于上述概念存储主副本。将根据您在创建键空间时指定的复制类来存储副本。如果您使用SimpleStrategy,它将按顺时针方向在下一个节点上存储副本,即node1的副本将存储在node2和node3上,而node2的副本将存储在node3和node4上,依此类推。

如果从一个节点查询,则根据分区键,查询将发送到负责该分区键的特定节点。要知道您的查询将发送到哪个节点,可以使用nodetool实用程序。

nodetool getendpoints <keyspace> <table> <key> 

这将为您提供将要发送查询以获取结果的节点Ip