distributed-computing – 如何在Storm中构建容错应用程序?

问题的简短版本:如何在Twitter Storm中构建一个故障安全字数统计程序(拓扑),即使发生故障也能产生准确的结果?这甚至可能吗?

长版:我正在研究Twitter Storm并试图了解它应该如何使用.我遵循了tutorial,发现它是一个非常简单的概念.但是教程中概述的单词计数示例不具有容错能力(因为螺栓会将一些数据保存在内存中).如果将事件重新提交到链的开头(当某些螺栓发生故障时会发生这种情况),则在后端DB中保存相同的数据会导致重复计算.

我应该将Twitter Storm视为产生部分准确结果的实时平台,还是依靠MapReduce来获得准确的结果吗?

最佳答案 这真的取决于你试图反对的失败.你可以做一些事情:

>风暴螺栓只有在处理后才会产生元组.如果您编写了您的喷口和螺栓以及拓扑结构来使用它,您可以实施“一次性”系统,以确保准确性.
> Kafka可以是将数据放入Storm的好方法,因为它使用磁盘持久性来保持消息长时间即使它们被消耗.这意味着如果消费者发生故障,您可以检索它们.

但总的来说,很难保证在任何流媒体系统中只处理一次.这是一个已知问题,有效地解决这个问题非常困难.

点赞