开发者社区> 问答> 正文

关于Async I/O的exactly-once

看文档我的理解是会将异步的请求保存在检查点中,failover的时候重新触发请求。我的问题是既然是重新触发请求,并没有回滚,那之前的请求已经对外部系统造成影响了,不就是at least-once了吗? 比如ck1:发送了a b c三个请求更新外部数据库,ck2:发送:d,e,f。假设ck1做完了checkpoint,a ,b请求成功,c没成功.

ck2在执行到e的时候任务被cancel了,但c,d都已经成功了。那么我重新启动的时候从最近一次成功的ck1拉起,c,d岂不是又要被重新请求一次*来自志愿者整理的flink邮件归档

展开
收起
毛毛虫雨 2021-12-08 11:11:45 354 0
1 条回答
写回答
取消 提交回答
    1. 首先你描述的场景,不只存在于 Async IO operator,其他 operator 也会有类似问题
    2. Flink 的 exactly once 是针对 Flink 内部而言,例如 state 等,[1]
    3. 如果你想针对外部系统也保证 exactly once 语义,需要对应的 connector 支持 [2]*来自志愿者整理的flink邮件归档
    2021-12-08 19:25:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载