Вынес Statictics и FilterCache в отдельные интерфейсы, текущая имплементация вынесена в отдельный класс. Предполагается, что с помощью конфига будет выбираться необходимый драйвер для хранения кеша и статистики.
Для добавление нового стораджа достаточно реализовать два интерфейса.
Кеш проверок хранится в Редисе как HashSet и обновляется через Transactions
Статистика еще не реализована. Есть два варианта:
Хранить данные в одном сете, каждый инстанс LimboFilter обновлял бы значения через Transactions. Потенциально может быть медленно. Не у всех инстансов будет последнее значение, особенно если заниматся обновлением значений будет каждый инстанс. Можно реализовать через Lua функции для подсчета значений и их интерполяции, тогда инстансам надо будет только получать значения и отправлять новые.
Хранить данные для каждого инстанса в разных сетах, для обработки значений надо будет собирать их и подсчитывать (подсчет можно тоже вынести в Lua). Тогда нужно придумать уникальный айди для каждого из интсансов, или использовать какое то значение из Velocity.
Подгрузка новых стореджей:
Можно реализовать внутри плагина, настройка через конфиг LimboFilter и енам с возможными значениями. Проще всего, но вопрос удобно ли тянуть все возможные зависимости?
С помощью отдельного JAR плагина и Dependency Injection. Составить как модуль к проекту или отдельным репозиторием.
Еще хочется позволить выбирать разные стораджи для кеша и статистики
Вынес Statictics и FilterCache в отдельные интерфейсы, текущая имплементация вынесена в отдельный класс. Предполагается, что с помощью конфига будет выбираться необходимый драйвер для хранения кеша и статистики. Для добавление нового стораджа достаточно реализовать два интерфейса.
Кеш проверок хранится в Редисе как HashSet и обновляется через Transactions Статистика еще не реализована. Есть два варианта:
Подгрузка новых стореджей:
Еще хочется позволить выбирать разные стораджи для кеша и статистики