0

假设我有一个系统,其中大约 1000 台机器将从传感器生成数据,他们必须将数据发送到中央系统,然后将数据存储在 SQL 表中。

我的问题是,如果让每个系统直接连接到数据库并插入(这是唯一需要的操作)数据,或者使用像 ie 这样的消息传递服务器将其发送到服务器,是否会更好。HornetQ,并且有一个(或几个)软件实例使用来自 HornetQ 的数据并将其写入数据库系统?

我想知道这两种方法在 CPU/内存成本和可扩展性方面的比较,特别是在系统的服务器端(即,设计用于处理大量客户端的数据库系统)。

4

2 回答 2

0

在两者之间使用消息队列的优点是:

  • 能够增加生成消息的机器数量,而不必介意扩展数据库服务器。
  • 控制队列消耗以保持数据库健康。
  • 在数据库维护或崩溃的情况下,您的机器数据不会丢失。

我不想太冗长,还有其他优点,但我想你明白了。

于 2016-02-02T21:29:57.957 回答
0

我们有一个或多或少像你的系统。

我们有数百个数据生产者。我们正在将这些数据写入 mysql 数据库,有很多作者。

为一个数据库拥有 1000 个并发写入器客户端在任何情况下都不是一个好主意。根据我的经验,我绝对建议您在您的情况下使用消息队列。它将是您的数据生产者和消费者之间的缓冲区。因此,如果您的数据库方面出现任何问题 - 相信我会出现 - 您不必在生产者方面对此采取任何措施。您可以在不接触生产者的情况下停止您的消费者、进行维护和修复等。

关于消费者的数量,这完全取决于您和您的系统要求。您可以根据需要使用一个或多个消费者。

这里有几个问题。如果您需要写入太多数据,则意味着您需要可写性,您可能需要使用分片,但正如我所说,这与您需要的数据大小和事务数量有关。您可能还需要注意一些事情,例如不使用自动增量 id 字段等。

于 2016-02-02T21:19:57.680 回答