3

我們計劃使用Camel在一些外部系統(FTP,SOAP-WS,REST-WS,主題,隊列等)之間進行集成。Apache Camel和負載平衡

我們可能會使用Spring配置(Camel上下文XML),並且由於信息量很大,我們計劃將它部署到一個Tomcat集羣。

我沒有找到任何文件,如果它可能的配置,如果兩個應用程序(讓我們說它是兩個tomcat的開始)可以干預。

UPDATE

使用駱駝三今年則似乎它是很好的某些情況下,託管後:「JMS」和Web服務,負載均衡效果很好在這些情況下,但在以下情況下「 JMS',如果我們不使用標頭JMSXGroupID,我們會鬆開消息的順序。

但是問題仍然存在於從File(或FTP,sFTP,FTPS)消耗的服務中。目前,我們只激活一條腿從這個源消耗,並在腿下降的情況下,不幸的是沒有自動啓動第二程中的路線消耗FTP文件。

回答

1

只要您不寫入HTTP會話,您不必關心任何事情 - 只需將一些Tomcat節點放在負載均衡器後面即可。如果您寫入HTTP會話,這仍然很簡單,但您可能(取決於所選的配置)配置會話複製。

我一直在研究兩個類似的系統集成項目,在繁重的請求負載下工作。作爲一個部署環境,我們選擇了站在Apache服務器之後的集羣式Tomcat實例(通過AJP連接器進行通信)和BigIP負載均衡器(在我們切換到Nginx之後)。

這兩個應用程序都接受了HTTP請求。其中一個是完全無狀態的(代理類),另一個必須保留一些特定於會話的信息。對於後者,我們必須確保放入會話中的所有對象都是可序列化的,並配置會話複製。

我們已經做了很多測試,最終以經過戰鬥驗證的DeltaManager,沒有粘性會話和同步複製模式結束。根據您的系統架構,這是您需要非常仔細地考慮的問題,但有一個very good documentation可以提供幫助。

我們沒有使用粘性會話,因爲每個請求都包含大量的處理。根據我們所做的測試和請求的性質,對於我們來說,最好是循環處理,而不是再次針對特定的客戶端會話重複同一個服務器。同樣因爲沒有啓用粘性會話,所以我們使用同步複製來確保所有節點在將響應傳送到客戶端之前接收完整會話(它只阻止單個請求,所以不用擔心)。我們沒有在會話中存儲巨大的對象(只是一些重要的信息),所以我們沒有問題,默認情況下會話被複制到所有節點。但是,如果您發現它是一個瓶頸,則可以改進配置,將一些子節點放入羣集中。

+0

我認爲即使沒有傳入請求(http),兩個節點也必須被構建,以便如果它們「消耗」相同的源(文件系統,數據庫),我們必須實現一些鎖定機制,否則風險的兩個節點消耗相同的「事件」是很大的。我想知道駱駝內部是否有內置機制來考慮這一點。 –

+0

對不起 - 我沒有在你的問題中找到ftp選項。那麼,就像已經提到的基於HTTP協議的通信(REST,SOAP)一樣,沒有問題(使用負載平衡器)。對於提取文件的工作,我不知道任何開箱即用的解決方案。不僅在駱駝中,而且在Spring集成或Spring批處理中。我認爲你需要自己創建生產者,並使用你的集羣實例作爲消費者通過JMS隊列將消息傳遞給他們。 –