Apache storm 设计三叉戟喷口和持久化事务ID

Apache storm 设计三叉戟喷口和持久化事务ID,apache-storm,Apache Storm,我一直在用storm设计一台真正的发动机。我使用trident拓扑基本上聚合了我们网站上发生的一些活动,并将其保存到cassandra。我阅读这篇文章是为了理解如何在cassandra中持久化这些值。我试图通过将txnId和count存储在cassandra中来定义事务性喷口(不确定它是否真正是事务性的)。我的输入源是RabbitMq队列 我们正在更新以小时为单位的计数,也就是说,一小时内发生的所有活动都将汇总并作为单个条目存储在cassandra中。我面临的问题是,只要拓扑运行,计数就会正确更

我一直在用storm设计一台真正的发动机。我使用trident拓扑基本上聚合了我们网站上发生的一些活动,并将其保存到cassandra。我阅读这篇文章是为了理解如何在cassandra中持久化这些值。我试图通过将txnId和count存储在cassandra中来定义事务性喷口(不确定它是否真正是事务性的)。我的输入源是RabbitMq队列

我们正在更新以小时为单位的计数,也就是说,一小时内发生的所有活动都将汇总并作为单个条目存储在cassandra中。我面临的问题是,只要拓扑运行,计数就会正确更新。一旦我重新启动拓扑,最后一个每小时一次的存储桶将被清除,并有新的计数。我不确定这是因为txnid再次从1开始。如何解决这个问题

风暴重启前的卡桑德拉入口

Key                |   ts                     |  txnId   |  count
viewers:country:US | 2013-11-26 08:00:00-0500 |  1       |     6
viewers:country:US | 2013-11-26 09:00:00-0500 |  2       |     3
viewers:country:US | 2013-11-26 10:00:00-0500 |  3       |     11 
viewers:country:US | 2013-11-26 08:00:00-0500 |  1       |     6
viewers:country:US | 2013-11-26 09:00:00-0500 |  2       |     3
viewers:country:US | 2013-11-26 10:00:00-0500 |  1       |     2
风暴过后重启

Key                |   ts                     |  txnId   |  count
viewers:country:US | 2013-11-26 08:00:00-0500 |  1       |     6
viewers:country:US | 2013-11-26 09:00:00-0500 |  2       |     3
viewers:country:US | 2013-11-26 10:00:00-0500 |  3       |     11 
viewers:country:US | 2013-11-26 08:00:00-0500 |  1       |     6
viewers:country:US | 2013-11-26 09:00:00-0500 |  2       |     3
viewers:country:US | 2013-11-26 10:00:00-0500 |  1       |     2

事实上,对于第三个条目,我预计它将变为11+2,因为它都有相同的时间段2013-11-26。此外,txnId被重置为1。我应该如何更改设计。

我基本上是使用EclipseIDE作为本地集群运行拓扑。由于zookeeper每次在Eclispe中运行程序时都会初始化,因此事务ID总是从1开始。当我把它部署到一个机器集群上时,它工作得很好