В распределённой системем различные компоненты работают вместе, при этом физически разнесены
Характеристики
💙нет центрального управляющего узла
💙узлы взаимодействуют через сеть
💙параллельное выполнение задач на разных узлах
💙отказоустойчивость: работа при отказах отдельных узлов
💙масштабирование: доабвление узлов для увеличения мощности
💙автоматическое перераспределение ресурсов в зависимости от нагрузки
💙адаптация к разным архитектурам / технологиям
Виды
⚪️Вычислительные: распределённые ресурсы для вычислительных задач (пример: кластеры для обработки больших данных)
⚪️Хранилища данных: распределяют данные между несколькими узлами (Cassandra, Яндекс.Cloud)
⚪️Файловые системы: доступ к файлам через распределённую сеть (Virtuozzo Storage, HDFS)
⚪️БД: на нескольких узлах для согласованности и доступности данных (Tarantool, CockroachDB)
⚪️Очереди сообщений (Kafka, RabbitMQ)
⚪️Системы управления (Kubernetes)
Примеры архитектурных стилей распределённых систем
Напомним, архитектурный стиль — общий принцип, а паттерн — конкретная реализация этого принципа
✨Клиент-сервер: центральный сервер обслуживает запросы клиентов
➡ Пример: веб-приложения, где браузер взаимодействует с веб-сервером
✨Микросервисы: система делится на независимые сервисы. Взаимодействуют через API и могут разрабатываться, развёртываться и масштабироваться независимо
➡ платформа для доставки еды, где микросервисы управляют заказами, платежами и клиентским профилем отдельно
✨Одноранговая (P2P): все узлы равноправны, каждый может быть как клиентом, так и сервером
➡ торрент-сети (файлы передаются без центрального сервера)
✨Многоуровневая: система разделена на слои (представление, логика, данные), каждый выполняет свою функцию
➡ веб-приложения с фронтендом, бекендом и БД на разных серверах
✨Событийно-ориентированная архитектура (EDA): система реагирует на события, что позволяет асинхронное взаимодействие
➡ онлайн-магазин: событие "новый заказ" отправляется в очередь. Службы (склад, оповещения) реагируют на события и выполняют действия (упаковка товара, отправка уведомлений)
✨Сервис-ориентированная архитектура (SOA): взаимодействие между различными сервисами, которые выполняют отдельные бизнес-функции
➡ корпоративные системы, где отдельные сервисы отвечают за учет, CRM, логистику и др.
Примеры архитектурных паттернов
🔹CQRS: разделение операций чтения и записи для повышения производительности и масштабируемости
💙 интернет-магази: обработка заказов и поиск товаров работают независимо
🔹Service Mesh: управление сетевыми взаимодействиями микросервисов для маршрутизации, мониторинга и безопасности
💙 Istio, Linkerd: управление трафиком между микросервисами
🔹Сага: уразделяет транзакции на последовательность шагов, каждый включает компенсационные действия в случае сбоя
💙 бронирование путешествия: бронь билетов, отеля и аренды автомобиля. Тут каждый шаг может быть отменён
🔹Двухфазная фиксация (2PC): протокол для атомарности транзакций. Состоит из двух фаз — подготовка и фиксация, что гарантирует согласованность данных.
💙 банковская система: перевод средств между счетами требует согласования изменений в нескольких БД
Недостатки распределенных систем
➖сложное управление и мониторинг
➖сетевые задержки влияют на производительность
➖проблемы с согласованностью данных при частых изменениях и высоких нагрузках
➖риски из-за множества точек доступа
Связь с CAP-теоремой
CAP-теорема относится только к распределённым системам.
Утверждает, что система может одновременно гарантировать только две из трёх характеристик:
💙консистентность
💙доступность
💙устойчивость к разделению
📎 Материалы
1. Лекция 1: Введение в распределенные системы
2. Централизованные vs децентрализованные vs распределенные системы
3. Основы Распределенных Систем
4. Консистентность и ACID-гарантии в распределенных системах хранения данных
5. Топ-5 архитектурных паттернов для распределённых систем
🧑🎓 Больше полезного в базе знаний по системному анализу
#архитектура