Elytrium / LimboFilter

Powerful bot filtering solution for Minecraft proxies. Built with LimboAPI.
https://elytrium.net/
GNU Affero General Public License v3.0
138 stars 40 forks source link

[WIP] Adding remote storage for statistics and filter cache #49

Closed realkarmakun closed 1 year ago

realkarmakun commented 1 year ago

Вынес Statictics и FilterCache в отдельные интерфейсы, текущая имплементация вынесена в отдельный класс. Предполагается, что с помощью конфига будет выбираться необходимый драйвер для хранения кеша и статистики. Для добавление нового стораджа достаточно реализовать два интерфейса.

Кеш проверок хранится в Редисе как HashSet и обновляется через Transactions Статистика еще не реализована. Есть два варианта:

  1. Хранить данные в одном сете, каждый инстанс LimboFilter обновлял бы значения через Transactions. Потенциально может быть медленно. Не у всех инстансов будет последнее значение, особенно если заниматся обновлением значений будет каждый инстанс. Можно реализовать через Lua функции для подсчета значений и их интерполяции, тогда инстансам надо будет только получать значения и отправлять новые.
  2. Хранить данные для каждого инстанса в разных сетах, для обработки значений надо будет собирать их и подсчитывать (подсчет можно тоже вынести в Lua). Тогда нужно придумать уникальный айди для каждого из интсансов, или использовать какое то значение из Velocity.

Подгрузка новых стореджей:

  1. Можно реализовать внутри плагина, настройка через конфиг LimboFilter и енам с возможными значениями. Проще всего, но вопрос удобно ли тянуть все возможные зависимости?
  2. С помощью отдельного JAR плагина и Dependency Injection. Составить как модуль к проекту или отдельным репозиторием.

Еще хочется позволить выбирать разные стораджи для кеша и статистики