System Design Space

    Глава 136

    Обновлено: 16 февраля 2026 г. в 03:00

    Designing Distributed Systems (short summary)

    Прогресс части0/17

    Связанная книга

    Kubernetes Patterns

    Детальный каталог паттернов для production deployments в K8s.

    Читать обзор

    Designing Distributed Systems (Распределенные системы. Паттерны проектирования)

    Авторы: Brendan Burns
    Издательство: O'Reilly Media, 2018
    Объём: 162 страниц

    Паттерны от Brendan Burns: sidecar, ambassador, scatter/gather, work queues и batch processing.

    Designing Distributed Systems — оригинальная обложкаОригинал
    Распределенные системы. Паттерны проектирования — переводПеревод

    Документальные фильмы

    Структура книги

    Single-Node Patterns

    Паттерны для одного узла: sidecar, ambassador, adapter. Композиция контейнеров в рамках Pod.

    Multi-Node Patterns

    Serving patterns: replicated, sharded, scatter/gather. Масштабирование и отказоустойчивость.

    Batch Patterns

    Work queues, event-driven batch, coordinated processing. Паттерны для обработки данных.

    Single-Node Patterns

    Паттерны для организации нескольких контейнеров на одном узле (в одном Pod). Основаны на принципе разделения ответственности.

    Sidecar Pattern

    Дополнительный контейнер расширяет функциональность основного приложения без изменения его кода.

    Примеры использования:

    • Log shipping (Fluentd, Filebeat)
    • Configuration sync (git-sync)
    • SSL termination

    Pod

    App
    Sidecar
    Log Service

    Ambassador Pattern

    Proxy-контейнер упрощает доступ к внешним сервисам, скрывая сложность подключения.

    Примеры использования:

    • Database connection pooling
    • Service mesh proxy (Envoy)
    • Circuit breaker
    App
    Ambassador
    External DB

    Proxy скрывает детали подключения

    Adapter Pattern

    Контейнер-адаптер преобразует вывод приложения в стандартный формат.

    Примеры использования:

    • Prometheus exporter
    • Log format normalization
    • Legacy API wrapper
    Legacy App
    Adapter
    Prometheus

    Нормализация форматов и метрик

    Multi-Node Serving Patterns

    Глубокое погружение

    Designing Data-Intensive Applications

    Kleppmann о репликации, партиционировании и consistency.

    Читать обзор

    Replicated Load-Balanced Services

    Идентичные реплики за load balancer. Простейший паттерн масштабирования для stateless сервисов.

    Horizontal scalingHigh availabilityRolling updates
    Load Balancer
    Replica A
    Replica B
    Replica C

    Sharded Services

    Данные разделены между узлами по ключу. Каждый shard обрабатывает свой subset данных.

    Sharding strategies:

    • Hash-based (consistent hashing)
    • Range-based (geographic, time)
    • Directory-based (lookup table)

    Challenges:

    • Hot spots
    • Rebalancing
    • Cross-shard queries
    Router
    Shard A
    A–F
    Shard B
    G–N
    Shard C
    O–Z

    Scatter/Gather Pattern

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

    Coordinator
    Leaf 1
    Leaf 2
    Leaf 3
    Aggregator

    Используется в search engines, distributed databases, analytics.

    Batch Computational Patterns

    Связанная книга

    Building Microservices

    Sam Newman о workflow orchestration и choreography.

    Читать обзор

    Work Queue Systems

    Producer-consumer паттерн для параллельной обработки задач.

    Source

    Генерирует work items

    Queue

    Buffer между stages

    Workers

    Parallel processing

    Source
    Queue
    Worker 1
    Worker 2
    Worker 3

    Event-Driven Batch Processing

    Обработка запускается событиями (новый файл, сообщение в очереди, webhook).

    Serverless functionsKubernetes JobsEvent sourcing
    Event
    Trigger
    Batch Job

    File upload / webhook / message queue

    Coordinated Batch Processing

    Многоэтапные pipelines с зависимостями между stages.

    Extract
    Transform
    Load
    Merge / Join

    Реализуется через workflow engines: Airflow, Argo Workflows, Temporal.

    Ownership и Functions as a Service

    Hands-Off Table

    Матрица ответственности: кто владеет каким компонентом системы. Критично для incident response и maintenance.

    Team A
    Team B
    API Gateway
    Owner
    Support
    Payments
    Support
    Owner
    Data Lake
    Owner
    -

    FaaS Decorator Pattern

    Functions как decorators для добавления cross-cutting concerns: authentication, logging, rate limiting.

    Function
    Auth
    Logging
    Rate Limit

    Декораторы добавляют cross-cutting concerns

    Применение на System Design интервью

    Полезные концепции

    • Sidecar для cross-cutting concerns
    • Ambassador для service mesh
    • Sharded services для scale
    • Scatter/Gather для search
    • Work queues для batch processing

    Вопросы, где пригодится

    • «Как добавить logging без изменения кода?»
    • «Как масштабировать stateful сервис?»
    • «Как реализовать distributed search?»
    • «Как обработать миллионы событий?»

    Главные выводы

    Single-node паттерны — основа container composition
    Replicated services — простейший путь к масштабированию
    Sharding необходим для больших datasets
    Scatter/Gather — ключ к distributed queries
    Work queues обеспечивают reliability batch processing
    Паттерны переиспользуемы между проектами и командами

    Где найти книгу