У меня есть список из 6 IP-адресов, и каждому дается определенный пороговый номер (трехпороговый1, трехслойный2 ... пороговый10). Если запрос, полученный с определенного IP-адреса, увеличивает пороговое значение в пределах лимита времени, нам нужно выполнить какое-то действие (может быть, заблокировать IP-адрес или что-то еще).
- thcount1 Задает счетчик для данного IP-адреса, который при достижении в течение 5-минутного периода проверяется на thcount2.
- thcount2 Задает счетчик для данного IP-адреса, который, если он будет достигнут в течение 8-минутного периода, должен быть заблокирован.
Например:
IP1 равен 10.32.9.99, и запросы поступают с этого IP-адреса, а IP1 находится ниже порога 1.
My logi c должен проверять, сколько запросов поступает в течение 5-минутного периода, если оно превышает 30 (thcount1), тогда он проверяет 60 (thcount2) в течение 8-минутного периода. Общая цель состоит в том, чтобы запрос с любого IP-адреса не превышал thcount2 в течение 8 минут. thcount1 - это просто еще один уровень проверки перед thcount2.
Я должен реализовать это в Java.
Я думаю, что мой logi c должен быть, когда приходит любой IP-запрос, таймер запускается на 5 минут и проверяет порог, когда приходит новый запрос, он увеличивает thcount1.
Теперь 2 возможности
1) счетчик достигает 30, тогда необходимо остановить таймер и запустить новый таймер на 8 минут.
2) счет доходит до 30, затем 5-минутный таймер продолжает повторяться.
Требуется помощь:
1) Можете ли вы помочь с кодом java.
2) Кроме того, меня беспокоит то, что если количество IP-адресов увеличивается, то количество таймеров также получает увеличивается. Не уверен, что это хороший дизайн.