2015-12-23 29 views
0

我們已經部署了一個使用P2P模型的代理集羣。數據遍佈整個集羣。我們的許多客戶使用相同的地址「故障轉移:(tcp:// ip1:61616,tcp:// ip2:61616,tcp:/ /ip3:61616,tcp://ip4:61616,tcp:/ip5:61616)?nested.wireFormat.maxInactivityDuration=1000「 。但最後,我們發現很多消費者會連接相同的代理,從而導致數據不可用經紀人從其他經紀人轉移。這種轉移佔用帶寬很多。 我該如何解決平衡問題?以及消費者如何決定使用哪家經紀商?如何避免連接到ActiveMQ中的一個代理?

例如,我們有3名經紀人和所有與下面的代碼片段配置:

<transportConnectors>  
    <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximum 
Connections=1000&amp;wireFormat.maxFrameSize=104857600" updateClusterClients="true" rebalanceClusterClients="true" updateClusterClientsOnRemove="true" discoveryUri="multicast://default" /> 
</transportConnectors> 

<networkConnectors> 
    <networkConnector uri="multicast://default"/> 
</networkConnectors> 

在消費計劃,我使用「故障恢復:(TCP:// BROKER1:61616,TCP:// broker2:61616)?nested.wireFormat.maxInactivityDuration = 1000「作爲代理地址。 我運行三個使用者進程,但發現所有三個進程最終連接到broker1IP,這導致broker2和broker3中的數據被轉移到broker1進行使用。 這會導致巨大的網絡負擔。

回答

1

我假定你正在尋找在經紀人的消息的負載均衡,可以使用中間商的網絡來解決這個問題,看看這個鏈接獲取更多信息http://activemq.apache.org/networks-of-brokers.html

+0

我已經閱讀文檔,但沒有找到一個解決方案。我更新了我的問題描述以更清楚地說明我的問題。謝謝。 – user2351281

+0

使用發現協議連接到代理而不是故障轉移,可以在http://activemq.apache.org/discovery-transport-reference.html找到解釋。 – Sundar