Разгоняем сервис до 1M RPS: с чего начинается производительность

Оглавление Введение Когда в статье написано, что система “держит 1M RPS”, а рядом нет ни размера ответа, ни latency, ни уровня ошибок, ни описания стенда, ни состояния кэша, ни правил подсчета успешных запросов, то инженерной ценности у такой цифры почти нет. Пропускная способность системы сам по себе не говорит, держит ли система реальный пользовательский трафик, … —Читать далее—

Loading

p99 глазами разработчика: как измерять, считать, расследовать и реально снижать tail latency

Оглавление Введение Перцентили latency – это не “красивая статистика”, а способ говорить про пользовательский опыт и предсказуемость системы там, где среднее время ответа на запрос (avg) системно врет. Практика крупных распределенных систем показывает: даже редкие (например, 1%) “медленные” ответы на уровне компонентов превращаются в массовые (десятки процентов) “медленные” ответы на уровне сервиса, если запросы имеют … —Читать далее—

Loading

Версионирование REST API в Spring Boot: практическое руководство

Оглавление Введение Версионирование API – ключевой механизм, позволяющий эволюционировать веб-сервисы без нарушения работы существующих клиентов. Многие крупные компании версионируют свои REST API, чтобы внести изменения в сервис, не ломая интеграции для внешних потребителей. С другой стороны, поддержка нескольких версий API приводит к усложнению кода и увеличению объема поддержки. Если нет прямой необходимости, лучше избегать множества … —Читать далее—

Loading

CQRS в распределенных системах

Оглавление Введение Command-Query Responsibility Segregation (CQRS) – это архитектурный паттерн, предлагающий раздельное ведение операций модификации данных (команд) и операций чтения данных (запросов). Идея возникла из принципа Command-Query Separation (CQS) Бертрана Мейера, где каждый метод либо команда (изменяет состояние), либо запрос (возвращает данные), но не совмещает и то и другое. CQRS развивает эту идею на уровне … —Читать далее—

Loading

Retry storm в распределенных системах

Оглавление Введение Представьте себе: ночью происходит сбой внешнего API, и десятки микросервисов в вашем приложении дружно начинают многократно повторять неудачные запросы. Вместо быстрого восстановления система испытывает еще большую нагрузку – как будто сама себя атакует непрекращающимися повторными вызовами. Такое явление получило название “лавина ретраев” (retry storm) – ситуация, когда множество компонентов одновременно пытаются повторить сбойные … —Читать далее—

Loading