Тайм-аут Cassandra во время запроса записи в соответствии LOCAL_SERIAL - PullRequest
0 голосов
/ 27 ноября 2018

В моем приложении у нас есть микросервисы с несколькими экземплярами, чтобы гарантировать, что два экземпляра одного и того же микросервиса не работают с одним и тем же набором данных, у нас есть логика, при которой экземпляры пытаются получить блокировку путем обновления поля.в таблице БД.Как только обновление выполнено успешно, экземпляры запускаются и обрабатывают набор данных.Также другие экземпляры не могут работать с этим набором данных, так как другой экземпляр уже работает с этим набором данных.

например, моя таблица может выглядеть следующим образом

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 подтвердило запись)

Я хотел бы понять, почему мы видимэта ошибка через равные промежутки времени?

...