zookeeper записывает обработку ошибок - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть вопрос о том, как zookeeper обрабатывает ошибки записи.Предположим, что есть 3 узла, и запись завершается успешно на 1, но завершается неудачно на 2, я знаю, что zookeeper вернет ошибку.Но что происходит с успешной записью на одном узле?Это откат или изменения сохраняются с ожиданием репликации на другие узлы со временем ?

1 Ответ

0 голосов
/ 29 апреля 2019

Zookeeper использует атомную систему обмена сообщениями.Это очень хорошо объяснено в следующей статье :

ZooKeeper использует вариант протокола двухфазной фиксации для репликации транзакций подписчикам.Когда лидер получает обновление изменения от клиента, он генерирует транзакцию с номером сиквела c и эпохой лидера e и отправляет транзакцию всем подписчикам.Последователь добавляет транзакцию в свою историю и отправляет ACK руководителю.Когда лидер получает ACK из кворума, он отправляет кворум COMMIT для этой транзакции.Последователь, который принимает COMMIT, совершит эту транзакцию, если только c не превышает порядковый номер в своей очереди истории.Он будет ожидать получения COMMIT для всех своих более ранних транзакций (невыполненных транзакций), прежде чем совершать коммиты.

Также официальная документация может быть очень полезна.

...