Передача одной записи между кластером gemfire WAN - PullRequest
0 голосов
/ 08 марта 2019

У меня есть два кластера gemfire (версия 8.2) (отправитель и получатель), подключенных через WAN. Кластер отправителя получает данные из БД и передает записи в Receiver через шлюз WAN, пока оба кластера не будут подключены к сети. Иногда несколько узлов кэша из кластера Receiver выходят из строя из-за проблем со средой, которые вызывают потерю данных в кластере Receiver и влияют на моих клиентов, подключенных к нему. Мы используем gemfire-toolkit для передачи всех данных от отправителя к получателю в случае, если почти все данные отсутствуют, но это решение не подходит, если в кластере Receiver мало данных.

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

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

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

1 Ответ

1 голос
/ 08 марта 2019

По вашему описанию вы можете легко узнать точно , какие записи отсутствуют в принимающем кластере ... если это так, то самым простым решением было бы просто "коснуться" (region.get(), за которым следует region.put() без изменения значения) этих записей в отправляющем кластере.

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

Надеюсь, это поможет.Приветствия.

...