Почему Chubby lockserver не является мультимастерным?
Как я понимаю, Chubby в любой момент времени есть 5 пухлых серверов. Один из них является ведущим и управляет координацией записи в кворум, а остальные 4 сервера доступны только для чтения и пересылают записи в ведущее устройство. Пишет использовать Paxos для поддержания согласованности.
Может кто-нибудь объяснить мне, почему существует различие между мастером и 4 репликами. Почему не пухлый мульти-мастер? Этот вопрос также может относиться к Zookeeper.
1 ответ
Наличие одного мастера более эффективно, поскольку узлам не приходится сталкиваться с таким большим количеством конфликтов.
И Chubby, и Zookeeper реализуют распределенный конечный автомат, в котором задача системы заключается в определении общего порядка при переходах из одного состояния в другое. Может потребоваться много сообщений (теоретически бесконечные сообщения) для разрешения конфликта, когда несколько узлов предлагают переход одновременно.
Paxos (и, следовательно, Chubby) использует оптимизацию, называемую "выдающийся лидер", когда реплики пересылают записи выдающемуся лидеру, чтобы уменьшить конкуренцию. (Я предполагаю, что реплики Chubby делают это. Если бы не они, но дизайнеры просто переносят эту ответственность на клиента.) Zookeeper делает это тоже.
И Chubby, и Zookeeper действительно работают с несколькими лидерами, потому что им приходится иметь дело с лидером, который не знает, что он умер, а затем возвращается из мертвых. Для Chubby в этом весь смысл использования Paxos: в конце концов победит один из лидеров. (Ну, теоретически это может и не произойти, но мы, инженеры, делаем практические вещи, такие как рандомизированный откат, чтобы сделать эту вероятность достаточно малой.) С другой стороны, Zookeeper назначает неубывающий идентификатор каждому лидеру; и любые переходы не текущего лидера отклоняются. Это означает, что когда умирает лидер, Zookeeper должен сделать паузу и пройти этап реконфигурации, прежде чем принимать новые переходы.