Apache Storm和Samza保证至少交货一次。这意味着在计算过程中可能会有一些重复项。我们是否需要自己移动副本(包括删除代码中的重复部分)? 例如,字数统计问题。如果单词“ boy”仅出现一次,但由于某些故障或延迟而有2个“ boy”。风暴重播了“男孩”。那么“男孩的第二个”的结果呢?还是Storm为我们删除了重复项,结果是一个?
答案 0 :(得分:0)
暴风雨不会删除重复消息,您必须检查是否已在流的开头(即喷口)处理了根消息,这样就不会在拓扑中再次发送它,而又弄乱了计数器。 / p>
幂等的消费者模式是您应注意的。将获取的上一个事件的哈希存储起来,以便在意外事件再次发送时将其忽略(例如,将其存储在内存中的ConcurrentHashMap可以做到这一点,或者像Redis这样的外部缓存,不要忘记将这些结构逐出)确定您没有再次参加活动的风险。