2017-02-06 5 views
0

우리는 다중 사이트 WAN 구성을 사용하고 있습니다. 우리는 북미와 유럽의 지리적 거리에 걸쳐 두 개의 클러스터를 가지고 있습니다.피어 투 피어가있는 Gemfire WAN

컨텍스트 : 클러스터 1에는 게이트웨이 송신자 인 A와 B 두 개의 구성원이 있습니다. 클러스터 B에는 게이트웨이 수신기 인 두 개의 구성원 C와 D가 있습니다. 클러스터 1의 멤버 A가 시작되면 데이터베이스에서 데이터를 읽고이를 클러스터에 보내지는 gemfire 캐시에로드합니다. 2. 지금까지는 모든 것이 좋습니다.

문제 : 클러스터 2의 두 멤버가 동시에 다시 시작되면 모든 gemfire regions/data가 손실됩니다. 이 시점에서 우리는 클러스터 1의 멤버 A를 다시 시작할 수 있습니다. 다시 DB의 데이터를로드하고 클러스터 B로 푸시됩니다. 하지만 멤버 A를 다시 시작하지 않고 하드 디스크를 유지하지 않는 것이 좋습니다.

클러스터 2가 다시 시작되면 클러스터 1에서 데이터의 전체 사본을 요청할 수있는 솔루션이 있습니까?

가능한 경우 확실하지 않지만 클러스터 2 (WAN 상단)의 게이트웨이 수신기에 대해 피어 투 피어를 설정하여 다시 시작할 때 자동으로 업데이트되도록 설정할 수 있습니다.

감사합니다.

답변

0

현재 WAN을 통해 전체 데이터 복사본을 가져 오는 것은 지원되지 않습니다. 대신 사이트 A의 모든 구성원에 대해 함수를 실행하면 모든 데이터를 반복하여 해당 지역에 다시 넣을 수 있습니다. 예 :

public void execute(FunctionContext context) { 
    RegionFunctionContext ctx = (RegionFunctionContext)context; 
    Region localData = PartitionRegionHelper.getLocalDataForContext(ctx); 
    for (Object key : localData.keySet()) { 
    Object val = localData.get(key); 
    localData.put(key, val); 
    } 
} 
+0

감사합니다.이 기능은 복사 권한이 필요할 때마다 수동으로 실행해야합니다. – Henry

+0

예. 불행히도이 동작을 연결할 수있는 공용 API가 없다고 생각합니다. 따라서 수동이어야합니다. – Swapnil