2011-05-03 95 views
2

我正在制定一個新項目的計劃,目標是從一個地方收集來自多個來源的消息。在同一網絡上的不同服務器上基本上不同的網站需要報告正在採取的行動到中央記錄器的一些信息。我希望這是一項提供給客戶的服務,因爲每個網站都會向中心發送消息。它不需要回應消息實際上已經收到,並且它可以在負載下丟棄消息。如果客戶要求,我寧願它可以迴應消息被接收和記錄。如何最好地收集來自多個來源的消息?

我在網站方面使用PHP,並希望在日誌記錄方面使用它。任何人都可以讓我洞察任何可能適用於此的協議或體系結構嗎?

編輯 另外,有沒有任何消息庫任何人會建議?我正在尋找關於協議或設計的任何好的答案,從哪個數據庫可能是最容易擴展的,到它可以說什麼網絡協議。 UDP會對這樣的事情有好處嗎?消息發送速度是本設計中最重要的因素。

我正在與一臺服務器當前在計劃中登錄。

+0

那麼,你需要看看更多的「系統」語言和UDP然後 – zerkms 2011-05-03 00:02:32

+0

它是否必須是單個日誌文件? (記錄器實際上是一個文件嗎?)它可以是多個日誌以後組合嗎?您是否覺得HTTP由於某種原因而使用不合適的協議? – Marvo 2011-05-03 00:05:07

+0

@Marvo:作爲TCP/IP上的應用層協議,http與高負載環境下的UDP相比要糟得多。 – zerkms 2011-05-03 00:11:28

回答

0

我正在尋找一個消息排隊系統作爲中間,記錄器後面收集消息並處理它們。

我發現的一些選擇是RabbitMQ,Kestrel和Beanstalkd。

1

我會強烈推薦使用node.js爲此。使服務器正常運行並不重要(有關基於UDP的服務器示例,請參見this link)。您可以爲節點安裝數據庫模塊(npm適用於安裝第三方模塊),因爲它們不是node.js的本地模塊。

由於其非阻塞性質,我敢肯定,你會寫任何用PHP寫的東西,以至於在性能方面讓人感到羞恥。