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

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

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

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

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

Спасибо.


person Vaibhav Singh    schedule 22.02.2011    source источник


Ответы (4)


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

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

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

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

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

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

person sbridges    schedule 14.03.2011

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

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

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

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

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

person rystsov    schedule 04.03.2016

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

Это не означает, что вы можете откатить успешно выполненный ПАКЕТ, как это может сделать СУБД, это нужно будет сделать вручную.

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

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

person cowarldlydragon    schedule 14.06.2013

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

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

Просто мои 2 цента...

person besnico    schedule 12.11.2013