2012-11-29 2 views
1

내 프로젝트에서는 게시자/구독자 패턴을 다소 사용하고 있습니다.분산 트리 데이터 구조

게시자에게 트리 데이터 구조를 갖고 싶습니다. 트리에서 구조적 변경 또는 노드 값 수정과 같은 변경 작업을 수행 할 때마다 변경 집합이 구독자에게 게시됩니다.

이들은 트리의 로컬 복사본을 가지고 있으며 변경 집합을 받으면 내부 구조를 변경합니다. 게시자에 연결할 때 모든 구독자는 먼저 전체 트리의 전체 복사본을 요청해야합니다.

위의 작업을 수행하는 기존 Java 라이브러리에 대해 아는 사람이 있습니까? 지금까지 "솔루션"을 발견 이후

모든 팁,

답변

0

좋아 환영합니다, 난 그냥 여기에 일반적인 생각을 게시합니다.

java.util.Map 인터페이스를 구현하는 클래스를 만들었습니다. 이 클래스는 DMPublisher<K, V>이라고하고, K은 키 유형이고, V은 맵의 값 유형입니다.

지도 인터페이스 인 DMSubscriber<K, V>을 구현하는 또 다른 클래스가 있습니다.

게시자 클래스는 명시 적으로 닫힐 때까지 소켓에서 수신을 시작합니다. 가입자가 생성되면이 소켓에 연결됩니다.

게시자 클래스에는 캐시로 사용되는 실제 해시 맵의 속성이 있습니다. 게시자의 모든 조작 방법에 대해 캐시의 해당 항목이 그에 따라 변경됩니다. 업데이트는 위에서 언급 한 소켓을 통해 모든 가입자에게 전송됩니다.

지도 인터페이스 옆에있는 구독자는 청취자가 연결할 수있는 관찰자 패턴을 사용하고 있습니다. 소켓으로부터 수신 한 모든 업데이트가 모든 리스너에 전달됩니다.

연결되면 게시자는 일관된 상태를 유지하기 위해 캐시에 현재 보관되어있는 모든 데이터를 구독자에게 보냅니다.

두 클래스 모두 멀티 스레딩 지원을 위해 동기화됩니다.

누구든지 소스 코드에 관심이 있으시면 언제든지 저에게 연락하십시오.