1

Недавно я обнаружил, что если вы используете условные транзакции в Cassandra, то по умолчанию будет использоваться последовательность SERIAL для этих транзакций.Cassandra Не удается достичь уровня согласованности SERIAL

http://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0

Однако я не могу понять, как настроить свой коэффициент репликации и количество узлов, так что условные сделки удается даже с помощью одного узла вниз. Я бы хотел иметь коэффициент репликации 2.

Я пробовал с replication_factor из 1 и 2 с кластером из 5 узлов. Нужно ли мне больше узлов? Есть ли какая-то конфигурация где-то я пропала? Ниже приведена конфигурация моего ключа. Я испытал это на Cassandra 3.5 и 3.9.

CREATE KEYSPACE IF NOT EXISTS reptest WITH replication = {'class': 'SimpleStrategy', 'replication_factor':2};

+0

может попытаться использовать стратегию сетевой топологии вместо простой стратегии? Есть некоторые проблемы с этим –

ответ

2

Уровень SERIAL консистенция соответствует QUORUM, когда речь идет о количестве узлов, которые должны подтвердить операцию. Минимальный коэффициент репликации, который по-прежнему позволит компенсировать один мертвый узел с QUORUM, будет 3 (по крайней мере, из 2 из 3 узлов).

+0

Можете ли вы объяснить, почему коэффициент репликации 3 работает, но коэффициент репликации 2 не работает? Насколько я могу судить, оба они должны иметь одинаковое количество узлов для кворума. –

+0

Если кворум требует 2 узла, но ваш коэффициент репликации равен всего 2, то оба они должны быть живы. С коэффициентом репликации 3 один узел может быть до сих пор удовлетворять кворуму 2 узла. –

+0

Правильно, но если у меня есть кластер из 3 узлов с коэффициентом репликации 2, не должен ли Cassandra терпеть потерю одного узла? –

Смежные вопросы