一致性为LOCAL_SERIAL

时间:2018-11-27 05:53:31

标签: cassandra datastax-java-driver

在我的应用程序中,我们具有带有多个实例的微服务,为确保同一微服务的两个实例都不能处理同一组数据,我们有一个逻辑,其中实例尝试通过更新字段来获取锁在数据库表中。 更新成功后,实例将继续处理数据集。另外,其他实例也无法在该数据集上使用,因为另一个实例已在该数据集上使用。

例如我的桌子看起来像这样

CREATE TABLE locking_table(
   data_set text,
   instance_id text,
   PRIMARY KEY (data_set)
   );

因此可以获取查询数据集上的锁

update locking_table set instance_id = "myServiceId1" where data_set = "dataset1" if instance_id = null

我们有3个节点的集群,所有节点始终处于低/中负载状态。但是我们会定期在应用程序日志中看到此错误 遇到错误:在写查询期间,卡桑德拉超时,一致性为LOCAL_SERIAL(需要2个副本,但只有1个确认了写操作)

我想了解为什么我们会定期看到此错误?

0 个答案:

没有答案