区别是:无状态的计算观察每个独立事件,并根据最后一个事件输出结果。有状态的计算则会基于多个事件输出结果。无状态流处理每次只转换一条输入记录,并且仅根据最新的输入记录输出结果。有状态流处理维护所有已处理记录的状态值。
流式计算分为无状态和有状态两种情况。无状态的计算观察每个独立事件,并根据最后一个事件输出结果。有状态的计算则会基于多个事件输出结果。
输入记录由黑条表示。无状态流处理每次只转换一条输入记录,并且仅根据最新的输入记录输出结果(白条)。有状态流处理维护所有已处理记录的状态值,并根据每条新输入的记录更新状态,因此输出记录(灰条)反映的是综合考虑多个事件之后的结果。
在传统的数据处理流程中,总是先收集数据,然后将数据放到数据库中。当人们需要的时候通过数据库对数据做查询,得到答案或进行相关的处理。这样看起来虽然非常合理,但是结果却非常的紧凑,尤其是在一些实时搜索应用环境中的某些具体问题,类似于MapReduce方式的离线处理并不能很好地解决问题。这就引出了一种新的数据计算结构—流计算方式。它可以很好地对大规模流动数据在不断变化的运动过程中实时地进行分析,捕捉到可能有用的信息,并把结果发送到下一计算节点。
延伸阅读:
什么是无状态计算?
无状态计算(stateless computing),一般指在计算主体上不存任何状态信息或特定配置,各个主体都是无差别部署,这样的好处就是可快速复制和销毁计算资源,通常可通过服务化等手段抽取状态。即计算节点只提供 CPU、内存等计算资源,硬件配置信息都存储在配置文件中,数据集中存储在磁盘阵列上,实现了网络、存储与计算节点的无关性。
无状态计算的设计理念在于对计算节点的物理属性进行抽象,通过定义和实施配置文件,替代原有的节点只需将预先定义的策略应用到新计算节点,就可以获得与原有计算节点完全相同的物理属性,满足了数据中心对可用性的需求。服务器虚拟化技术利用虚拟化层将虚拟机抽象为文件,将所有的配置信息都保存在文件中,实现了硬件的无关性。无状态计算技术消除了对虚拟化层hypervisor 的依赖,利用硬件设备自身提供的虚拟化功能将配置信息保存在管理设备中,在计算节点之间实现了无缝迁移。不适合部署在虚拟化平台上的业务应用比如数据库可以借助基于硬件的无状态计算技术实现低成本的高可用性解决方案。
文章标题:有状态计算和无状态计算在数据的流处理中的区别是什么,发布者:小编,转载请注明出处:https://worktile.com/kb/p/39008