Ключевые Архитектурные паттерны(продолжение
предыдущего поста)
1. Client-Server Architecture (Клиент-серверная архитектура)-
Суть: задачи распределены между клиентами и серверами. Клиенты отправляют запросы, серверы обрабатывают их и возвращают результаты.
-
Компоненты: -
Клиент (Client) — инициирует запросы (например, веб-браузер, мобильное приложение).
-
Интернет (Internet) — канал передачи данных.
-
Load Balancer (балансировщик нагрузки) — распределяет запросы между серверами для оптимизации производительности.
-
Сервис (Service) — обрабатывает запросы и взаимодействует с базой данных.
-
CDN (Content Delivery Network) — ускоряет доставку статического контента, снижая нагрузку на сервер.
-
Преимущества: масштабируемость, централизованное управление, надёжность.
-
Недостатки: зависимость от сервера, затраты на инфраструктуру, необходимость постоянного подключения к сети.
-
Примеры: веб-сайты, электронная почта, онлайн-игры
2. Async Task Execution with Queues (Асинхронное выполнение задач с очередями)-
Суть: задачи выполняются асинхронно через очереди, что позволяет контролировать параллелизм и порядок выполнения.
-
Компоненты: -
Presentation Layer (уровень представления) — взаимодействует с пользователем.
-
Business Logic Layer (уровень бизнес-логики) — обрабатывает логику приложения.
-
Data Access Layer (уровень доступа к данным) — работает с базой данных.
-
Очереди — хранят задачи для асинхронной обработки.
-
Преимущества: предотвращение перегрузки системы, управление ресурсами, последовательное выполнение задач (например, финансовые транзакции).
-
Примеры использования: обработка больших объёмов запросов, фоновые задачи (отправка писем, обработка изображений)
3. Serverless Architecture (Бессерверная архитектура)-
Суть: разработчики не управляют серверами, а фокусируются на написании функций, которые запускаются по требованию облачным провайдером.
-
Компоненты: -
Lambda Function — основная функция, обрабатывающая события.
-
Lambda Worker — исполнители задач, запускаемые по мере необходимости.
-
Особенности: модель Functions as a Service (FaaS) — код загружается в облако, провайдер управляет ресурсами.
-
Преимущества: масштабируемость, снижение затрат, ускорение разработки, автоматическое управление инфраструктурой.
-
Недостатки: ограниченный контроль над средой выполнения, сложности с отладкой, потенциальные проблемы с безопасностью.
-
Примеры: AWS Lambda, Google Cloud Functions
4. Pipes and Filters (Каналы и фильтры)-
Суть: процесс обработки данных разбивается на шаги, каждый из которых выполняется отдельным обработчиком (фильтром). Данные передаются через каналы.
-
Компоненты: -
Data Source (источник данных) — начальная точка потока данных.
-
Filters (Filter 1, Filter 2, Filter 3) — обрабатывают данные, трансформируя их.
-
Data Sink (потребитель данных) — конечная точка потока.
-
Преимущества: модульность, возможность параллельной обработки, лёгкость замены и перестановки фильтров.
-
Недостатки: фильтры могут тратить больше времени на преобразование данных, чем на их обработку.
-
Примеры: оболочка UNIX Shell, архитектура компилятора (лексер, парсер, семантический анализатор, генератор кода)
5. Event-Driven Architecture (Событийно-ориентированная архитектура)-
Суть: компоненты системы реагируют на события (изменения состояния кода, действия пользователя). Взаимодействие асинхронное.
-
Компоненты: -
Producer (производитель) — генерирует события.
-
Consumers (потребители) — обрабатывают события.
-
Особенности: события передаются по каналам (TCP/IP, файлы JSON/XML), брокеры обеспечивают сохранность событий при сбоях.
-
Преимущества: высокая масштабируемость, гибкость, бесшовная интеграция, быстрая реакция на события.
-
Недостатки: сложность проектирования, обеспечение согласованности событий в распределённых системах.
-
Примеры: обработка заказов в интернет-магазинах, системы IoT, платформы Uber, Netflix