Услуги / High-load
Высоконагруженные и критичные к производительности системы
Closeflow проектирует серверные системы, которым приходится держать большой поток событий, быстро отвечать и не ломаться при перегрузке. Основа — Go, PostgreSQL, Redis и брокеры сообщений; поведение под нагрузкой проверяем измерениями, а не предположениями.
02Задачи
С какими задачами работаем
Высокий поток событий
Приём и обработка событий, которые приходят быстрее, чем их можно обработать синхронно: очереди, пакетная обработка, параллельные воркеры.
Жёсткие требования к задержкам
Ответ укладывается в бюджет по p95 и p99, а не только в среднее. Ищем, где уходит время: база, сеть, блокировки, сериализация.
Перегрузка и деградация
Система должна отказывать предсказуемо: ограничивать вход, держать очередь ограниченной и не падать каскадом.
Корректность при повторах
Брокер доставляет сообщение дважды, воркер падает на полпути. Побочный эффект должен сработать один раз.
Узкие места в PostgreSQL
Индексы, планы запросов, блокировки, пулы соединений, горячие строки, партиционирование там, где оно оправдано.
Изоляция и ресурсы
Запуск ненадёжного кода или тяжёлых задач с ограничениями по процессору, памяти и времени.
03Подход
Как мы это делаем
Бюджет и гарантии
Фиксируем, какая нагрузка и какие задержки ожидаются и что система обязана гарантировать при сбое.
Простая архитектура сначала
Начинаем с понятной схемы и измеряем. Усложнение — Kafka, шардирование, кэш — добавляем там, где измерение показало необходимость.
Нагрузочные тесты
Сценарии на k6 с реалистичным профилем, замер p95 и p99, а не только пропускной способности.
Проверка инвариантов
После нагрузки и сбоев сверяем итоговое состояние: нет потерянных и дублированных эффектов.
Наблюдаемость
Метрики, логи и трассировка, по которым видно очередь, задержки и ошибки до того, как пожалуется пользователь.
04Доказательство
execute-once: надёжность, которую можно воспроизвести
Execute-once — открытый репозиторий с воспроизводимыми тестами надёжности. В нём проверяются дублирующиеся события, сбои ретрансляции, метрики p95 и p99 и инварианты итогового состояния. Идея в том, чтобы утверждение «эффект произойдёт ровно один раз» можно было проверить запуском, а не словами.
Код: github.com/Husqvarnalox/execute-once.
05Эксперимент
sandboxd: экспериментальный проект
sandboxd — демон на Go для изоляции процессов: пространства имён Linux, cgroup v2, seccomp, ограниченный планировщик, HTTP API, потоковые логи через SSE и метрики Prometheus. Проект экспериментальный. Это не готовый коммерческий контейнерный движок, а работающая демонстрация того, как мы подходим к изоляции и ограничению ресурсов.
Код: github.com/Husqvarnalox/sandboxd.
06Стек
Инструменты
Язык
Основной язык для высоконагруженных сервисов.
Данные
Очереди и события
Проверка и наблюдаемость
Система не держит нагрузку?
Опишите профиль нагрузки, узкие места и ограничения. Скажем, что можно измерить и исправить, и берёмся ли.
Обсудить нагрузку08Контакт
Расскажите, что
должно работать.
Опишите задачу, текущую систему и ограничения. Если проект подходит по профилю — предложим следующий шаг: обычно это короткий созвон с вопросами о данных, интеграциях и сроках.
- Telegram@missuk2003
- Emailceo@closeflow.ru
- GitHubHusqvarnalox