2009-05-27 50 views
0

我目前正在開發將部署到公司內所有工作站的Windows服務。該服務的目的是收集各種統計數據並將其記錄在中心位置。來自多個工作站的數據收集

對於第一次迭代,服務是直接調用SQL來記錄每次有數據要記錄時。在大約120臺工作站上測試它告訴我,這不是一個好主意,也不會擴展。

有人可以推薦一種替代策略來收集有問題的數據,它不會超載數據庫服務器嗎?這將被部署到約2000臺機器。

我正在使用C#。

謝謝。

回答

0

只是回答了這個問題。這是我最終實現它的方式。

數據採集

  • 一個C#服務在工作站上運行。在不同的時間間隔(不是預先確定的,基於系統上的某些事件)它會觸發數據收集。
  • 數據寫入本地工作站上的文件。
  • 然後將數據文件複製到網絡位置。

數據解析

  • 的 「進口商」 程序按計劃運行。它貫穿自上次運行後創建的所有文本文件,解析它們並將它們導入到SQL中。

我實現它之所以這樣的方式是:

  • 與我原來的問題提到我的SQL服務器,避免資源問題。
  • 創建的文件非常小,1-2KB
  • 導入器在過去運行幾分鐘以避免與正在進行的任何副本相沖突。
  • 導入程序會刪除已處理的文件,並跳過不在「lastscantime」和「currentTime-Xminute」窗口中的文件。
1

從你的問題看來,你已經有了一個可行的解決方案,你只需要關於如何使它擴展的建議。下面是我的兩分錢:

  • 不要保留SQL連接工作站的服務開放
  • 嘗試在內存配料數據更新和僅更新數據的一定量的已經收集後,數據庫還是有一定的時間間隔已經過去了(讓你的連接變得不那麼健談,也變得更矮胖)。
  • 確保你的數據庫是正確的標準化,以避免重複數據

就個人而言,對於一些關鍵任務,要求它擴展到2000個工作站,我會用一個商業產品,並且不會重新發明輪子。

+0

我最終實施了兩個階段。請在下面的答案中查看詳細信息。就商業產品而言,我找不到任何能夠滿足我被要求滿足的特殊需求。 謝謝。 – Nasir 2009-10-06 20:08:38