1

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

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

由于 MQTT 已经在应用程序中使用,我认为将它用于日志记录可能会很好。

例如:每次我想记录一些东西时,我只是通过 MQTT 发布操作,然后一些服务器端服务会订阅该记录通道,并且每次日志发布到达时,它都会将其插入数据库.

但是有几件事我很担心-

  1. 我想知道每次用户执行任何操作时发布一条 30 个字符的消息是否会占用大量带宽。
  2. 对于侦听该频道并将每条消息插入数据库的服务,什么是最佳解决方案。

另一种选择是通过常规的 REST 方法发送数据,但我有 2 个选择,要么大批量发送(我必须知道在应用程序关闭之前什么时候发送它的正确时间)或实际发送- 记录操作发生的时间。

那么我就不需要订阅 MQTT 日志记录通道的服务了。

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

有什么有趣的想法吗?

谢谢!

4

1 回答 1

5

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

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

于 2012-06-01T13:53:39.703 回答