Как вы регулируете REST API, используя множество динамометров Heroku?

Я настроил регулирование REST API, принимая максимум 10 запросов в минуту. Он работает, как и ожидалось, в локальной среде.

Однако при развертывании на Heroku это регулирование применяется на динамической основе. Поскольку маршрутизация для выбора динамометра является случайной, это означает, например, что если у меня есть 2 динамометра, ошибка может возникнуть между 11-м и 20-м запросом (на самом деле это часто происходит около 16 или 17 запросов).

Как добиться чистого дросселирования с детерминированными скоростями, которые не меняются при изменении конфигурации dyno на Heroku?


person David D.    schedule 19.09.2019    source источник


Ответы (1)


В настоящее время вы должны хранить данные регулирования в памяти. Вам нужно сохранить это в общей базе данных, такой как Redis. Если вы каждый раз читаете и записываете значение в/из этой базы данных, оно будет использоваться совместно между дино, и у вас будет что-то намного более надежное.

person Damien MATHIEU    schedule 19.09.2019
comment
Большое спасибо, это имеет смысл. Возможно, глупый вопрос, но будет ли это замедлять запросы API, поскольку для этого требуется чтение/запись во внешней БД? Как вы гарантируете, что API по-прежнему работает, если сервер Redis выйдет из строя? - person David D.; 19.09.2019
comment
Да, это немного сократит время отклика. И обеспечение того, чтобы API продолжал работать, если сервер Redis отключается, зависит от того, как вы пишете свой код. Вы можете заставить свой код игнорировать дросселирование, например, если Redis выдает ошибки. - person Damien MATHIEU; 19.09.2019