12 архитектурных концепций, которые должен знать разработчик
(продолжение предыдущего поста)
Балансировка нагрузки (*Load Balancing*). Распределение входящего трафика между несколькими серверами, чтобы ни один узел не оказался перегружен.
Кэширование (*Caching*). Сохранение часто запрашиваемых данных в памяти для сокращения задержки.
Сеть доставки контента (*Content Delivery Network, CDN*). Хранение статических ресурсов на географически распределённых пограничных серверах — так пользователи загружают контент с ближайшего к ним узла.
Очередь сообщений (*Message Queue*). Разделение компонентов системы: отправители помещают сообщения в очередь, а получатели обрабатывают их асинхронно.
Модель «публикация — подписка» (*Publish‑Subscribe*). Позволяет нескольким получателям получать сообщения из определённой темы (топика).
API‑шлюз (*API Gateway*). Единая точка входа для клиентских запросов, которая управляет маршрутизацией, аутентификацией, ограничением частоты вызовов и преобразованием протоколов.
Предохранитель (*Circuit Breaker*). Отслеживает вызовы нижестоящих сервисов и прекращает попытки подключения, если число сбоев превышает заданный порог.
Обнаружение сервисов (*Service Discovery*). Автоматическое отслеживание доступных экземпляров сервисов, чтобы компоненты могли динамически находить друг друга и взаимодействовать.
Шардирование (*Sharding*). Разделение больших наборов данных между несколькими узлами на основе определённого ключа шарда.
Ограничение частоты вызовов (*Rate Limiting*). Контроль числа запросов, которые клиент может отправить за заданный промежуток времени, — это защищает сервисы от перегрузки.
Согласованное хеширование (*Consistent Hashing*). Распределение данных по узлам таким образом, чтобы минимизировать переорганизацию при добавлении или удалении узлов.
Автоматическое масштабирование (*Auto Scaling*). Динамическое добавление или удаление вычислительных ресурсов на основе заданных метрик.
Post #3379
2.13K