2017-09-09 212 views
0

如何在Jgroup集羣中指定狀態傳輸超時?如何在jgroup replicated 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 

相同的代碼我正在子機(或機器2)上無loadData()運行,但是,當我運行代碼我得到爲狀態超時異常異常作爲10000ms已經過去,只有一些部分數據越來越複製。我怎樣才能改變初始狀態轉移的超時時間?

我使用TCP協議,我tcp.xml情況如下,

<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'是緩存中成員的數量。我會使用_distributed_緩存而不是_replicated_,其中數據不會複製到所有成員,而只會被複制到子集。 「ReplCache」是JGroups中的一個示例(玩具)impl; Infinispan(infinispan.org)是一個真正的實現。 –

+0

它更像是我希望在一臺機器(即Master)中形成數據庫並在其他機器(即從機)上覆制相同的數據,以便其他機器不會在羣集中加載任何內容,只能從主機讀取數據。 –