У нас есть веб-приложение JAVA, которое использует postgres (отдельная база данных с ведомым устройством) для хранения всех важных данных.Redis, Mongo или Hazelcast?
Теперь мы переходим от установки одного сервера к нескольким серверам, из-за чего мне нужно внести некоторые изменения для удовлетворения новых требований.
1) Нелипкие идентификаторы сеанса для балансировки нагрузки и допусков на разделение.
2) Кэш часто читаемых данных, доступных со всех веб-серверов (в альтернативе Memory/Memcache).
3) Очереди (электронная почта, SMS, задачи, выполняемые над кластером). Как правило, все они должны выполняться поверх xml api или scraping экрана.
Избегание дублирования обработки задач важно, но иногда это может произойти :-)
4) Постоянное хранение запросов и ответов API (много XML, много строк, но небольшое количество столбцов). (возможно, архивируйте, удалив старые запросы и ответы, чтобы сохранить набор данных небольшим).
5) Вход в обычное место. Стол будет продолжать расти. Также мне понадобится инструмент для доступа к журналам производства, не останавливая их. Какой-то поиск должен быть возможен на основе времени и/или строки поиска.
Я хочу, чтобы одно решение отвечало всем этим требованиям и рассматривало варианты redis, mongo и hazelcast (по моему личному предпочтению) как возможные альтернативы.
Другие важные соображения: 1) Меньше вторжения в наш код. 2) Простая стратегия резервного копирования/репликации. По крайней мере, главный раб. 3) Управляемость, Сообщество и проверенные (запущенные в производство).
Который сможет выполнить все или большинство из этих функций и требований?
EDIT - Что я сделал
- Redis поддержке менеджер сеансов для tomact.
- Redis для кэширования
- Jesque (версия java версии Response), поддерживаемая redis.
- Postgres
- SLF4J подкрепленные Log4j2
На данный момент меня не интересует распределенная база данных. Монго кажется скорее как будущий соперник постгеров, когда нам нужно масштабироваться. – gladiator