Стратегии повышения производительности системы
(продолжение предыдущего поста)
1. Применение CAP-теоремы и PACELC-теоремы для выбора баланса характеристик системы
- CAP-теорема утверждает, что распределённая система может одновременно обеспечить только два из трёх свойств:
- Consistency (согласованность) — все узлы видят одинаковые данные;
- Availability (доступность) — каждый запрос получает ответ, даже если он не содержит самых актуальных данных;
- Partition Tolerance (устойчивость к разделению) — система работает при разрывах связи между узлами.
Варианты выбора:
- CP-системы (Consistency + Partition Tolerance) — приоритет точности данных (например, в финансах).
- AP-системы (Availability + Partition Tolerance) — приоритет доступности, временная несогласованность данных допустима (например, в развлекательных сервисах).
- CA-системы (Consistency + Availability) — возможны только при исключении сетевого разделения
- PACELC-теорема расширяет CAP-теорему:
- При разделении сети (P) система выбирает между доступностью (A) и согласованностью (C).
- В штатном режиме (E) — между задержками (L) и согласованностью (C). Это позволяет оптимизировать производительность за счёт снижения задержек в обычных условиях работы
2. Шардирование базы данных (Database Sharding)
- Суть: распределение данных по нескольким инстансам или серверам базы данных, где каждый шард содержит уникальный поднабор данных.
- Преимущества:
- Горизонтальное масштабирование — система легко адаптируется к росту нагрузки и объёму данных.
- Уменьшение нагрузки на отдельные узлы за счёт распределения запросов.
- Механизм: использование функции хеширования (Hash Function) для распределения ключей (Keys) по шардам (Shards) на основе вычисленного хеша.
- Пример на изображении: ключи A, B, C, D распределяются по двум шардам (Shard 1 и Shard 2) с помощью хеш-функции.
3. Кэширование базы данных (Database Caching)
- Суть: хранение часто используемых данных в кэше для ускорения доступа к ним.
- Компоненты:
- Webserver отправляет запросы к кэшу и базе данных.
- Cache хранит копии данных для быстрого доступа.
- DB — исходная база данных, к которой обращаются при «промахе кэша» (Cache Miss).
- Процессы:
- Read Path (Cache Miss): если данные отсутствуют в кэше, система обращается к БД, забирает данные, сохраняет их в кэше и возвращает клиенту.
- Write Path: при записи данных сначала обновляется кэш, затем — БД.
- Преимущества:
- Снижение нагрузки на БД.
- Уменьшение времени отклика системы.
- Повышение пропускной способности.
4. Согласованное хеширование (Consistent Hashing)
- Суть: метод распределения данных по узлам с минимизацией перераспределения при добавлении/удалении узлов.
- Как работает:
- Пространство ключей представляется как кольцо (на изображении — круг с ключами K1, K2, K3, K4).
- Узлы (серверы) также распределяются по этому кольцу.
- Каждый ключ назначается ближайшему по кольцу узлу.
- Преимущества:
- Балансировка нагрузки между узлами.
- Устойчивость к отказам узлов — данные перераспределяются только на соседние узлы.
- Лёгкость масштабирования — добавление/удаление узлов требует перераспределения лишь небольшой части данных.
5. Асинхронная обработка (Asynchronous Processing)
- Суть: отделение тяжёлых вычислительных задач от основного потока выполнения для повышения отзывчивости системы.
- Компоненты:
- Service A и Service B — сервисы, обменивающиеся сообщениями.
- Broker — посредник (очередь сообщений), который буферизирует запросы.
- Механизм:
- Сервис A отправляет запрос в брокер.
- Брокер сохраняет запрос и передаёт его сервису B, когда тот готов обработать.
- Сервис B обрабатывает запрос асинхронно, не блокируя основной поток сервиса A.
- Преимущества:
- Повышение пропускной способности — система не ждёт завершения операций.
- Разделение ответственности между сервисами.
- Устойчивость к временным сбоям — брокер сохраняет запросы до их обработки.
Post #3450
1.56K
- ❤ 5
- 🔥 3
- 👍 2