2009-08-15 27 views
0

我有一個應用程序使用SOAP,REST服務或僅使用數據庫存儲過程與幾個內部和外部源進行通信。顯然,性能和穩定性是我正在處理的一個主要問題。即使端點在最佳狀態下運行,對於大量數據,我也能輕鬆看到需要10秒鐘的呼叫。與外部數據依賴關係的性能問題

因此,我試圖通過預取數據和本地存儲來提高應用程序的性能 - 至少讀取操作是快速的。

儘管我的應用程序是數據的主要使用者和生產者,但是我的應用程序之外的某些數據也可能會改變,我無法控制。如果我使用緩存,當我的應用程序之外的數據發生更改時,我永遠不會知道何時使緩存無效。

所以我認爲我唯一的選擇是有一個工作調度程序運行,不斷更新數據庫。我可以根據用戶登錄和使用應用程序的頻率優先考慮用戶。

我說的是5萬用戶,至少有10個端點速度非常慢,有時可能需要一分鐘才能打一個電話。像Quartz會給我我需要的規模嗎?我將如何解決這個問題,成爲一個單一的失敗點?

我只是在尋找一些不需要高維護的東西,並加速了至少一些較簡單的子系統 - 如果不是最多的話。有什麼建議麼?

+0

請澄清一下這些50,000個用戶在做什麼。他們如何與來自多個來源的數據進行交互?您是否積極提取所有這些數據? – 2009-08-15 01:39:23

+0

把它看作是一個門戶網站,用戶可以訂購產品,付款,配置產品,查看使用情況報告,獲取警報,升級/降級,使用票務等。它是一個典型的J2EE應用程序,有點像銀行門戶,但有很多不同。目前,一切都按需求提取。 – Langali 2009-08-15 02:10:26

+0

好的,看看我的答案,並讓我知道你是否還有其他問題。 – 2009-08-15 11:56:11

回答

0

這聽起來像你可能需要一個數據倉庫。您可以根據需要隨時更新來自各種數據源的數據倉庫。但是,所有隻讀事務將來自數據倉庫,並且不需要立即調用各種外部來源。

這假定您不需要實時訪問最新的數據。即使您在過去一小時內需要從特定來源獲得準確的數據,這也只意味着您需要每隔一小時從該來源更新一次。

你還沒有說過你在使用什麼平臺。如果您使用SQL Server 2005或更高版本,我會推薦SQL Server集成服務(SSIS)來更新數據倉庫。它只是爲了這樣的事情。

當然,根據您的平臺選擇,可能有更合適的替代方案。


以下是關於SSIS和數據倉庫的一些資源。我知道你已經聲明你不會使用微軟的產品。我將這些鏈接作爲參考點:這些是我上面討論的產品。

+0

聽起來像它可以做我在找的東西,但微軟的產品不是一種選擇。像ServiceMix或RabbitMQ這樣的ESB是否合適? – Langali 2009-08-15 17:20:31

+0

我對這些並不熟悉。我建議你學習SSIS可以做的事情 - 這些是你應該尋找的功能的一部分。你的一些持續性問題將是獲取數據並清理它。 SSIS是一個可以做到這一點的ETL工具。然後,您可以讓您的50,000名用戶從DW中檢索其數據,並針對讀取和查詢訪問進行優化,並根據需要進行更新。 – 2009-08-15 17:48:09