Кассандра Записать вперед журнал и мембалы записать на диск - PullRequest
0 голосов
/ 17 сентября 2018

Читал на Кассандре, и меня трясло чувство, что оно ДЕЙСТВИТЕЛЬНО не отказоустойчиво, не так ли?

Я имею в виду, взять очень простой сценарий, входящую запись, вы записываете в WAL, в memtable, а затем отмечаете в WAL, что запись прошла успешно, и затем сервер падает до того, как memtable заполняется, поэтому он не сбрасывается в диск как SSTable, то есть я только что потерял эту запись + я не смогу повторить его, так как он помечен как "Готово" в WAL.

Я что-то здесь упускаю или это действительно не отказоустойчиво? Что кажется мне очень странным, поскольку оно используется во многих местах и ​​для такого большого количества данных, что заставляет меня думать, что я что-то упустил.

1 Ответ

0 голосов
/ 17 сентября 2018

Журнал фиксации записывается перед записываемой таблицей. Вы просто пишете мутацию, там нет маркировки мутации применительно к memtable. Мутация не удаляется из коммита до тех пор, пока memtable не будет полностью сброшен в новый sstable.

Хотя важно знать, что с некоторыми стратегиями commitlog они не блокируют подтверждение от записи при сбросе commitlog, поэтому вы все равно можете иметь окно потери данных, защищенное только с помощью RF. Поэтому важно знать уровни согласованности и факторы репликации для долговечности, а также в этих случаях. В 4.0+ я думаю, что group commitlog sync является отличным вариантом между периодическим и периодическим.

...