Я хочу создать промежуточное программное обеспечение ограничения скорости для моей экспресс-обработки http, что-то вроде этого:
app.post("/v1/authentication/login", rateLimiter(5, 20), require('./api/v1-login'));
Что промежуточное программное обеспечение будет разрешать только 5 запросов в течение 20 секунд.
Я могу использовать плагин для этого, но я также работаю с кластерами / процессами, и я прочитал, что плагин не будет поддерживать процессы.
Я знаю, что могу обмениваться данными между процессами, используя БД - MongoDB или Redis.
Кроме того, я хотел бы установить пользовательское ограничение скорости - это означает, что для функции A я хочу, чтобы пользователю John разрешалось запрашивать 5 раз в каждые 20 секунд, например,
однако для той же функции я хочу, чтобы Дэни было разрешено отправлять 10 запросов в 20 секунд.
Мне также нужно, чтобы это применялось во всех процессах, как я упоминал ранее.
Я думал о написании собственного сценария сохранения данных запрашивающего пользователя, но я не знаю, что именно сохранить - его IP? его хромовый серийный номер или какой нибудь еще ..?
Должен ли я хранить это в Redis DB или Mongo?
Может быть, в памяти встроен Node.js, который лучше хранить там вместо данных?
Что вы рекомендуете?