Skip to content

Request Throttling Algorithms

Anatoly Kulakov edited this page Sep 18, 2023 · 1 revision

Евгений Пешков «Алгоритмы троттлинга запросов»

Проблемы на бэкенде периодически случаются у всех. Части этих ситуаций можно избежать, если провести нагрузочное тестирование, определить пределы возможностей сервиса и заранее ограничить количество одновременно обрабатываемых запросов. Это позволяет сгладить неравномерность нагрузки и справиться с обработкой хотя бы части запросов, что гораздо лучше полного падения сервиса.

Решить задачу Rate Limiting помогает примитив синхронизации под названием семафор. Он пропускает внутрь заданное количество потоков, а остальные ставит в очередь. Однако современные приложения — асинхронные, использовать в них обычный семафор неэффективно. И здесь у разработчиков фреймворков и highload-сервисов появляется необходимость выбора алгоритма реализации семафора, работающего не на уровне потоков, а на уровне асинхронных задач. Неудачно выбранный алгоритм еще больше нагрузит сервис, который и так работает под нагрузкой на пределе возможностей.


Доклад представил Евгений Пешков в рамках Встречи SpbDotNet №87.

Слайды

Слайды

Видео

https://www.youtube.com/watch?v=9dr-px0j9O0

Clone this wiki locally