2013-11-30 1 views
0

Я разрабатывал настоящий двигатель с использованием шторма. Я использую топологию трезубца, чтобы в основном объединить некоторые действия, которые происходят на нашем веб-сайте, и сохранять их в cassandra. Я следовал этой статье «Trident State», чтобы понять, как сохранить значения в кассандре. Я попытался определить транзакционный носик (не уверен, действительно ли он транзактивен), сохраняя txnId и count в cassandra. Мой источник ввода - это очередь RabbitMq.Проектирование трезубца трезубца и текущих идентификаторов транзакций

Мы обновляем счет в часовых ведрах, т.е. все действия, которые произошли за час, будут суммированы и сохранены как одна запись в кассандре. Проблема, с которой я сталкиваюсь, заключается в том, что до тех пор, пока топология работает, подсчеты обновляются должным образом. Как только я перезапущу топологию, последнее часовое ведро очищается новым счетчиком. Я не уверен, что это потому, что txnid начинается с 1 снова. Как обойти эту проблему.

Cassandra запись до перезапуска штормового

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. Как мне изменить дизайн.

ответ

2

В основном я использовал топологию с Eclipse IDE в качестве локального кластера. Поскольку zookeeper инициализируется каждый раз, когда я запускаю программу в Eclispe, идентификаторы транзакций всегда начинаются с 1. Когда я развертываю его на кластере машин, он отлично работает.