Cassandra - Как проверить соответствие данных таблицы в данный момент времени?

Как узнать, когда таблица Cassandra станет "в конечном итоге согласованной"? Есть ли точный способ определить это в данный момент времени? Предпочтительно программно через API драйвера Datastax? Я проверил ответы на следующие связанные вопросы, но, похоже, нет ничего более конкретного, чем «проверить вывод netstats nodetool».

  1. Методы проверки синхронизации узла Cassandra
  2. как узнать, завершен ли ремонт nodetool

person Sundar Venkataraman    schedule 07.02.2018    source источник
comment
Это в конечном счете согласованная система, что означает, что она никогда не согласуется в данный момент времени для всех записей в системе.   -  person dilsingi    schedule 08.02.2018
comment
Допустим, я обновляю таблицу Cassandra раз в год. Мне трудно поверить, что нет способа проверить, непротиворечива ли эта таблица после этого единственного обновления.   -  person Sundar Venkataraman    schedule 08.02.2018
comment
Вы можете прочитать непротиворечивый результат для любой отдельной строки, которая была записана/обновлена. Это ключ к распределенной системе и не нужно постоянно беспокоиться обо всех строках во всей таблице. Да, если за весь год было только одно обновление, за которым последовал ремонт без выхода из строя узлов, вы получите строку последовательно. Но почти уверен, что ни один вариант использования в реальном времени не удовлетворяет этой границе даже близко.   -  person dilsingi    schedule 08.02.2018
comment
Если вы пишете один раз в год, вы можете запустить восстановление, и оно сообщит, соответствует ли он моментальному снимку во времени, когда выполнялось уплотнение проверки (-seq для использования буквального моментального снимка/жестких ссылок для определенного момента времени). Это не то, что вы можете сделать через драйвер. Вместо этого стройте вокруг предположений о времени. т.е. если вы запускаете inc repair каждые 30 минут, то вы знаете, что в худшем случае ваши данные будут согласованы в течение часа после записи. Если это полный ремонт каждые 7 дней, то в худшем случае это может занять неделю (в среднем, вероятно, менее 10 мс при одном и том же постоянном токе).   -  person Chris Lohfink    schedule 08.02.2018
comment
youtube.com/watch?v=lwIA8tsDXXE   -  person Chris Lohfink    schedule 08.02.2018
comment
@ChrisLohfink Я думаю, что вы попали прямо в точку, когда сказали запустить ремонт, и он сообщит, соответствует ли он моментальному снимку во время выполнения уплотнения проверки. Это именно то, что я ищу. Не могли бы вы дать мне знать, как это сделать? Я просмотрел документацию nodetool repair, но, похоже, нет способа указать временную метку для проверки согласованности? Я согласен с решением на основе командной строки, если оно будет работать правильно.   -  person Sundar Venkataraman    schedule 09.02.2018
comment
это не обычный запрос, поэтому выполните ремонт с помощью -seq, и из журналов он напечатает, когда он запустится, и когда он получит все деревья меркла, он сообщит, есть ли какие-либо несоответствия или нет.   -  person Chris Lohfink    schedule 09.02.2018
comment
@ChrisLohfink Спасибо. Это работает для меня!   -  person Sundar Venkataraman    schedule 11.02.2018


Ответы (1)


Если ваша система всегда находится в сети, выполняя операции, она может никогда не стать полностью согласованной в один момент времени, пока вы не перейдете на уровень согласованности «ВСЕ».

Исправляет ошибку журнала процесса в файле журнала, если он не получает ответа от других узлов реплики, потому что они были отключены/тайм-аут и т. д. вы можете проверить журналы, если нет ошибок WRT AntiEntropy/stream, это означает, что ваша система почти непротиворечива.

person Payal    schedule 08.02.2018
comment
Опять же, это возможная непротиворечивая система. - person dilsingi; 08.02.2018