该方案需要将大量数据(如跟踪点击或鼠标移动)从Web应用程序写入SQL数据库。数据不需要立即写入,因为对数据的分析是在一些重复的基础上发生的,例如每天或每周。
我想要一些关于解决方案的反馈:
单击和鼠标数据将发布到消息队列。这将队列项存储在内存中,因此它应该比SQL更快更快。然后在其他服务器上,一个作业会在检索下一个队列项并将数据写入SQL时插入。
有谁知道这样的实现?我没有看到什么陷阱?如果这个解决方案不是很好,还有其他选择吗?
此致
答案 0 :(得分:0)
为了解决一个非常类似的问题,我正在考虑这样做。最后我们决定不采用它,因为我们确实需要非常快速地访问数据。不过我还是喜欢这个主意。
我最近也了解到,这正是微软动态CRM使用消息传递进行数据库更新的方式。
我认为你需要特别注意的事情。
答案 1 :(得分:0)
RabbitMQ用于实时消息交换,而不用于临时缓冲数据。如果您能够在到达队列后立即使用所有数据,那么此解决方案将适合您。否则RabbitMQ将在内存中增长并最终死亡。然后你必须配置它来抛出一些数据(有很多选项来为此选择规则)。
您可以将数据存储在Redis缓存中,您可以像将事件发布到RabbitMQ一样快。然后,您可以从远程服务器收听Redis中的新更改,并填写您使用的任何数据库存储,甚至将其用作数据存储。