Digests d4n13l

Zookeeper Data 2

Чек-лист заданий

Полный список дайджестов

Задача - научиться ипользовать Apache Zookeeper для хранения настроек приложения

Какие задачи решены?

  • Изменил класс для загрузки:
    • Добавил метод для создания настроек по узлу.
    • Добавил метод для обновления настроек по узлу.
  • Добавил классы для рассмотрения случаев:
    • Одновременное создание новых узлов из двух потоков.
    • Одноврменное обновление новых ущлов из двух потоков.
  • Созда вспомогательные классы: Case, ConcurrentOperationCase.

Что планирую сделать дальше?

  • Добавить возможность обновления настроек в zookeeper.
  • Добавить возможность проведения двух транзакций при их одноврменном старте.

Краткая памятка по найденному материалу

При решении изучил:

  1. Транзакция - набор операций, который удолетворяют ACID (Atomicity, Consistency, Isolation, Durability). Что означает, что транзакции:
    1. либо выполняются успешно, либо не выполняются вообще(промежуточных состояний нет);
    2. сохраняется целостность данных;
    3. независимы друг от друга;
    4. устойчивы (при успешном выполнении гарантируется, что результат не исчезнет);
  2. Методы создания транзакций в Apache Curator
     CuratorOp op1 = client.transactionOp().create().forPath(path, payload);
     ...
     client.transtraction().forOperaions(op1, ...);
    
  3. По итогам предыдущей подзадачи:
    • Если одна из транзакци произошла, например, создание узлов, то вторая транзакция происходить не будет.
    • При попытке повторно создать существующий узел с новыми данными перезапись проиходить не будет и состотяние этого узла останется прежним.