2017-09-09 2 views
0

Jgroup 클러스터링에서 상태 전송 시간을 어떻게 지정할 수 있습니까?jgroup 복제 된 hashmap에서 상태 전송에 시간 초과를 지정하는 방법은 무엇입니까?

public static ReplicatedHashMap<Integer, BaseSeatLayout> _baseSeatLayoutCache; 
JChannel baseRouteCache = new JChannel(props); 
baseRouteCache.connect("Master-Cluster"); 
client.startBaseRouteCache(baseRouteCache); 
_baseSeatLayoutCache = new ReplicatedHashMap<>(channel); 
_baseSeatLayoutCache.addNotifier(this); 
_baseSeatLayoutCache.start(10000); 
loadData()// This will load around 2 millions entry 

같은 코드는 내가 loadData()없이 슬레이브 장치 (또는 기계 2)를 실행하고,하지만 난 그 코드를 실행하면 10000ms이 경과 한대로 난 상태 시간 제한 예외에 대한 예외를 얻고있다 및 일부 부분적인 데이터가 점점 복제. 초기 상태 전송에 대한 시간 초과를 어떻게 변경할 수 있습니까? 내 tcp.xml은 다음과 같다 내가 TCP 프로토콜을 사용하고

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="urn:org:jgroups" 
     xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/jgroups.xsd"> 
    <TCP bind_port="7800" 
     recv_buf_size="${tcp.recv_buf_size:130k}" 
     send_buf_size="${tcp.send_buf_size:130k}" 
     max_bundle_size="64K" 
     sock_conn_timeout="300" 

     thread_pool.min_threads="0" 
     thread_pool.max_threads="20" 
     thread_pool.keep_alive_time="30000"/> 

    <TCPPING async_discovery="true" 
      initial_hosts="${jgroups.tcpping.initial_hosts:10.120.19.145[7800],localhost[7801]}" 
      port_range="2" /> 
    <MERGE3 min_interval="10000" 
      max_interval="30000"/> 
    <FD_SOCK/> 
    <FD timeout="3000" max_tries="3" /> 
    <VERIFY_SUSPECT timeout="1500" /> 
    <BARRIER /> 
    <pbcast.NAKACK2 use_mcast_xmit="false" 
        discard_delivered_msgs="true"/> 
    <UNICAST3 /> 
    <pbcast.STABLE desired_avg_gossip="50000" 
        max_bytes="4M"/> 
    <pbcast.GMS print_local_addr="true" join_timeout="2000" 
       view_bundling="true"/> 
    <MFC max_credits="2M" 
     min_threshold="0.4"/> 
    <FRAG2 frag_size="60K" /> 

    <pbcast.STATE_TRANSFER/> 
</config> 

답변

1

_baseSeatLayoutCache.start(10000)

10000 MS는 타임 아웃이다; 증가 시키거나 0으로 설정하여 완료 상태가 전송 될 때까지 대기하십시오.

+0

ReplicatedHashMap에서 10GB의 데이터를 전송할 수 있습니까? –

+0

예. 그러나 이는 모든 구성원이 캐시에 '10 * N GB'의 데이터를 가져야한다는 것을 의미합니다. 여기서 'N'은 캐시의 구성원 수입니다. 대신 _replicated_ 하나보다는 _distributed_ 캐시를 사용합니다. 데이터는 모든 구성원에게 복사되지 않지만 하위 집합에만 복사됩니다. 'ReplCache'는 JGroups의 샘플 (장난감) impl입니다. Infinispan (infinispan.org)은 실제 구현입니다. –

+0

그것은 내가 다른 머신 (예 : 노예)에서 동일한 데이터를 한 머신 (즉 마스터) 양식 DB의 데이터에 복사하고 다른 머신이 클러스터에서 아무 것도로드하지 않으므로 마스터에서만 읽을 수 있도록하려는 것과 같습니다. –

관련 문제