Flink的状态是否支持任务间共享

背景:

在日常编写代码的过程中,我们经常会在方法内部new很多的其他类对象来进行编码工作,那么对于这种情况怎么让new出来的对象是一个我们特意创建出来的一个mock实例,从而让我们能完全控制new出来的对象的所有行为呢?本文就来讲解下如何在powermock中mock类的构造函数。

原理追踪:

首先对于flink来说,对于算子的每个并行任务,每个任务也就是每个task都有存储有一份自己的状态,也就是Flink的状态是基于task的本地存储的,是保存在本地内存中的一份数据,同一个算子的多个并行task之间是没有跨 task 通讯。

其实对于下游的算子来说,收到广播元素的顺序有可能是不一样的,如下图所示:下游算子任务1收到元素的顺序是先A后B,而下游算子任务2收到元素的顺序是先B后A,
在这里插入图片描述

敏感的你是不是意识到了什么?是不是意味着有一个时刻,下游算子任务1的广播状态包含A,而下游算子任务2的广播状态包含的是B,这两个并行算子的广播状态是不一致?顺着推理假设此时有其他非广播流的元素关联广播状态,意味着有可能在算子任务1上得到的结果和算子任务2上得到的结果是不一样的?进一步引申,如果故障恢复后,下一次运行时,下游算子任务1和下游算子任务2都先收到A,假设此时同样是非广播流过来connect,是不是就会导致此时得到的结果和之前故障前那一次运行得到的结果是不一致的?也就是意味这个结果不具有确定性!!

最后,你一定好奇,那广播状态保证的语义是什么?答案是最终一致性,还是用上面的图作为例子,当保存到checkpoint检查点时,算子任务1和算子任务2肯定都收到了A和B两个元素,只是一个顺序是AB,一个顺序是BA,但是他们再不理会顺序的前提下保存到checkpoint保存点的内容是一样的。所以当从故障中恢复时,他能保证每个并行算子任务的广播状态的一致性.

总结:

算子的并行task之间是没有跨task通信的,所以所有的状态都是存放在本地机器的本地内存中,是单机级别的,他们能实现所谓的广播状态号称多个并行task之间状态一致性的前提是他们只保证最终一致性,也就是通过map的实现,他们保证元素在不区分到达顺序的情况下多个算子任务的状态是可以保持最终一致的.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13466.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后端开发常见技术场景

文章目录 1、单点登录这块怎么实现的1.1 概述1.2 JWT解决单点登录1.3 回答要点 2、权限认证是如何实现的2.1 概述2.2 RBAC权限模型2.3 回答要点 3、上传数据的安全性你们怎么控制?3.1 概述3.2 对称加密3.3 非对称加密3.4 回答要点 4、你负责项目的时候遇到了哪些比较…

css:鼠标经过el-dropdown 组件上会出现一个蓝色的小框

问题描述 效果如下,原以为是浏览器的bug,升级后就好了,没想到一直有这个问题 页面刷新后,鼠标经过el-dropdown 组件上会出现一个蓝色的小框 原因 浏览器默认有一个样式,加了一个边框 :focus-visible {outline: -we…

RabbitMQ

一、初识 MQ 1. 同步通讯 时效性强,立即获取结果 微服务间基于 Feign 的调用就属于同步 方式,存在一些问题: ① 耦合度高 ② 性能和吞吐能力不如异步 ③ 额外资源消耗 ④ 级联失败问题 2. 异步通讯 异步调用常见实现就是事件驱动模式 优点…

IDEA+spring boot+mybatis+spring mvc+bootstrap+Mysql停车位管理系统源码

IDEAJavaSpring BootMyBatisshiroLayuiMysql停车位管理系统源码 一、系统介绍1.环境配置 二、系统展示1.登录2.注册3.个人信息4.修改密码5.我的订单6.我的留言7.查车位8.管理员登录9.公告列表10.车位列表11. 订单列表12. 积分排行13. 留言列表14.管理员列表15. 用户列表16.修改…

当型循环和直到型循环(精讲)

目录 背景概念当型循环直到型循环 二维表对比图示与代码当型循环流程图N-S图(盒图) 直到型循环流程图N-S图(盒图) 例子当型图示代码 直到型图示代码 Do–Loop 和For –Next相同点:不同点:代码 总结 背景 两…

Java的数据结构

目录 数据结构: 1,数组 2,链表 3,哈希表 4,队列 5,堆 6,栈 7,树 8,图 数据结构: 1,数组 优点: 查找元素的速度很快; 按照索引来遍历数组的速度也很快。 缺点: 数组大小无法改变,一旦创建就无法扩容; 数组只能存储一种数据类型的数据; 插入、修改、删除时比较麻烦&…

第11章:C语言数据结构与算法初阶之排序

系列文章目录 文章目录 系列文章目录前言排序的概念及其运用排序的概念常见的排序算法 常见排序算法的实现1.直接插入排序2. 希尔排序(缩小增量排序)3. 直接选择排序4. 堆排序5. 冒泡排序6. 快速排序将区间按照基准值划分为左右两半部分的常见方式&#…

<Linux开发>驱动开发 -之- Linux I2C 驱动

<Linux开发>驱动开发 -之- Linux I2C 驱动 交叉编译环境搭建: <Linux开发> linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下: <Linux开发> -之-系统移植 uboot移植过程详细…

flutter聊天界面-加号【➕】更多展开相机、相册等操作Panel

flutter聊天界面-加号【➕】更多展开相机、相册等操作Panel 在之前实现了flutter聊天界面的自定义表情的展示,这里记录一下更多操作展开的相机、相册等操作功能实现。 一、查看效果 更多操作展开的相机、相册等操作功能实现。 二、代码实现 展开的操作按钮可能比…

嵌入式基础知识-总线带宽

带宽,最容易想到的是上网用的网络带宽,在嵌入式软件开发中,也会用到带宽,这个带宽的含义就不一样了,区别是什么?本篇就来介绍一下,并通过一些例子来进行带宽的计算。 先来简单看下不同领域的带…

第二节 给SpringBootAdmin的server端加入spring security安全控制

前言 本来想用一节就写完SpringBootAdmin的,但随着研究的深入发现一节应该是不够的,网上的资料也不会非常系统,官网的例子有些已经好几年没更新了,所以接下来还是系统性的来写下吧 第一节 完成基础配置,暴露所有端点…

有AI助手帮你,刷任何题都不吃力!

Rider如何配置AI助手? 前言:一、选择AI助手二、如何在Rider中配置CodeWhisperer三、使用方法四、分享你的AI解决方案 明明自觉学会了不少知识,可真正开始做题时,却还是出现了“一支笔,一双手,一道力扣&…