Как интегрировать cassandra с zookeeper для поддержки транзакций

У меня установлен кластер Cassandra и Zookeeper. Теперь я хочу поддерживать транзакции в cassandra с помощью zookeeper. Как мне это сделать.

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

Я знаю cassandra и zookeeper по отдельности, как данные считываются и записываются, но я не знаю, как их интегрировать с помощью Java.

как мы можем делать транзакции в Cassandra с помощью Zookeeper.

Спасибо.

Ответы

Ответ 1

У меня установлен кластер Cassandra и Zookeeper. Теперь я хочу поддерживать транзакции в cassandra с помощью zookeeper. Как это сделать.

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

Я хочу знать, как поддерживать функцию отката и фиксации в cassandra с помощью Zookeeper.

Zookeeper вам не поможет, особенно функция фиксации. Вы можете написать достаточно информации для zookeeper для отката в случае сбоя, но если вы это сделаете, вы можете также сохранить информацию об откате в cassandra.

Zookeeper и Cassandra работают вместе, когда вы используете Zookeeper в качестве функции блокировки. Посмотрите на библиотеку Cages. Используйте zookeeper для координирования чтения/записи в cassandra.

Попытка использовать cassandra как транзакционную систему с атомными коммитами для нескольких строк и откатов будет очень неприятной.

Ответ 2

Существуют способы использования транзакций в Cassandra без ZooKeeper.

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

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

Варианты этого подхода используются в Google системе Percolator и в CockroachDB.

Кстати, если вы в порядке с уровнем изоляции Read Committed, тогда имеет смысл взглянуть на RAMP транзакции Питер Байлис.

Ответ 3

Существует функция BATCH для Cassandra CQL3 (Cassandra 1.2 является официальной версией, выпущенной CQL3), которая якобы может атомарно применять все обновления в BATCH как единое целое или ничего.

Это не означает, что вы можете откатить успешно выполненный BATCH, как это делает RDBMS, что нужно было бы сделать вручную.

В зависимости от согласованности и предпочтений, которые вы предоставляете оператору BATCH, гарантии атомарности обновлений могут быть увеличены или уменьшены до некоторой степени с помощью опции UNLOGGED.

http://www.datastax.com/docs/1.2/cql_cli/cql/BATCH

Ответ 4

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

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

Только мои 2 цента...