Почему выборы лидера обязательны для записи, а не для запроса на чтение? - PullRequest
0 голосов
/ 27 апреля 2018

В надежной распределенной системе выбор лидера обязателен для успешной записи, и я могу понять, что необходимо следовать алгоритму Paxos.

Однако, почему выборы лидера (а значит, и консенсус) не требуются для запроса на чтение? (например, в Zookeeper)

Я что-то упустил?

1 Ответ

0 голосов
/ 02 мая 2018

По умолчанию чтения Zookeeper не являются линеаризуемыми, поэтому согласование не требуется. Вместо этого они последовательно согласованы, что позволяет локальное чтение с узла, к которому подключен клиент.

Если вы хотите линеаризуемое чтение в Zookeeper, вы должны сначала явно синхронизировать узел - теперь вы будете читать все записи, которые были завершены с момента начала вашего запроса на чтение (синхронизацию), давая возможность линеаризации.

То же самое относится, например, Плот. Вы можете выполнять локальное чтение и получать максимально последовательную согласованность (при условии, что вы координируете с узлом, чтобы не читать данные старше, чем вы видели), но если вы хотите линеаризуемое чтение, вы должны «зафиксировать» операцию чтения (то есть попросите систему договориться о том, какие записи совершены до прочтения), что снова требует консенсуса.

...