Системные и архитектурные модели
Архитектурные модели описывают, как организованы компоненты распределенной системы и как между ними распределяется ответственность за вычисления и данные.
Definition
Архитектурная модель распределенной системы определяет типы компонентов (процессов), их роли, а также паттерны связи и зависимости между ними, абстрагируясь от физических машин, на которых они работают.
Scope
Эта тема охватывает основные архитектурные стили распределенных систем: клиент-серверные, многоуровневые (n-уровневые), одноранговые и гибридные организации, а также структурные паттерны, такие как многослойные, объектно-ориентированные, ресурсно-ориентированные (REST) и событийно-ориентированные архитектуры. Она также охватывает размещение процессов и компромиссы при разделении, репликации и кэшировании компонентов между машинами.
Core questions
- Как следует разделить ответственность за вычисления и данные между компонентами?
- Когда одноранговая организация предпочтительнее клиент-серверной?
- Какой архитектурный стиль наилучшим образом поддерживает масштабируемость и эволюционируемость для данной рабочей нагрузки?
Key theories
- Клиент-серверная и многоуровневая организация
- Компоненты разделены на запрашивающих клиентов и отвечающих серверов, а логика приложения распределена по уровням представления, обработки и данных, которые могут быть распределены независимо для балансировки нагрузки и масштабирования.
- Одноранговая и децентрализованная организация
- Все узлы функционально эквивалентны и действуют как клиенты, так и серверы, что позволяет создавать самоорганизующиеся оверлейные сети без центральной точки управления или отказа, ценой более сложных механизмов поиска и обеспечения согласованности.
- Ресурсно-ориентированная архитектура (REST)
- Передача репрезентативного состояния (Representational State Transfer) структурирует систему вокруг адресуемых ресурсов, которыми манипулируют через унифицированный, без сохранения состояния интерфейс, — архитектурный стиль, разработанный для объяснения и управления масштабируемостью веба.
Clinical relevance
Архитектурный стиль является наиболее значимым ранним решением при проектировании системы: он определяет масштабируемость, изоляцию отказов и степень независимости команд в развитии компонентов, а также лежит в основе выбора между монолитными, микросервисными и одноранговыми развертываниями.
History
Распределенные архитектуры эволюционировали от централизованных мейнфреймов к клиент-серверным вычислениям в 1980-х годах, к многоуровневым корпоративным системам и крупномасштабным одноранговым сетям в 1990-х и 2000-х годах, а затем к ресурсно-ориентированным веб-архитектурам, принципы которых были сформулированы в диссертации Филдинга по REST в 2000 году.
Key figures
- Roy Fielding
- Andrew S. Tanenbaum
- Maarten van Steen
Related topics
Seminal works
- tanenbaum2017
- fielding2000
Frequently asked questions
- В чем разница между архитектурной моделью и физическим развертыванием?
- Архитектурная модель описывает логические компоненты и паттерны их взаимодействия, в то время как физическое развертывание отображает эти компоненты на реальные машины и сети. Одна архитектурная модель может быть развернута во многих физических конфигурациях.