현재 distributed, fault tolerant, ETL ecosystem
을 개발하기 위해 POC
을 수행 중입니다. 내 clustering (data+notification)
목적으로 Hazelcast
을 선택했습니다. Hazelcast 리소스를 통한 인터넷 검색은 to this link이고지도 기반 솔루션을 사용하여 내가 어떻게 생각하고 있는지 정확히 일치시킵니다.Hazelcast write-through지도 저장시 사전 채우기 저장
한 점을 이해해야합니다. 그 전에 우리 아키텍처에 대한 표준 아이디어를 제공 할 수있게하십시오 :
Say we have 2 nodes A,B running our server instance clustered through hazelcast
. 그 중 하나는 요청을 수락하는 청취자입니다 (단, 페일 오버시 변경할 수 있음). 대답
A 요청을 받고이를 분산 된 맵에 넣습니다. 이 맵은 지속적 저장소에 의해 백업 된 후기 기입이고 단일 메모리 백업은 노드에 구성됩니다.
각 인스턴스에는 로컬 맵 항목 수신기가 있으며, 항목 추가 이벤트시 (asynchronous/queuing)
항목을 처리 한 다음 분산 맵에서 제거합니다.
예상대로 작동합니다.
질문 :
(10 개) 요청을받은 각 노드에서 5와 함께 배포했다고 밝혔습니다. 각 노드의 2 개 항목이 처리되었으며 두 인스턴스가 모두 충돌합니다.
이제 백킹 데이터 저장소에 총 6 개의 항목이 있습니다.
이제 우리는 두 인스턴스를 모두 가져옵니다. 문서에 따라 - "As of 1.9.3 MapLoader has the new MapLoader.loadAllKeys API. It is used for pre-populating the in-memory map when the map is first touched/used"
우리는 단순히 저장소에있는 모든 키 값을로드하여 loadAllKeys()
을 구현
- 그래서 그 두 인스턴스가 이제 6을로드 할 가능성이 의미한다. 항목과 (따라서 중복 처리의 결과)를 처리? 그로드가 클러스터에 한 번만 수행되도록 또는 그것이 동기화 된 방식으로 처리입니까?
는 (있는 경우). 나는 데이터가 볼 로드되었지만 entryAdded 이벤트는 시작되지 않습니다. entryAdded 이벤트를 시작하려면 어떻게해야합니까? (또는 시작시 보류중인 항목이 있다는 것을 알 수있는 다른 우아한 방법)?On server startup I need to process the pending entries
제안 요청.
감사합니다, Sutanu 초기화에
두 번째 문제는 "로컬"keySets를 "가져 와서"처리하는 방법입니다. 이것은 Hazelcast가 초기화 된 직후에 한 번 호출됩니다. 이것이 내가 할 수있는 최선인지 궁금 해서요. –