Ignite: сохраняться до остановки сервера
Мы используем распределенную структуру данных Ignite - IgniteQueue. Пожалуйста, найдите ниже детали сервера
Сервер 1: Инициализирует очередь и постоянно работает.
Сервер 2: Производитель. Производит содержимое в очередь. Началось сейчас и потом
Сервер 3: Потребитель. Расходует содержимое из очереди. Началось сейчас и потом
Проблема. Когда промежуток времени между производителем и потребителем составляет 10 минут, данные в очереди теряются.
Не могли бы вы предоставить правильную конфигурацию [выселение], которая сохраняет содержимое в очереди до остановки Сервера 1?
В конечном итоге не должно быть потери данных.
Заранее спасибо.
2 ответа
Нет очереди на выселение. По умолчанию резервные копии отсутствуют, поэтому, скорее всего, при запуске и остановке серверов происходит перебалансировка и возможная потеря некоторых записей. Я предлагаю сделать следующее:
- Начните потребителя и производителя как клиенты, а не серверы. Топология сервера, на которой хранятся данные, всегда должна быть максимально стабильной.
- использование
CollectionConfiguration#setBackups
настроить одну или несколько резервных копий для основного кэша, используемого для очереди. Это поможет сохранить состояние даже в случае сбоя одного из серверов.
Совершено в соответствии с комментарием Валентина Куличенко ниже
Сервер 1: Инициализирует очередь и постоянно работает.
Клиент 1: Производитель. Производит содержимое в очередь. Началось сейчас и потом
Клиент 2: Потребитель. Расходует содержимое из очереди. Началось сейчас и потом
Код для создания Ignite Client:
Ignition.setClientMode (правда)
val ignite = Ignition.start ()