В моем приложении у нас есть микросервисы с несколькими экземплярами, чтобы гарантировать, что два экземпляра одного и того же микросервиса не работают с одним и тем же набором данных, у нас есть логика, при которой экземпляры пытаются получить блокировку путем обновления поля.в таблице БД.Как только обновление выполнено успешно, экземпляры запускаются и обрабатывают набор данных.Также другие экземпляры не могут работать с этим набором данных, так как другой экземпляр уже работает с этим набором данных.
например, моя таблица может выглядеть следующим образом
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 узлов, все узлы всегда работают с низкой / средней нагрузкой.Но мы постоянно видим эту ошибку в журналах нашего приложения через равные промежутки времени. Обнаружена ошибка: тайм-аут Cassandra во время запроса записи с согласованностью LOCAL_SERIAL (требовалось 2 реплики, но только 1 подтвердило запись)
Я хотел бы понять, почему мы видимэта ошибка через равные промежутки времени?