本文主要讲解流处理中的状态,当出现故障时,如何保证状态一致性。
01
—
状态
有状态算子:传入事件+内部状态=算输出(新的内部状态)
注意问题:内部状态无限增长
限制状态大小方式
(1)一个数值
(2)一个累加值
(3)全部事件的抽样
(4)一个窗口缓存
(5)某些有价值的值等
4.之前处理方式
(1)将流处理进行小批处理,状态写入持久化存储
(2)一个作业结束,所有状态将不存在
5.现在处理方式
(1)状态管理,高效管理状态,保证不受并发影响
(2)状态划分
结果需要同时依赖事件和内部状态
很多情况可以按照键值进行划分
(3)状态恢复
最大挑战
有状态算子需要保证状态可以恢复
即使出现故障也能保证结果正确
02
—
任务故障
由于状态特别重要,需要在故障的时候,进行保护
任务处理步骤
接收事件,缓存到本地
选择性地更新内部状态
产生输出结果
在上面执行的3个步骤中都有可能发生故障
03
—
结果保障
结果保障
流处理引擎中内部状态的一致性
保证应用状态的一致性和保证输出的一致性不是一回事
谢谢阅读!
欢迎大家关注、点赞、收藏!分享知识!
奇迹的出现往往就在再坚持一下的时候!
文章转载自beenrun,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。