Перейти к содержанию

Архитектура

·2 минуты·
Гибридная архитектура сочетает распределенное KV-хранилище для оперативных данных и Git-репозиторий как источник истины и средство восстановления.

Задачи #

  • Распределенное хранение — информация о сущностях сети доступна из любого рабочего сегмента.
  • Отказоустойчивость — сеть продолжает работать, пока доступна хотя бы одна Core-нода и одна Entry-нода.
  • Сохранность при перестроении — полное восстановление сети с нуля из Git-репозитория даже после потери всей оперативной инфраструктуры.
  • Автоматизация — программное управление всеми функциями сети через CLI или веб-интерфейс.

Ограничения #

ПараметрЗначение
Размер сетиДесятки — сотни узлов, в редких случаях до 1000
KV-кластерНа начальном этапе — на Core-нодах
Root-нодаМожет быть неактивна длительное время

Доступ узлов к хранилищам #

УзелKV-кластерGit-репозиторий
Root-нодаЧтение / записьЧтение / запись
Core-нодаЧтение / запись (оперативные изменения)Запись (синхронизация KV → Git)
Entry-нодаТолько чтениеНет доступа

Подробнее о взаимодействии каждого типа узла с хранилищами — в разделе Узлы сети.

Рассмотренные альтернативы #

ПодходПричина отклонения
Файловая система на каждом узлеНет консистентности, сложная синхронизация, ненадежное восстановление
Реляционные БД (PostgreSQL)Избыточность для KV-данных, сложность развертывания распределенного кластера
Облачные БД (DynamoDB и др.)Зависимость от провайдера, риски конфиденциальности, стоимость

Ни один подход в чистом виде не удовлетворяет всем требованиям — в первую очередь, по сохранности данных при полном перестроении сети. Это привело к выбору гибридной архитектуры.

Гибридный подход #

Функции хранения разделены на два слоя:

СлойКомпонентНазначение
ОперативныйKV-кластер (etcd)Текущее состояние сети, быстрое чтение/запись, строгая консистентность
ДолгосрочныйGit-репозиторийЖелаемое состояние, версионирование, аудит, восстановление с нуля
graph TD Git["Git-репозиторий
источник истины"] KV["KV-кластер
оперативные данные"] Root["Root-нода"] Core["Core-ноды"] Entry["Entry-ноды"] Git -->|"пуш / пулл"| Root Git -->|"пуш / пулл"| Core Root -->|"чтение / запись"| KV Core -->|"чтение / запись"| KV Entry -->|"чтение"| KV style Git fill:#374151,color:#fff,stroke:#1f2937 style KV fill:#374151,color:#fff,stroke:#1f2937 style Root fill:#7c3aed,color:#fff,stroke:#6d28d9 style Core fill:#1d4ed8,color:#fff,stroke:#1e40af style Entry fill:#0891b2,color:#fff,stroke:#0e7490

Ключевые принципы #

  • Распределенность и отказоустойчивость — KV-кластер на Core-нодах обеспечивает устойчивость к отказу отдельных узлов.
  • Иерархия управления — Root-нода сохраняет высший уровень контроля; оперативное управление делегировано Core-нодам.
  • Автоматизация — API KV-хранилища позволяет полностью автоматизировать управление сетью.
  • Сохранность данных — Git-репозиторий гарантирует восстановление сети даже после потери всех оперативных узлов.
  • Консистентность — KV-хранилище обеспечивает строгую консистентность; синхронизация поддерживает согласованность между KV и Git.