Я разрабатываю распределенное приложение Java, которое должно проверять список пользовательских элементов черного списка по каждому запросу.Использование Hazelcast/Redis для требования к кеш-памяти резервного копирования
Если запрос не удовлетворяет некоторым правилам приемлемости, система должна добавить идентификатор пользователя (параметр запроса) в черный список.
Я пытаюсь найти правильное решение для кеширования для реализации черного списка. Мои требования;
- запрашивая черный список должен быть очень быстрым
- черный список Технология живучесть должна быть масштабируемой
- все данные из черного списка должны быть сохранены на РСУБД также для обеспечения отказоустойчивости/перезагрузки цели.
Это два возможных решения;
Вариант 1: Я могу использовать redis для хранения данных черного списка. Всякий раз, когда запрос терпит неудачу в правилах приемлемости, я могу добавить userid для кратного кеширования. - преимущества: чрезвычайно быстрый запрос, прост в реализации - недостатки: доверяя постоянству redis, хотя он работает, это решение для кеша по дизайну, а не на уровне стойкости.
Вариант 2: Я могу использовать redis для хранения данных черного списка, тем временем я могу поддерживать таблицы db на РСУБД для черного списка. Всякий раз, когда запрос терпит неудачу в правилах приемлемости, я могу добавить идентификатор пользователя в таблицу redis cache и rdbms. - преимущества: чрезвычайно быстрый запрос, возможность (возможность) перезагрузить redis cache из db - недостатки: существует проблема согласованности между таблицей redis и db.
Вариант 3: Я могу использовать hazelcast в качестве кэша L2 для гибернации, и когда я добавляю какой-либо идентификатор пользователя в черный список, он добавляется в кеш и db.
У меня есть вопросы по поводу варианта 3
- ли hazelcast кэш L2 подходит для сохранения такого черного списка пользователей?
- Поддерживает ли hibernate проблему согласованности между кешем и db?
- Когда приложение перезагрузилось, как перезагружается L2-кеш?
и последний вопрос - Есть ли у вас какие-либо другие предложения для такого прецедента?
Edit:
Там будет 100m записи в черный список, и у меня есть пара smilar черный список.
Мое чтение играет важную роль. Мне нужно запросить наличие ключа в черный список ~ 100мс
Что бы ваш «запрос» выглядеть? Я ожидаю, что черный список будет в основном чистым доступом на основе ключа (например, на основе имени пользователя или пользователя). Вы можете уточнить? – noctarius