Необходимо реализовать пороговое окно в Java - PullRequest
1 голос
/ 16 июня 2020

У меня есть список из 6 IP-адресов, и каждому дается определенный пороговый номер (трехпороговый1, трехслойный2 ... пороговый10). Если запрос, полученный с определенного IP-адреса, увеличивает пороговое значение в пределах лимита времени, нам нужно выполнить какое-то действие (может быть, заблокировать IP-адрес или что-то еще).

enter image description here

  • 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-адресов увеличивается, то количество таймеров также получает увеличивается. Не уверен, что это хороший дизайн.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...