Pull to refresh

Comments 4

Боюсь, вы не повысили живучесть Raft. Вы создали свой протокол, взяв Raft за основу. Можете придумать ему имя. Например, Taraft)

Еще в процессе чтения у меня возник вопрос, зачем вам Raft, если у вас изначально условия, где Raft неприменим (мультимастер, отсутствие full mesh).

Full mesh существует только на бумаге, к сожалению. В реальных условиях связность сети часто нарушается - примером будет Cloudflare. Не каждый готов пожертвовать доступностью своего сервиса из-за того, что его конфигурация стала "не full mesh".

Мультимастер - это одна из возможностей Tarantool. В инсталляциях с Raft у нас, очевидно, один мастер, и Raft здесь для обеспечения его единственности. Если Ваше опасение о новом протоколе основано именно на этом факте - увы, но мы не открыли Америку.

Full mesh существует только на бумаге, к сожалению. В реальных условиях связность сети часто нарушается

Full mesh существует не только на бумаге. Он существует в локальных сетях. Связность между ДЦ - это просто другой уровень. Там совсем другие проблемы - задержки, потери и т.д. Мне кажется, не стоит винить raft в том, что он плохо работает в таких условиях. На уровне разных ДЦ и механизмы репликации должны быть другие.

Даже в диссертации по Raft (не в тонкой статье, а в толстой книжке) рассматриваются различные варианты улучшения протокола.

Базовый Raft - это минимально достаточный алгоритм, гарантирующий консенсус. Но когда начинается практическое применение, вылезают узкие места, которые приходится оптимизировать.

Тот же самый Pre-Vote по сути уже уже well-known must-have оптимизация. Уже все знают, что без pre-vote нельзя.

Fencing - интересное дополнение. Не знаю, был описан ли он где до этой статьи.

Смысл рассматривать Raft, как "закостенелый" протокол, нет. Он имеет как описанные в диссертации возможные улучшения, так и "разведанные в бою" пользователями.

Ценность Raft как раз в том, что реально работающих реализаций много. Исходный протокол был достаточно понятен, чтобы появились реализации во многих продуктах. А главное, в open-source и бесплатных продуктах. Сразу выросла пользовательская база, появились разнообразные ситуации применения, вылезли узкие места. И сразу начались доработки, которые тоже попали в open source.

Реализованные протоколы до Raft, такие как Paxos/MultiPaxos/ZAB/etc, были или сложно описаны, или реализованы в единичных opensource продуктах (ZAB в ZooKeeper, Paxos в corosync), либо вообще только закрытых продуктах и экосистемах.

Так что, Raft - это развивающийся протокол на основе проверенной базы. Главное не нарушать базу, и тогда у тебя сохраняются гарантии.

Sign up to leave a comment.