2013-05-21 3 views
2

작업이 있습니다 (나중에 설명하겠습니다). 알고있는 한 Hazelcast가 최선의 선택입니다. 그러나 그것은 많은 기능과 용도를 가지고 있으므로 정확히 무엇을 선택해야하는지 이해할 수 없습니다.Hazelcast 기능 선택

사실 작업은 다음과 같습니다
나는 자바 서버 응용 프로그램 A와 자바 서버 응용 프로그램 B. 나는 그들 중 일부는 그들 중 일부는 B 인스턴스를 잡고, A 앱 인스턴스를 잡고, 여러 자바 서버가, 일부는 모두 잡고 있습니다.

모든 서버간에 하나의 맵을 저장해야합니다. A와 B는 모두지도에 넣을 수 있고 B는 키로지도에서 읽을 수 있습니다.

그래서 분산 된지도가 필요하다고 생각하지만 다른 기능이 필요한지 이해할 수 없습니까? 백업 구성은 무엇입니까? B가 키로 조회하기 위해 분산 쿼리가 필요합니까? "Hazelcast 클라이언트"가 필요합니까?

답변

2

Hazelcast는 훌륭한 도구입니다. 동의하는 것은 당신이 필요로하는 것을보기에는 어려울 수 있지만, 생각보다 간단합니다.

그리드를 실행하려면 하나 이상의 Hazelcast 노드를 실행해야합니다 (이중화를 위해 2 개 이상을 권장).

서버 A/B에 헤이젤 캐스트 노드가 포함되어 있거나 서버 A/B에 헤이젤 캐스트 그리드를 외부에서 실행하고 HazelcastClient를 사용하여 대화를 나눠야하는 경우 사용자에게 달려 있습니다.

이 결정을 평가하는 것이 가장 좋습니다. 헤즐리 캐스트 그리드 노드를 서버 A/B에 임베드하여 시작하는 것이 더 쉽습니다. 그것이 당신을 위해 작동하지 않는다면 별도의 hazelcast 그리드를 실행하고 서버 A/B에서 HazelcastClient를 사용하도록 전환하십시오.

그리드가 실행되는 데 필요한 일부 포트를 구성해야합니다. 가장 일반적인 구성은 localhost : 5701이고 여기에서 증분 포트 (5702, 5703 등)입니다.

이 데이터를 배포하려면,이 죽었 쉬운 -하는 hazelcast의지도를 구성 이름을 지정하고 백업 수를 (값 1 괜찮을 것)을 설정합니다.

나는 IMap<K,V> 때문에 당신이 필요로하는 데이터에 대한 액세스 권한을 부여해야합니다, 당신은 여기에 분산 쿼리가 필요하다고 볼 수 없습니다.

이 정보가 도움이됩니까? 더 구체적인 질문이 있으십니까?

Hazelcast 설명서는 상당히 좋으며 적극적인 사용자 커뮤니티도 있습니다.

행운을 빈다.

+0

노드 대 클라이언트에 관한 요지는 내가 궁금해 한 것이었다 .... 대답 - 시도해 보라 ..? – Crowie

+0

정확히, 귀하의 상황에 가장 적합한 것을보십시오. 말하자면 3 개의 안정적인 jvms가 이미 실행 중이라면 Hazelcast 인스턴스를 각각의 jvms에 임베드하는 것이 좋습니다. 그렇지 않으면 {x} 노드의 외부 그리드를 실행하고 HazelcastClient를 통해 노드와 대화하는 것이 매우 쉽습니다. 요즘 나는 후자의 경우를 취하는 경향이 있지만, 처음에는 쉽게 전의 사례를 발견했습니다. – vikingsteve

0

스티브! 당신의 답변을 위해 매우 마하 감사합니다. 나는 또한 hazelcast을 만들어

final static String DistributedMapName = "SystemUserActivityMap"; 
private static HazelcastInstance instance = Hazelcast.newHazelcastInstance(); 

처럼 - 마지막으로 내 논리 클래스에서 내가 Hazelcast 인스턴스에서 작동하는 싱글 톤을 만들었습니다.그래서 곧 그것이 시작, XML, 아주 간단

<network> 
      <port auto-increment="true">5701</port> 
      <join> 
       <multicast enabled="false"> 
        <multicast-group>224.2.2.3</multicast-group> 
        <multicast-port>54327</multicast-port> 
       </multicast> 
       <tcp-ip enabled="true"> 
        <interface>127.0.0.1</interface> 
       </tcp-ip> 
       <aws enabled="false"> 
       </aws> 
      </join> 
     </network> 
    <map name="SystemUserActivityMap">... 

모든 것이 처음에는 잘 작동 듯하지만 나중에 내가 hazelcast 수시로 새로운 포트를 시작 바람둥이 오류 로그 메시지에서 발견

Members [1] { 
    Member [127.0.0.1]:5701 this 
} 

이제

Members [9] { 
    Member [127.0.0.1]:5701 
    Member [127.0.0.1]:5702 
    Member [127.0.0.1]:5703 
    Member [127.0.0.1]:5704 
    Member [127.0.0.1]:5705 
    Member [127.0.0.1]:5706 
    Member [127.0.0.1]:5707 this 
    Member [127.0.0.1]:5708 
    Member [127.0.0.1]:5709 
} 

성장 계속 ... 가이 시스템에서 모든 포트를 사용하는 이유는 이해가 안

+2

Mikhail, Tomcat에 웹 앱을 여러 번 배포 했습니까? Tomcat 관리자 또는 자동 배포 (또는 방법)를 통해 배포를 취소하고 배포 했습니까? 배치 해제하고 hazelcast 인스턴스가 종료되지 않은 상태에서 메모리/스레드 누수가 발생할 수 있다는 느낌이 들었습니다. 바람둥이를 완전히 다시 시작하면 어떻게됩니까? 테스트하여 결과를 알려주십시오. – vikingsteve