Кассандра, счетчики и конфликты записи - PullRequest
0 голосов
/ 09 мая 2018

Мы исследуем использование Cassandra как способа хранения данных типа временных рядов, так что это может быть чем-то вроде вопроса нуба. Одним из вариантов использования является чтение данных из потока Kafka, поиск совпадений и увеличение счетчика (например, 5 клиентов щелкнули по ссылке альфа на странице бета, увеличение (бета, альфа) на 5). Тем не менее, мы ожидаем, что очень высокая степень параллелизма будет соответствовать нагрузке, поэтому одновременно с Kafka могут читать несколько потребителей.

Мой вопрос : Каким образом Кассандра будет разрешать несколько одновременных записей на заданный счетчик из нескольких источников?

Насколько я понимаю, множественные записи в счетчик с разными временными метками будут добавлены к счетчику в полученном порядке временных меток. Однако, если бы была одновременная запись с точной одинаковой отметкой времени, разве модель LWW Кассандры выбросила бы одно из этих приращений счетчика?

Если бы у нас был большой кластер (более 100 узлов), записи ALL или QUORUM могут быть недостаточно быстрыми, чтобы не отставать от трафика сообщений. Кажется, что запись с THREE может привести к ситуации, когда процесс # 1 записывает в узлы A, B и C, но процесс # 2 может записывать в X, Y и Z. Будет ли LWT работать здесь или нет хорошо играть со встречной активностью?

1 Ответ

0 голосов
/ 09 мая 2018

Я бы попробовал проверить концепцию и сравнить ее, скорее всего, она будет работать нормально. Счетчики не супер исполнительские в Кассандре, хотя, особенно если будет много разногласий.

Счетчики не похожи на обычные записи с простым LWW, они используют paxos с некоторыми пессимистичными блокировками и специализированными кэшами. Конкуренция за блокировку раздела замедлит его, а paxos - это дорогостоящий процесс многократного сетевого перехода с операциями чтения перед записью.

Используйте кворум, не пытайтесь сделать что-нибудь интересное с CL со счетчиками, особенно перед сравнительным тестированием, чтобы узнать, нужно ли вам это. Кластер из 100 узлов должен иметь возможность обрабатывать много, если вы не пытаетесь постоянно обновлять одни и те же разделы.

...