Передача данных через кластеры с помощью 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%, можно ли использовать этот инструмент.