如果较低的一致性级别是好的,那么为什么我们需要在Cassandra中具有较高的一致性(QUORUM,ALL)级别?

如果较低的一致性级别是好的,那么为什么我们需要在Cassandra中具有较高的一致性(QUORUM,ALL)级别?,cassandra,Cassandra,在学习税务教程时,我学到了这一点 1低一致性级别的读写速度更快,而使用高一致性级别的读写时间更长 2较低的一致性级别还可确保数据的高可用性 我的问题是 如果较低的CL是好的,那么我们可以将CL设置为1, 为什么我们需要仲裁和所有一致性级别?这最终取决于使用Cassandra的应用程序。如果应用程序可以提供可能未被复制或稍微过时的数据,那么本地应用程序就可以了。如果应用程序绝对不能提供错误的答案,或者写入的行没有被一致地成功读取,那么本地仲裁可能更适用 我告诉我的应用程序团队同样的事情。从本地_-

在学习税务教程时,我学到了这一点 1低一致性级别的读写速度更快,而使用高一致性级别的读写时间更长 2较低的一致性级别还可确保数据的高可用性

我的问题是 如果较低的CL是好的,那么我们可以将CL设置为1,
为什么我们需要仲裁和所有一致性级别?

这最终取决于使用Cassandra的应用程序。如果应用程序可以提供可能未被复制或稍微过时的数据,那么本地应用程序就可以了。如果应用程序绝对不能提供错误的答案,或者写入的行没有被一致地成功读取,那么本地仲裁可能更适用

我告诉我的应用程序团队同样的事情。从本地_-ONE开始,并通过测试来使用它。如果没有任何问题,请继续使用。如果您确实遇到过时的数据,并且您的应用程序对读取更敏感,那么请尝试在本地仲裁中写入,并继续在本地仲裁中读取。如果这没有帮助,那么应用程序可能需要在QUORUM上同时使用这两种方法

同样,这也是应用程序团队需要进行彻底测试的原因

为了解决这个问题,所有这些都是一个有用的一致性级别,因为它调用了读取修复。基本上,如果您知道有一个表缺少数据,并且不想对其运行代价高昂的nodetool修复,那么可以将一致性设置为ALL并从中读取。我发现这个技巧在解决多个DC集群的system_auth问题时非常有用


但是,您可能不希望在应用程序中使用所有这些。或者,如果您这样做了,它将用于非常特定的边缘情况。

最终取决于使用Cassandra的应用程序。如果应用程序可以提供可能未被复制或稍微过时的数据,那么本地应用程序就可以了。如果应用程序绝对不能提供错误的答案,或者写入的行没有被一致地成功读取,那么本地仲裁可能更适用

我告诉我的应用程序团队同样的事情。从本地_-ONE开始,并通过测试来使用它。如果没有任何问题,请继续使用。如果您确实遇到过时的数据,并且您的应用程序对读取更敏感,那么请尝试在本地仲裁中写入,并继续在本地仲裁中读取。如果这没有帮助,那么应用程序可能需要在QUORUM上同时使用这两种方法

同样,这也是应用程序团队需要进行彻底测试的原因

为了解决这个问题,所有这些都是一个有用的一致性级别,因为它调用了读取修复。基本上,如果您知道有一个表缺少数据,并且不想对其运行代价高昂的nodetool修复,那么可以将一致性设置为ALL并从中读取。我发现这个技巧在解决多个DC集群的system_auth问题时非常有用


但是,您可能不希望在应用程序中使用所有这些。或者,如果您这样做了,它将用于一个非常特殊的边缘情况。

像Cassandra这样的数据库的真正核心是最终一致性:当您第一次将数据写入数据库时,它不会强制执行强一致性。相反,它让您可以选择一个较弱的一致性级别,如一个,以达到较高的写入性能,然后在以后查询数据时,只要此规则Read_consistency_level+Write_consistency_level>=RF策略复制因子满足,您就不会有过时的数据


如果您不能满足上述规则,这是有风险的,因为您可能会得到过时或相互矛盾的数据,有时是新数据,有时是旧数据

像Cassandra这样的数据库的真正意义在于最终的一致性:当您第一次将数据写入数据库时,它不会强制执行强一致性。相反,它让您可以选择一个较弱的一致性级别,如一个,以达到较高的写入性能,然后在以后查询数据时,只要此规则Read_consistency_level+Write_consistency_level>=RF策略复制因子满足,您就不会有过时的数据


如果您不能满足上述规则,这是有风险的,因为您可能会得到过时或相互矛盾的数据,有时是新数据,有时是旧数据

较低的一致性并不能确保数据的高可用性,它确保了集群的高可用性。例如,如果您的复制因子为3,那么在一致性级别为1时,您可能会丢失2个副本,并且仍然留在游戏中。如果从客户机角度要求高一致性,同时又容忍可用性问题,则应使用仲裁。如果你总是在定额中读写,你就克服了最终的一致性==不保证卡桑德拉的一致性。如果锤子是好的,为什么我需要锯子?这一切都是为了使用正确的工具来完成工作。或者,我们的英国朋友如此诗意地为球场奔马
低一致性并不能保证数据的高可用性,它保证了集群的高可用性。例如,如果您的复制因子为3,那么在一致性级别为1时,您可能会丢失2个副本,并且仍然留在游戏中。如果从客户机角度要求高一致性,同时又容忍可用性问题,则应使用仲裁。如果你总是在定额中读写,你就克服了最终的一致性==不保证卡桑德拉的一致性。如果锤子是好的,为什么我需要锯子?这一切都是为了使用正确的工具来完成工作。或者,正如我们的英国朋友诗意地说的那样,马匹上赛马场。