ZooKeeper использует специальный протокол атомарного обмена сообщениями под названием ZooKeeper Atomic Broadcast (ZAB) , который гарантирует, что локальные реплики в ансамбле (группы серверов Zookeeper) никогда не расходятся.
Протокол ZAB является атомарным, поэтому протокол гарантирует, что обновления будут либо успешными, либо неудачными.
В Zookeeper каждая запись проходит через лидера, а лидер генерирует идентификатор транзакции (называемый zxid ) и присваивает его этому запросу на запись.
Zxid - это длинное (64-битное) целое число, разделенное на две части:
Zxidпредставляет порядок, в котором записи применяются ко всем репликам. эпоха представляет изменения в лидерстве с течением времени.Эпохи относятся к периоду, в течение которого данный сервер осуществлял лидерство.В эпоху лидер транслирует предложения и идентифицирует каждое по счетчику.
Запись считается успешной, если лидер получает подтверждение от большинства.
zxid используется для синхронизации серверов и предотвращения описанного вами конфликта.