2010-04-17 37 views
0

我們試圖設計6個Web服務,它們將服務於另一個客戶端組件。客戶端組件需要來自我們正在實施的Web服務的數據。通過Web服務傳遞大量數據的理想方式/體系結構

現在,問題是,我們正在實現的Web服務不是1個,有一個客戶端組件訪問的Web服務,這啓動了一系列(5個)Web服務,它們從各自的數據存儲最後將數據提供回原始Web服務,然後將原始數據傳回客戶端組件。

因此,如果請求的數據變成巨大的,那麼,這對我們的內部溝通渠道將是一個嚴重的問題。

那麼,你們有什麼建議?可以採取什麼措施來避免內部Web Service之間的通信通道過載,同時還要將數據交付給客戶端組件。

更新1

使用5 WS,其中,1WS不知道別人,除了下一個是業務需求。實際上,5家公司正在整合「小型服務」。

我們使用Java和Axis2

+0

您使用的是什麼webservice框架?如果您使用的是ASP.NET,則可以選擇使用二進制xml序列化,這可以顯着提高性能。此外,如果您可以避免使用基於SOAP/xml的web服務,而是使用純文本json,那麼這也會大大減少您的有效負載。最後,Web服務的設計是向外界公開一個公共API,認真考慮直接與「系列(5個或更多)」Web服務的數據庫進行溝通,如果這些服務是嚴格內部的話。 – 2010-04-17 13:30:36

+0

問題已更新 – zengr 2010-04-17 18:06:50

+0

您可以緩存您從中抽取的5個外部Web服務的結果(可能是指定的到期間隔)嗎?這對我來說是一個非常有效的解決方案。 – 2010-04-18 05:37:49

回答

1

我們有類似的問題。除了試圖避免它(例如,爲了內部溝通直接去db而不是web服務),你可以通過至少不連續執行5個左右的任務來減輕它。創建新線程並行收集它們,並在最後處理它們以減少延遲(除非它們可能爭奪相同的資源和瓶頸)。

但在此之前我做任何事情負載測試,看看它是否是甚至問題,並得到一些基線統計信息,因此你可以看到每一個變化使得提高什麼。此外,有時你可能會更好地調整網絡設置或實際的網絡,而不是試圖優化代碼 - 但是再次測試並查看。

+0

問題更新 – zengr 2010-04-17 18:07:17

1

將所有數據放在一個臨時壓縮文件中,並返回該文件的ftp url。

客戶端獲取大數據塊解壓縮並讀取它。 (可能是ftp服務器的一些認證機制)

+0

好吧,個別Web服務的數據存儲只能由那些WS訪問,它們不能公開,即使對於某些其他組件也是如此。 – zengr 2010-04-17 20:46:39