Конфигурация без кворума: causal consistency поверх асинхронной мастер-мастер репликации
Программный комитет ещё не принял решения по этому докладу
Целевая аудитория
Тезисы
У нас была необходимость распространять конфигурацию по multi-tenant кластеру в условиях ненадёжного транспорта и с требованием автономной работы при нарушениях связности кластера. При этом было необходимо обеспечить предсказуемую выкатку конфигураций и непротиворечивое состояние всей системы.
Эти требования вычеркнули etcd, Consul и любой другой механизм на основе кворума: в момент сетевого раздела они выбирают консистентность ценой доступности.
Поэтому, взяв асинхронную master-master репликацию как транспорт изменений, мы сделали конкурентные изменения не аварией, а штатным режимом. Вместо того чтобы прятать eventual consistency, мы вынесли её в саму модель данных: в центре - tenant-scoped векторные часы, вокруг них immutable-снапшоты, изменения относительно конкретной базовой версии, детерминированный automerge и отдельные явные состояния для rollout, rollback и split-brain.
В докладе разберём, как выстраивается причинно-следственная история конфигурации без глобального порядка; почему снапшот новой активной конфигурации появляется только после успешного применения на всех узлах; как автоматически объединять непересекающиеся изменения без всякой координации; и почему конфликтующие изменения правильнее явно отклонить, чем тихо выбрать победителя.
Доклад будет полезен всем, кто проектирует распределённый control plane или систему управления конфигурациями, - и особенно тем, кто стоит перед выбором: достаточно ли здесь causal consistency или всё-таки нужен полноценный консенсус.
В IT более 8 лет. Практически всё это время занимался разработкой распределенных систем. Начинал свой путь с Tarantool в Mail.Ru Group, работал в Лаборатории Касперского. В настоящее время работаю в Angie Software. Увлекаюсь музыкой и скалолазанием.
Видео
Другие доклады секции
Архитектура и масштабируемость