20 ключевых концепций системного дизайна
(продолжение предыдущего поста)
1. Client-Server (Клиент-сервер)
Модель, в которой клиенты отправляют запросы, а серверы обрабатывают их и возвращают ответы. Основа большинства современных приложений.
2. DNS (Domain Name System, система доменных имён)
Преобразует доменные имена (например, some.site в IP-адреса (например, 192.168.1.42), позволяя устройствам находить друг друга в сети.
3. Scalability (Масштабируемость)
Способность системы справляться с увеличением нагрузки — например, ростом числа пользователей или объёма данных. Ключевой фактор для роста сервисов.
4. Load Balancing (Балансировка нагрузки)
Распределение входящего трафика между несколькими серверами для оптимизации ресурсов, повышения доступности и предотвращения перегрузки отдельных узлов.
5. APIs (Application Programming Interfaces, программные интерфейсы приложений)
Механизмы, позволяющие клиентам и серверам обмениваться данными и функциями. Обеспечивают взаимодействие между разными системами и сервисами.
6. API Gateway (Шлюз API)
Центральный вход для всех клиентских запросов к сервисам. Упрощает управление доступом, аутентификацию и маршрутизацию запросов.
7. Microservices (Микросервисы)
Архитектура, разбивающая монолитное приложение на независимые сервисы, которые взаимодействуют через API. Упрощает разработку, масштабирование и поддержку.
8. Databases (Базы данных)
Системы для эффективного хранения и извлечения данных. Ключевой компонент для управления информацией в приложениях.
9. Caching (Кэширование)
Сохранение часто используемых данных в быстродоступном хранилище (кэше) для снижения нагрузки на базу данных и уменьшения задержек (latency).
10. Indexing (Индексирование)
Создание структур данных (индексов) для ускорения поиска информации в базе данных. Оптимизирует выполнение запросов.
11. Replication (Репликация)
Создание копий (реплик) данных на нескольких серверах. Повышает доступность и устойчивость к отказам (fault tolerance).
12. Sharding (Шардирование)
Разделение данных на части (шарды) и распределение их по разным базам данных или серверам. Позволяет масштабировать хранилища данных.
13. Object Storage (Хранилище объектов)
Система для хранения больших объектов — изображений, видео, файлов. Обеспечивает высокую доступность и масштабируемость (например, Amazon S3).
14. CDN (Content Delivery Network, сеть доставки контента)
Распределённая сеть серверов, доставляющая статический контент (изображения, CSS, JS) пользователям с ближайших узлов. Снижает задержки и нагрузку на основной сервер.
15. CAP Theorem (Теорема CAP)
Формулирует компромисс между тремя свойствами распределённых систем: согласованностью (consistency), доступностью (availability) и разделённой устойчивостью (partition tolerance). Можно одновременно гарантировать только два из трёх.
16. Consistent Hashing (Согласованное хеширование)
Алгоритм распределения данных по узлам с минимизацией перераспределения при изменении числа узлов. Эффективен для кэширования и шардирования.
17. Message Queues (Очереди сообщений)
Механизм асинхронного обмена сообщениями между компонентами системы. Позволяет обрабатывать задачи в фоновом режиме, снижает нагрузку на сервисы.
18. Rate Limiting (Ограничение частоты запросов)
Контроль количества запросов от клиентов за определённый период. Защищает сервисы от перегрузки и злоупотреблений (например, DDoS-атак).
19. WebSockets (Веб-сокеты)
Протокол для двунаправленной коммуникации в реальном времени между клиентом и сервером. Используется в чатах, играх, биржевых системах.
20. Monitoring (Мониторинг)
Отслеживание состояния и производительности системы — сбор метрик, логирование, оповещение об ошибках. Ключевой инструмент для обеспечения стабильности и быстрого устранения проблем.
Post #3272
2K