2011-01-27 6 views
1

Я уже создал API веб-сервиса по каркасу джерси. Теперь я хочу ограничить квоты для каждого клиента. Например: - один клиент может сделать менее 10000 запросов за один день. - один клиент может делать менее 10 запросов в секунду. и так далее.Как ограничить квоту в трикотаже для каждого клиента

Должен ли я хранить эти данные в таблице базы данных? Но если я это сделаю, будет стоить много времени для обработки этих запросов, потому что мне нужно обновить таблицу.

Я с нетерпением жду других эффективных способов решения этой проблемы. Потому что это мой первый раз, чтобы сделать такую ​​работу, надеюсь, что кто-то может дать мне некоторые советы в этих проблемах. Спасибо ~!

+0

Как вы определяете себя? По IP-адресу или по имени? – Fortyrunner

ответ

2

Без информации о том, как вы определяете клиента, сложно ответить на этот вопрос. Однако одним из способов было бы отфильтровать все входящие запросы, используя ContainerRequestFilter

Затем на этом уровне вы можете определить, что такое клиент, и зарегистрировать все обращения этого клиента к вашему заявлению на Джерси. Возможно, путем увеличения значения в DataStructure или значения в базе данных. Затем выполнение задания cron очищает данные каждые 24 часа.

В идеале вы хотели бы сохранить данные в структуре данных в памяти, так как данные временны, они не будут расти до большого размера и будут удалены в течение короткого периода времени в любом случае. Однако это станет проблемой, если вы когда-либо масштабируетесь до нескольких компьютеров или нескольких экземпляров на одной машине.

Без дополнительной информации от меня я не могу дать больше информации