Как leaky bucket ограничивает допуск нагрузки
Leaky bucket задаёт вместимость и скорость освобождения ёмкости. Новая операция занимает часть объёма; если места не хватает, её отклоняют. Состояние меняется с течением времени, независимо от завершения запросов.
В разборе механизма admission control показаны два варианта: измеритель разрешает работу сразу, а очередь удерживает её до выпуска. В варианте измерителя не нужен фоновый процесс, который постоянно «осушает» ведро: достаточно хранить прежний уровень и время проверки, затем пересчитать уровень при обращении.
На примере GraphQL API Shopify разобрана стоимость запросов: она зависит от запрошенных данных. После выполнения разница между оценкой и фактической стоимостью корректирует состояние ведра.
Для разработчиков API и баз данных здесь есть ориентир: определить стоимость работы, допустимый всплеск и поведение клиента при отказе. Ограничение скорости само по себе не ограничивает число одновременно выполняющихся запросов.
#алгоритмы #архитектура
Post #3071
169
