TGViewer
Женя Янченко Женя Янченко @jane_yanchenko · 5.51K subscribers
Post #60 1.49K
Репликация с несколькими ведущими узлами

Продолжим разбирать репликацию по 5-й главе кабанчика («Высоконагруженные приложения» Мартина Клепманна).

У репликации с одним лидером есть недостаток: все операции записи идут через один узел (лидер), поэтому если между пользователем и лидером пропала связь, то пользователь не сможет совершать операции записи.

Если мы разрешим принимать запросы на запись нескольким узлам, и каждый такой узел будет перенаправлять информацию об изменениях всем остальным узлам, то получим репликацию с несколькими ведущими узлами (multi-leader, master — master). При такой схеме каждый из лидеров одновременно является репликой для других лидеров.

Когда используют схему с несколькими лидерами:

🗓 Приложения с офлайн-клиентами. Например, календарь-планировщик, приложения типа Яндекс.Диск, OneDrive и др. В этом случае у каждого устройства есть своя локальная база данных, служащая лидером (она принимает запросы на запись). Любые выполняемые в офлайне изменения синхронизируются с сервером и остальными устройствами при следующем подключении к интернету.

🌐 Система, использующая несколько ЦОДов. Внутри каждого из ЦОДов используется обычная репликация типа «лидер — реплика». Лидер каждого ЦОДа реплицирует свои изменения лидерам в других ЦОДах. При этой схеме пользователь пишет в ближайший ЦОД, поэтому приложение для него работает быстрее. Репликация в другие ЦОДы выполняется асинхронно и на пользовательский опыт не влияет.

Правильно реализовать репликацию с несколькими лидерами непросто. Основная проблема — конфликты записи, которые возникают когда на разных лидерах одна и та же запись обновляется разными значениями.

Например, вы договорились о встрече семьей и внесли в общий календарь запись «Семейная встреча 12:00». Все увидели пуш и решили конкретизировать название. Брат изменил название на «Шашлык 12:00», а бабушка на «Копаем картошку 12:00». Возникает конфликт. Конечно, если эти изменения пошли через разные лидеры.

#кабанчик #сисдиз
  • 👍 5
  • 🔥 5
  • ❤ 3
More from @jane_yanchenko
  1. Sep 30, 2026Представьте ситуацию. Дисклеймер: пример вымышленный, проблема реально встречающаяся 🐤 Вы…
  2. Sep 25, 2026В прошлой жизни, когда я была менеджером проектов, одним из первых мест работы у меня был…
  3. Sep 23, 2026Куда пропало обращение - развязка В прошлом посте у нас загадочно пропало обращение 58122.…
  4. Sep 23, 2026Куда пропало обращение Однажды от руководителя техподдержки пришло письмо, суть которого с…
  5. Sep 21, 2026🔗 Подборка постов про Кафку Как обещала на стриме, собрала посты про Кафку в удобное огла…
  6. Sep 21, 2026🎞 Готова запись стрима про Кафку: https://youtu.be/2aRKsD-MWDA Большое спасибо всем, кто…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →