Передача данных через кластеры с помощью gemfire

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

У меня есть два кластера gemfire (версия 8.2) (частный и общедоступный), каждый из которых хранит данные объемом более 110 ГБ без сохранения в хранилище дисков. Частный кластер получает данные из БД и передает их в общий доступ через шлюз WAN, пока оба кластера не подключены к сети. У меня есть сценарий использования, при котором я перезапускаю только общедоступный кластер, но после этого он теряет данные, и для повторного заполнения данных мне нужно перезапустить частный кластер и загрузить данные из БД в частный кластер, который, в свою очередь, передает данные через WAN.

Я не могу заполнить публичный кластер из БД, так как он загружает основную БД, что повлияет на другие приложения.

Есть несколько решений, которые я попробовал.

Во-первых: экспорт набора данных из частного кластера, а затем импорт в открытый; но это отключает частные узлы Gemfire кластера, поскольку он хранит большой объем данных в каждом регионе, также у меня есть ограничение на дисковое пространство для загрузки больших объемов данных.

Второе: есть вероятность, что я предоставлю компонент JMX из общедоступного кластера. Затем я могу запустить клиентскую программу, которая вызывает функцию gemfire в частном кластере, которая перебирает записи и сбрасывает записи в публичный кластер через JMX, но моя организационная инфраструктура не позволяет мне выставлять компоненты JMX в узлах gemfire.

В-третьих: Как и во втором случае, функция gemfire может передавать данные в общедоступный кластер через очередь, которая, кажется, работает, но имеет свои ограничения. Очередь может передавать только текстовые сообщения объемом 1 МБ, из-за чего мне нужно специально обрабатывать большие объекты, а также передача данных включает в себя ненужную сериализацию и десериализацию (текстовое сообщение JSON).

В любом случае я могу попросить частный кластер повторно передать все данные через шлюз WAN или любое другое решение, которое кто-то может предложить мне изучить.

1 ответ

Решение

Вы можете попробовать "gemtouch" в этом наборе инструментов с открытым исходным кодом gemfire-toolkit.

Это звучит очень похоже на идею 2, но не требует раскрытия JMX-компонента. Он использует JMX так же, как и gfsh. Если это проблема, вы можете легко отказаться от использования JMX, поскольку он использует только JMX для получения списка регионов.

У меня такая же проблема, но я работаю с 3 кластерами Geode (каждый в другом месте).

Когда что-то странное происходит в одном из кластеров, нам нужно будет восстановить его, используя один из двух существующих кластеров:

  • Если мы "коснемся" одного из кластеров, это означает, что вся эта информация будет реплицироваться в кластер, который требует восстановления, но также и в другой кластер, который на самом деле в порядке. Наверное, это нормально, не наносит никакого ущерба, но я был бы признателен за любое мнение.
  • Если мы продолжим пропускать трафик на оставшиеся 2 кластера, в то время как в одном из них мы будем использовать GemTouch, я предполагаю, что могут возникнуть некоторые проблемы согласованности между кластерами, но я не уверен.
  • Последняя тема - о ЛИЦЕНЗИИ на gemfire-toolkit. На самом деле файла LICENSE нет, поэтому я не уверен на 100%, можно ли использовать этот инструмент.
Другие вопросы по тегам