[英]System design: multiple database clients or proxy and less database connections
假设我有一个系统,其中约有1000台计算机将通过传感器生成数据,并且它们必须将其发送到中央系统,然后该数据将存储在SQL表中。
我的问题是,通常最好让每个系统直接连接到数据库并插入(这是唯一需要的操作)数据,或者使用像ie这样的消息传递服务器将其发送到服务器。 HornetQ,是否有一个(或几个)软件实例消耗HornetQ的数据并将其写入数据库系统?
我想知道两种方法在CPU /内存成本和可伸缩性方面的比较,特别是在系统的服务器端(即,旨在处理许多客户端的数据库系统)。
我们拥有一个或多或少像您一样的系统。
我们有数百个数据生产者。 而且我们正在将这么多写入者的数据写入mysql数据库。
在任何情况下,拥有1000个数据库的并发作者客户端都不是一个好主意。 根据我的经验,我绝对建议您根据情况使用消息队列。 这将是您的数据生产者和使用者之间的缓冲区。 因此,如果您的数据库方面有任何问题-相信我会存在-您在生产者方面就不必做任何事情。 您可以在不接触生产者的情况下停止消费者,进行维护和修复等。
关于用户数量完全取决于您和您的系统要求。 您可以根据需要使用一个或多个消费者。
这里有一些陷阱。 如果需要写入太多数据,则意味着需要写入可伸缩性,则可能需要使用分片,但是正如我所说的,它与数据大小和所需事务数有关。 您可能还需要注意一些事项,例如不使用自动递增ID字段等。
在两者之间使用消息传递队列的优点是:
我不想太冗长,还有其他优点,但我想您已经明白了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.