Storm是一个免费开源的分布式实时计算系统。它接收数据流并对其进行处理。如果Storm宕机,部分数据从未通过,这意味着计算将不同步,该怎么办?
Storm如何解决这个问题?如果不能,如何解决这个问题?
类似的问题是:我如何读取Storm添加之前存在的旧数据?
如何读取添加Storm之前存在的旧数据?
数据必须存储在某个地方(比如HDFS)。您编写了一个Spout,它接受来自某种传输(比如JMS)的数据。然后,你需要编写重放代码来从HDFS读取适当的数据,将其放在JMS通道上,Storm会处理它。诀窍是知道你需要在数据中回溯多远,这可能是外部系统的责任,就像重放代码一样。这个回放代码可以查阅数据库,或者Storm的处理结果,无论它们是什么
总的来说,"如果它下降了怎么办"的问题取决于你正在进行的计算类型,以及你的系统是否处理背压。简而言之,流的持久性很大程度上取决于传递给Storm的消息/传输机制。
示例:如果您需要简单地转换(xslt)单个事件,那么在Storm关闭时就不会出现实时故障,也不会出现状态问题。您只需启动备份并继续处理即可。
提供你的饲料的系统可能需要处理背压。像Kafka这样的消息传输可以处理持久的消息,并允许Storm从中断的地方恢复
需要对导致"计算不同步"的具体用例进行阐述,以提供更好、更具体的答案。