2012-05-11 27 views
1

我得到了一個android應用程序,我想將它的使用日誌發送到我的服務器,以便將它保存在數據庫中。使用MQTT VS REST發送應用程序日誌

基本上我想記錄用戶幾乎所有的操作,即使是簡單的按鈕點擊。

由於MQTT已經在應用程序中使用過,所以我認爲使用它也可以很好地用於日誌記錄。例如:每次我想記錄某些內容時,我只需通過MQTT發佈操作,然後一些服務器端服務就會訂閱該日誌記錄通道,並且每當日誌發佈到達時,它就會將其插入數據庫。

但是有幾件事情我很擔心 -

  1. 我想知道如果每個用戶做任何事情將是對帶寬重時間發佈的30個字符的消息。
  2. 什麼是最好的解決方案的服務,將聽該通道,並將每個消息插入數據庫。

另一種選擇是通過定期REST方法發送數據,但後來我得到2個選擇,要麼在大散貨把它(我會知道什麼時候是在應用程序關閉之前發送正確的時間)或在發生日誌記錄操作時實時發送。

然後我不需要訂閱MQTT日誌記錄通道的服務。

假設我的服務器應該能夠同時處理數千個用戶。

任何有趣的想法?

謝謝!

+1

帶寬大致是(用戶數)*(每個數據包的字節數)*(每秒事件數)。 2000個用戶* 30個字符*每秒1個事件= 60kB/s。 – ralight

回答

4

如果您已經在使用MQTT,那麼將其用於日誌記錄很有意義。我在帶寬需求之上的快速計算表明它不太可能是一個巨大的負擔。在我的例子中,日誌應用程序必須能夠處理每秒2000條消息。它只是一個簡單的MQTT客戶端,它也連接到您使用的任何數據庫。有一個簡單的例子爲mysql在https://bitbucket.org/oojah/mosquitto/src/426b311d682d/examples/mysql_log/mysql_log.c

你可能想要考慮的東西是發送這麼多事件的用電量。 Stephen Nicholas在Android上關注MQTT的使用情況進行了兩項研究,首先在多種場景(http://stephendnicholas.com/archives/219)和第二個加密的MQTT vs HTTPS(http://stephendnicholas.com/archives/1217)中查看MQTT的簡單使用情況。您應該考慮的要點是保持連接活動的電池成本以及發送消息的成本和速度。假設每秒發送一條消息,keepalive = 240秒,並且您的用戶與Stephen有相同的電話號碼,則每小時消耗的電池壽命約爲3.1%,而不管發生在手機上的其他任何事情。

相關問題