2008-11-15 33 views
4

我有一個位於Sybase數據庫之上的Java SOAP數據服務,由於我無法控制的原因,它的性能不可靠。數據庫是供應商軟件包的一部分,已經由內部團隊進行修改,大部分問題都是由一天中某些時間的響應時間較慢造成的。如何最好地將我的應用程序與不可靠的數據庫隔離開來?

SOAP服務向計算網格提供數據,當我請求數據時,我需要響應時間快,並且一致。該服務提供了基本的CRUD功能,但讀取與寫入的比率大約爲100:1。

將自己與數據庫的不可靠性能隔離並確保SOAP服務快速可靠的最佳策略是什麼?

+0

這是一個內部應用程序嗎?另一個企業集團是否擁有該數據庫? – 2008-11-15 18:05:34

+0

你的意思是不可靠的?偶爾慢?給出錯誤?腐敗的信息?丟棄更新?細節會影響什麼解決方案是合適的 – 2008-11-15 18:17:51

回答

3

我已經看過這個問題幾次,通常與供應商數據庫。

如果這是在Windows上,您可以創建一個Windows服務作爲SOAP服務和數據庫之間的中介。然後在SOAP服務和Windows服務之間放置一個消息隊列(MSMQ或JMS實現,例如MQ Series)以進行異步通信。這樣數據庫性能問題將不再影響SOAP服務。然而,這種解決方案的代價是增加了複雜性。

請注意,.NET Web服務可以通過客戶端調用,並對其客戶端進行異步響應。我不確定使用Java SOAP服務是否可行。

如果這是關於Unix的一些風格,我認爲它具有與Windows服務類似的功能 - 可能是一個守護進程。

0

如何緩存來自Web服務的響應(無論是在客戶端調用WS請求,還是在兩者之間設置代理Web服務)?

0

如果數據庫不是太大,您可以緩存來自數據庫的結果。

+0

你可以更具體如何做到這一點? – 2008-11-15 19:38:38

1

爲什麼不使用線程?這樣,即使數據庫很慢,應用程序也可以輕鬆等待。

1

RoadWarrior的迴應是正確的。做任何操作的請求都被放入隊列中。用戶進來一次提出請求,然後一次提取請求。事實上,Expedia這樣的網站正在與不可靠的服務(後端)進行對話。用戶的瀏覽器正在ping服務器,直到紅燈變綠。

0

讓其他內部團隊調整該數據庫,以便每個使用該應用程序的人都受益。我愛我一些指標!

相關問題