Основы распределённых систем

Ключевые концепции распределённых систем: консенсус, репликация, согласованность.

Распределённые системы — это системы, компоненты которых находятся на разных машинах и взаимодействуют через сеть.

Основные вызовы

  1. Сетевые сбои — сеть ненадёжна
  2. Частичные отказы — часть системы может упасть
  3. Отсутствие глобального времени — часы не синхронизированы

CAP-теорема

Нельзя одновременно гарантировать:

  • C (Consistency) — согласованность
  • A (Availability) — доступность
  • P (Partition tolerance) — устойчивость к разделению

При разделении сети нужно выбирать между C и A.

Консенсус

Алгоритмы консенсуса (Raft, Paxos) позволяют узлам договориться о значении.

Лидер → Follower 1
      → Follower 2
      → Follower 3

Запись считается подтверждённой после получения большинства голосов.

Репликация

Синхронная

Запись подтверждается после записи на все реплики.

  • Плюс: строгая согласованность
  • Минус: высокая задержка

Асинхронная

Запись подтверждается сразу, реплики обновляются позже.

  • Плюс: низкая задержка
  • Минус: возможна потеря данных

Рекомендации

  • Используйте идемпотентные операции
  • Планируйте отказы
  • Тестируйте с Chaos Engineering