使用MQTT VS REST发送应用程序日志

时间:2012-05-11 15:33:41

标签: android rest logging mqtt

我有一个Android应用程序,我想将其使用日志发送到我的服务器,以便将其保存在数据库中。

基本上我想记录用户几乎所做的每一个动作,即使是简单的按钮点击。

由于MQTT已经在应用程序中使用了,我想也许将它用于日志记录也是好的。

例如:每次我想记录某些东西,我只会通过MQTT发布动作,然后是一些服务器 - 辅助服务将订阅该日志记录通道,每次日志发布到达时,它都会将其插入到数据库中。

然而,有几件我担心的事情 -

  1. 我想知道每次用户做任何事情时发布30个字符的消息都会带来很大的负担。
  2. 对于能够收听该频道并将每封邮件插入数据库的服务,最佳解决方案是什么。
  3. 另一种选择是通过常规的REST方法发送数据,但是我有2个选项,要么以大批量发送(我必须知道何时是在应用程序关闭之前发送它的时候)或发送它实时发生日志记录操作。

    然后我不需要订阅MQTT日志记录通道的服务。

    让我们假设我的服务器应该能够同时处理数千个用户。

    有什么有趣的想法吗?

    谢谢!

1 个答案:

答案 0 :(得分:5)

如果您已经使用MQTT,那么将它用于日志记录是很有意义的。我上面对带宽要求的快速计算表明它不太可能是一个巨大的负担。在我的示例中,日志记录应用程序必须能够处理每秒2000条消息。它只是一个简单的MQTT客户端,它也连接到您使用的任何数据库。在https://bitbucket.org/oojah/mosquitto/src/426b311d682d/examples/mysql_log/mysql_log.c

有一个简单的mysql示例

您可能想要考虑的事情是发送这么多事件的功耗。 Stephen Nicholas在Android上进行了两项关于MQTT使用的研究,首先在许多场景(http://stephendnicholas.com/archives/219)和第二次加密的MQTT与HTTPS(http://stephendnicholas.com/archives/1217)中查看直接的MQTT使用情况。您应该考虑的要点是保持连接活动的电池成本以及发送消息的成本和速度。假设每秒一条消息,keepalive = 240秒,并且您的用户拥有与Stephen相同的电话,您每小时消耗的电池续航时间比电话上发生的其他任何事情都大约3.1%。