2014-07-08 21 views
2

我想使用Storm群集来实时监控用户活动。目前,用户活动日志保存在MySQL中。每分钟记录约100,000条记录,每天记录20,000,000条记录。我想每N分钟做一次topN查看的项目排名。如何为此设计壶嘴?我应该直接从喷口中的MySQL中查询还是使用像Kafka这样的消息队列?我想要实时性能,所以更喜欢第一种方式。但是我发现罕见的生产实施选择这种方式。为什么?风暴直接从MySQL发布?

+1

我会将它们写入卡夫卡,然后被暴风雨消耗掉,并在需要时用风暴螺栓写入MySQL。 – halfelf

+0

如何加载mysql日志并将其保存到消息queeu,然后让暴风雨消耗来自该队列的消息并处理它们 – Vor

回答

0

要直接从MySql Bin Logs发出元组,你可以在github上使用这个mysql spout(https://github.com/flipkart-incubator/storm-mysql)。 此喷口会将您的行更新作为流发送。该喷口使用辉煌的Open Replicator(https://github.com/whitesock/open-replicator)来缩小垃圾桶日志。

为您的使用情况,那么可能会写一个类似的螺栓: https://github.com/nathanmarz/storm-starter/blob/master/src/jvm/storm/starter/RollingTopWords.java

这种方法消除了消息队列和多个移动部件的需要。

声明:上面提到的Mysql Spout的作者。