Cassandra 一致性级别和复制因子
Cassandra Consistency Level and Replication Factor
我是 Cassandra 的新手。
假设我有 3 个节点,键空间的复制因子 (RF) 为 3。
- 我可以安全地假设如果 2/3 节点关闭,无论一致性级别如何,我仍然可以获得查询的完整数据吗?
- 保持 2/3 节点处于关闭状态,哪个一致性级别可以确保查询的完整数据?
这取决于您用于写入和读取请求的一致性级别。
For strong consistency: R + W > N
For eventual consistency: R + W =< N, where
- R is the consistency level of read operations
- W is the consistency level of write operations
- N is the number of replicas
在我们的照顾下 R + W <= 3
现在假设,我们使用 QUORUM 进行读取操作,使用 ONE 进行写入操作。
quorum = (sum_of_replication_factors / 2) + 1 = (3/2) + 1 = 2
read = 1
R + W <=3 is satisfied in our case.
您可以根据需要配置一致性级别,但请记住延迟。
您可以阅读更多内容 consistency-handing and consistency-configuration
回到你的问题,如果只使用一个节点,那么你就不会有最终的一致性。您可以将 ONE 用于读取和写入,但这会破坏目的。假设节点将再次启动,我宁愿用户 LOCAL_QUORUM 进行写入,两个用户进行读取。
在你的例子中,由于有3个节点,复制因子也是3,因此,每个节点都会有所有的数据。因此,即使只有 1/3 的节点在运行,您仍然可以获取完整的数据。但是,在这种情况下,数据的一致性(即是否获取最新数据)将取决于所使用的写入一致性(我假设因为只有 1/3 节点在运行,因此读取一致性是1).为了得到一致的数据,写一致性应该是3(使用条件,R+W>N强一致性)。只有这样,即使只有 1/3 的节点在运行,您也能在读取时获得一致的数据。
我是 Cassandra 的新手。 假设我有 3 个节点,键空间的复制因子 (RF) 为 3。
- 我可以安全地假设如果 2/3 节点关闭,无论一致性级别如何,我仍然可以获得查询的完整数据吗?
- 保持 2/3 节点处于关闭状态,哪个一致性级别可以确保查询的完整数据?
这取决于您用于写入和读取请求的一致性级别。
For strong consistency: R + W > N
For eventual consistency: R + W =< N, where
- R is the consistency level of read operations
- W is the consistency level of write operations
- N is the number of replicas
在我们的照顾下 R + W <= 3
现在假设,我们使用 QUORUM 进行读取操作,使用 ONE 进行写入操作。
quorum = (sum_of_replication_factors / 2) + 1 = (3/2) + 1 = 2
read = 1
R + W <=3 is satisfied in our case.
您可以根据需要配置一致性级别,但请记住延迟。
您可以阅读更多内容 consistency-handing and consistency-configuration
回到你的问题,如果只使用一个节点,那么你就不会有最终的一致性。您可以将 ONE 用于读取和写入,但这会破坏目的。假设节点将再次启动,我宁愿用户 LOCAL_QUORUM 进行写入,两个用户进行读取。
在你的例子中,由于有3个节点,复制因子也是3,因此,每个节点都会有所有的数据。因此,即使只有 1/3 的节点在运行,您仍然可以获取完整的数据。但是,在这种情况下,数据的一致性(即是否获取最新数据)将取决于所使用的写入一致性(我假设因为只有 1/3 节点在运行,因此读取一致性是1).为了得到一致的数据,写一致性应该是3(使用条件,R+W>N强一致性)。只有这样,即使只有 1/3 的节点在运行,您也能在读取时获得一致的数据。