流处理系统中的“Exactly Once”语义保证

前言

最近在学习一些流处理相关的知识,对比与笔者接触比较多的离线处理系统,实时流处理的有些地方还是比较有意思的。在这里面,最常被人提到的词应该是“Exactly Once”语义 ,在工作面试中,如果做过实时流系统,肯定免不了被问到“xx框架是如何做到Exactly Once的”?笔者最近在阅读Spark Streaming的官方文档中,提到了这一点,于是来做个小小的总结归纳。如果感兴趣的同学,请继续往下阅读。

语义定义


在流处理系统中,我们对应数据记录的处理,有3种级别的语义定义,以此来衡量这个流处理系统的能力。

  • At most once(最多一次)。每条数据记录最多被处理一次,潜台词也表明数据会有丢失(没被处理掉)的可能。
  • At least once(最少一次)。每条数据记录至少被处理一次。这个比上一点强的地方在于这里至少保证数据不会丢,至少被处理过,唯一不足之处在于数据可能会被重复处理。
  • Exactly once(恰好一次)。每条数据记录正好被处理一次。没有数据丢失,也没有重复的数据处理。这一点是3个语义里要求最高的。

基本语义


上一节介绍的语义是比较宽泛意义上的语义,这里我们再细分下里面的语义操作。比如说,我们可以把一个记录处理操作再划分为下面3个子操作:

  • 接收数据的操作。从数据源接收数据的操作。
  • 转换处理数据的操作。在这里面数据会被事先定义好的各种操作语义所处理。
  • 输出数据操作。将处理好后的结果数据输出到外部系统文件系统,或数据集等等。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值