有状态和无状态流处理

qkf9rpyu  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(424)

在开始学习流式处理的同时,我听到了以下两个技术项目:有状态流式处理和无状态流式处理,它们之间有什么区别?我听说storm是无状态的,而storm trident是有状态的,所以在实践中,在哪里使用storm,在哪里使用storm trident?

weylhg0b

weylhg0b1#

两者之间的区别是,在一个非常高的层次上,你必须对它们执行什么样的操作。
有些操作是无状态的,即一次处理一条记录。想想一个银行出纳员,他一次处理一个客户流。每个客户都是一个新的工作单元,不依赖于以前的工作单元。
有状态的操作就像雇佣新员工。你有很多人来面试,但是你是否雇用他们,取决于你的状态,也就是说,你有什么职位空缺。
例如,假设您正在处理web日志。如果您想知道每秒有多少用户在查看一个页面,那么您的处理几乎是无状态的:每秒钟您都会计算每页有多少用户访问。每一秒,你都不在乎前一秒的结果。这是一个无状态操作。
假设您希望计算下一秒将有多少用户的预测。你想平均过去10分钟,所以你需要保持一个队列,在最后10*60秒-这是你需要为你的处理保持的状态,你需要每秒钟更新一次,以保持最近10分钟的状态。那当然是有状态的行动。一个更简单的有状态操作只是计算自站点开始以来的页面视图总数。
这两个操作之间的一个关键区别是,如果流停止并且您重置了系统,那么您必须注意保存状态。无状态操作没有任何要保存的状态,因此通常更简单。

相关问题