2010-06-02 150 views
0

我有一個監控應用程序,通過gui顯示多個應用程序服務器的狀態。它通過嚮應用服務器發送狀態請求來工作。應用服務器輪流查詢所有組件的狀態,生成狀態響應消息並將該消息發送到監視應用程序。監控應用程序將狀態消息中的信息寫入數據庫,數據庫又顯示在GUI上。整個監控應用程序在JavaSE中完成。基於優先級的持久性?

我的問題是這個......數據庫由於需要持續存在大量數據而難以跟上。

我認爲我的解決方案是爲狀態消息的組件分配優先級,並根據優先級我將它堅持到數據庫。

這有可能是更好的解決方案嗎?

回答

0

我想知道如果你的數據庫不能跟上存儲數據,它可能也是一個沉重的負載在應用程序服務器上繼續響應狀態請求。

我不知道狀態消息中的哪些信息以及需求是什麼。一些選項有:

  • 狀態消息可能是(幾乎) 等同於以前的狀態 消息。在這種情況下,您只能存儲新消息 或僅存在 差異。
  • 保持更多的(最近)的消息在內存 只有每分鐘/ 10 秒持續等
  • 在數據庫中更高效 堅持。也許你可以減少 索引或約束。您也可以嘗試批量處理大量狀態 報告(並且可能會將這些內容保留在 內存中,直到批處理持續存在 )。
  • 減少狀態報告消息的數量。 也許某些組件可能不太頻繁地發送消息 。
+0

感謝您的回覆。關於你的第一點,你是對的。發送的數據中的大部分都不會改變。爲此,我在應用程序服務器上創建了一個方法,該方法會將其先前的狀態信息與當前的狀態信息進行比較,並向監視應用程序發送僅包含差異的狀態信息。 關於你的第二點,是不是會造成瓶頸? 關於你的第三點,我目前正在研究,但由於其接收的大量狀態響應(監視應用程序監視的數以千計的應用程序服務器),我對此表示懷疑。 最後一點,這不是一個選項。 – Vrot 2010-06-02 10:17:42