Как оценить ограничение вызова API с помощью пользовательской конфигурации? - PullRequest
0 голосов
/ 03 января 2019

Прежде всего, спасибо всем, кто может высказать свое мнение о проблеме или поделиться своими мыслями о моем решении.Надеюсь, что все ясно, это моя проблема:

В моем проекте у меня есть действие контроллера по определенному пути маршрута (URL), которое позволяет мне вызывать стороннюю веб-службу для получения некоторой внешней информации.Это действие контроллера, для вызова стороннего веб-сервиса, должно извлечь некоторые данные доступа из базы данных на основе зарегистрированного пользователя.

На этом этапе мне нужно ограничить скорость действия моего контроллера, чтобы иметь возможностьограничить вызовы API внешнего веб-сервиса на основе настраиваемой конфигурации, которая должна использоваться вместе с данными доступа.

Пример: пользователь A посещает "/ myURL".Действие контроллера распознает пользователей A и извлекает его данные доступа из базы данных, что позволяет ему получать информацию из внешнего веб-сервиса.

Если мне нужно добавить некоторую конфигурацию ограничения скорости, которая будет препятствовать использованию пользователями A дляНапример, чаще чем один раз в секунду эти пользователи получают доступ к данным, а затем вызывают внешний веб-сервис. Где мне хранить эту конфигурацию?Как мне извлечь и использовать эти конфигурации, чтобы обеспечить хорошую производительность и избежать многократного попадания в базу данных?

Решение, которое я нашел:

Я храню конфигурацию ограничения скорости вместе спользовательский доступ к данным внутри базы данных.Я кеширую ту же конфигурацию ограничения скорости вместе с количеством запросов, которые были сделаны.Когда новый запрос попадает в действие контроллера, я получаю и обновляю данные ограничения скорости в кеше.Таким образом, я смогу настроить (или позволить пользователю настроить) значения ограничения скорости, хранящиеся в БД, и избежать нагрузки на базу данных множественными операциями чтения / записи, когда мне нужно их использовать.База данных будет использоваться только для хранения конфигурации ограничения скорости, которая после обновления заменит кэшированные конфигурации.

...