Storm Spout Периодическая логика - PullRequest
0 голосов
/ 18 мая 2018

Я бы хотел обновить состояние в кеше в Storm Spout.Я смог успешно справиться с этой задачей.Было бы здорово узнать, есть ли подобный шаблон для использования или какой-то другой способ периодически просыпаться и что-то делать.Я мог бы потенциально иметь таймер, чтобы сделать это.Приведет ли это к проблемам параллелизма со структурой Storm?

1 Ответ

0 голосов
/ 18 мая 2018

Я не верю, что что-то встроено, но посмотрим, как мы выполняем коммиты в носике Кафки https://github.com/apache/storm/blob/fbeafdcbb1e4be1263b91be7ba75a15aa6e885a8/external/storm-kafka-client/src/main/java/org/apache/storm/kafka/spout/KafkaSpout.java#L278.

Обычно мы устанавливаем временную метку, когда мы фиксируем, и проверяем временную метку, когда nextTupleназывается.Если временная метка достаточно далека от прошлого, мы фиксируем и сбрасываем временную метку.

Делая это таким образом, вы не должны беспокоиться о параллелизме.Storm будет вызывать все методы на носике из того же потока.

Если вы решите использовать Timer или аналогичный, вам необходимо убедиться, что ваш кэш синхронизирован между потоком Timer и обычным потоком Storm Executor.

...