Designing Distributed Systems
Автор книги является сооснователем kubernetes, поэтому его опыт в проектировании распределенных систем является довольно актуальным:) Книга мне показалось хорошей, но одновременно слишком простой. Но за счет этого она отлично подойдет новичкам вступающим на запутанную дорожку distributed systems:)
Книга состоит из 3х частей:
- одноузловые паттерны проектирования
- паттерны проектирования обслуживающих систем
- паттерны проектирования систем пакетных вычислений
Все паттерны даются в контексте контейнеров и их оркестрации, книга содержит практические примеры, для реализации которых используется инсталляция kubernetes и его примитивы, такие как pods, deployments, services, etc. Ближе к концу книги вы попробуете использовать helm для разворачивания etcd, kafka и иже с ним.
В первой части рассматриваются паттерны:
- sidecar: для https, динамической конфигурации и метрик
- ambassador: для использования шардированного сервиса и для сплита трафика для тестирования разных версий
- adapters: мониторинг, журналирование
Во второй части рассматриваются:
- репликация: для stateless сервсиов, sticky sessions, кеширование, …
- шардирование: консистентный хеш, шардирование реплицированных сервисов, …
- scatter-gather: распределенный поиск по документам
- FaaS и events: преимущества и недостатки FaaS, реализация декораторов на функциях
- ownership election: локи для распределенных систем
В третьей части рассматриваются паттерны проектирования систем пакетных вычислений:
- системы на основе очередей задач
- событийно-ориентированная пакетная обработка
- координированная пакетная обработка
#DistributedSystems #Architecture #SoftwareArchitecture #SystemDesign #Software #SoftwareDevelopment