Ignite: сохраняться до остановки сервера

Мы используем распределенную структуру данных Ignite - IgniteQueue. Пожалуйста, найдите ниже детали сервера

Сервер 1: Инициализирует очередь и постоянно работает.

Сервер 2: Производитель. Производит содержимое в очередь. Началось сейчас и потом

Сервер 3: Потребитель. Расходует содержимое из очереди. Началось сейчас и потом

Проблема. Когда промежуток времени между производителем и потребителем составляет 10 минут, данные в очереди теряются.

Не могли бы вы предоставить правильную конфигурацию [выселение], которая сохраняет содержимое в очереди до остановки Сервера 1?

В конечном итоге не должно быть потери данных.

Заранее спасибо.

2 ответа

Решение

Нет очереди на выселение. По умолчанию резервные копии отсутствуют, поэтому, скорее всего, при запуске и остановке серверов происходит перебалансировка и возможная потеря некоторых записей. Я предлагаю сделать следующее:

  • Начните потребителя и производителя как клиенты, а не серверы. Топология сервера, на которой хранятся данные, всегда должна быть максимально стабильной.
  • использование CollectionConfiguration#setBackups настроить одну или несколько резервных копий для основного кэша, используемого для очереди. Это поможет сохранить состояние даже в случае сбоя одного из серверов.

Совершено в соответствии с комментарием Валентина Куличенко ниже

Сервер 1: Инициализирует очередь и постоянно работает.

Клиент 1: Производитель. Производит содержимое в очередь. Началось сейчас и потом

Клиент 2: Потребитель. Расходует содержимое из очереди. Началось сейчас и потом

Код для создания Ignite Client:

Ignition.setClientMode (правда)

val ignite = Ignition.start ()

Другие вопросы по тегам