2013-11-24 76 views
0

我正在面對自定義負載平衡端點的負載均衡算法實現。爲WSO2編寫負載平衡算法ESB

在此文檔頁面: http://docs.wso2.org/display/ESB470/Load-balance+Endpoint

我讀:

算法 - 無論是默認的「循環法」或組的自定義加載算法。在文章中查看關於該算法的更多信息。

其中,「文章」是一個鏈接指向此頁面:

http://supunk.blogspot.it/2010/02/writing-load-balance-algorithm-for-wso2.html

但提到文章是不完整的,並且不告訴算法開發任何東西。誰能給我一個有效的例子?

回答

0

由於文件規定,該算法應該是org.apache.synapse.endpoints.algorithms.LoadbalanceAlgorithm

的實現需要編寫實現LoadbalanceAlgorithm接口的類。您可以參考org.apache.synapse.endpoints.algorithms包中的現有實現RoundRobin,WeightedRRLCAlgorithmWeightedRoundRobin類。

然後用你的類創建一個jar文件並將其添加到<ESB_HOME>/repository/components/lib文件夾並重新啓動服務器。

現在,當添加負載平衡端點時,請爲Algorithm選擇Other...並提供自定義算法的完整類名稱。例如:org.apache.synapse.endpoints.algorithms.WeightedRoundRobin

2

您可以使用下面的示例發送多個請求以使用RoundRobin算法在不同的端點之間共享。

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="TestLoadBalance" 
     transports="https,http" 
     statistics="disable" 
     trace="disable" 
     startOnLoad="true"> 
    <target> 
     <endpoint> 
     <loadbalance algorithm="org.apache.synapse.endpoints.algorithms.RoundRobin"> 
      <endpoint> 
       <address uri="http://localhost:9000/services/SimpleStockQuoteService/"/> 
      </endpoint> 
      <endpoint> 
       <address uri="http://localhost:9001/services/SimpleStockQuoteService/"/> 
      </endpoint> 
      <endpoint> 
       <address uri="http://localhost:9002/services/SimpleStockQuoteService/"/> 
      </endpoint> 
     </loadbalance> 
     </endpoint> 
    </target> 
    <description/> 
</proxy> 
+0

謝謝,我已經試過它,它的工作原理。但希望有可能編寫我自己的負載平衡算法,並與動態負載平衡端點一起工作,我自己的loadbalancehandlermembership。我知道這是一個接口,並且有2個實現:Axis和Service。但是,有沒有任何教程一步一步解釋他們如何實施? – Alex

+0

請參閱加權算法的實現,所以你可以遵循相同的http://grepcode.com/file/repo1.maven.org/maven2/org.apache.synapse/synapse-core/2.1.0/org/apache/突觸/端點/算法/ WeightedRoundRobin.java) – jayalalk

0

看着 LoadBalanceAlgortihm它不是不可能性,輕易地放棄它的端點的動態列表。 關於LoadBalanceMambershipHandler及其履行情況(Axis2和服務)...它使用的對象,如:

org.apache.axis2.clustering.management.GroupManagementAgent 
and 
org.apache.axis2.clustering.ClusteringAgent 

所以你必須使用axi2.xml內/庫/ conf目錄/ Axis2中的文件夾中的集羣配置的節點ESB。 使用ESB註冊表來保存負載均衡點,然後通過代碼訪問它,以添加一個新的地址端點列表。