2012-05-11 13 views
1

使用ログをサーバーに送信してデータベースに保存できるようにするAndroidアプリケーションがあります。MQTT VS RESTを使用してアプリケーションログを送信

基本的には、ボタンをクリックしてもほとんどすべての操作をログに記録したいと思います。

MQTTは既にアプリケーションで使用されているので、ロギングにもMQTTを使用するとよいでしょう。

たとえば、何かログを記録するたびに、MQTTを介してアクションをパブリッシュし、サーバー側のサービスがログ・チャネルをサブスクライブし、ログ・パブリケーションが到着するたびにそれをDBに挿入します。

  1. 私は、ユーザーが何が帯域幅に重いだろうし、30文字のメッセージを公開かどうかを知るために毎回のようにしたい -

    は、しかし、私は心配程度だいくつかあります。

  2. そのチャネルをリッスンし、各メッセージをDBに挿入するサービスに最適なソリューションは何でしょうか。

もう1つの方法は、通常のRESTメソッドでデータを送信することですが、2つのオプションがあります。いずれか大きいバルクで送信してください(アプリケーションを閉じる前に送信するタイミングを知っておく必要があります)。 )、またはロギングアクションが発生したときにリアルタイムで送信します。

次に、MQTTロギング・チャネルをサブスクライブするサービスは必要ありません。

私のサーバーが数千人のユーザーを同時に処理できると仮定します。

興味深い考えはありますか?

ありがとうございます!

+1

帯域幅はおおよそ(ユーザー数)*(1パケットあたりのバイト数)*(1秒あたりのイベント数)です。 2000人のユーザー* 30文字* 1イベント/秒= 60kB /秒 – ralight

答えて

4

すでにMQTTを使用している場合、これをロギングに使用することは非常に意味があります。上記の帯域幅の要件を上記のようにすばやく計算すると、大きな負担になることはありません。私の例では、ロギングアプリケーションは毎秒2000メッセージを処理できる必要があります。単純なMQTTクライアントであれば、どのデータベースにも接続できます。 mysqlの簡単な例はhttps://bitbucket.org/oojah/mosquitto/src/426b311d682d/examples/mysql_log/mysql_log.cです。

多分多くのイベントを送信することの電力使用量が考えられます。 Stephen Nicholasは、複数のシナリオ(http://stephendnicholas.com/archives/219)と2番目に暗号化されたMQTT対HTTPS(http://stephendnicholas.com/archives/1217)で簡単なMQTTの使用法を最初に見て、MQTTの使用法を見てAndroidに関する2つの調査を実施しました。考慮すべき点は、接続をアクティブに保つためのバッテリのコストと、メッセージを送信するコストとスピードです。 1秒間に1メッセージ、キープアライブ= 240秒と仮定し、ユーザーがスティーブンと同じ電話を持っているとすると、電話で何が起きているかにかかわらず、時間当たり約3.1%のバッテリ寿命を消費します。

関連する問題