当前位置:网站首页>Flink学习8:数据的一致性
Flink学习8:数据的一致性
2022-07-04 03:47:00 【hzp666】

1.简介
在分布式流处理引擎中,高吞吐 低延迟,是最核心的需求。
与此同时数据一致性在分布式应用中也很重要。
(在精确场景下,精确一致性往往要求也很高)

2.flink的数据一致性
flink如何保证计算状态的一致性。
异步屏障快照机制,来实现数据的精确一致性。
当任务崩溃或取消后,可以通过检查点或保存点,来实现恢复,实现数据流的重放,从而达到任务的一致性。(这种机制是不会牺牲系统性能的)

2.1 有状态和无状态事件
先来看下什么是状态事件:
1. 无状态,即每个事件是单独独立的,各事件之间无关联。
输出的结果仅跟当前事件有关。
eg: 统计天气温度,当大于40°C 时候,发布高温报警。(跟之前的温度没有关系)
2.有状态,即事件跟之前的事件状态有关联。
输出的结果是结合了之前各事件,综合考虑的结果
eg:统计最近1小时的平均气温,


2.2 数据一致性
当分布式系统引入状态的时候,自然就引入了数据一致性问题。
根据正确性的不同,可以分为3类:
1.正确性最低:最多一次。当故障发生时候,什么都不做。
2.正确性中等:至少一次。当故障发生时候,系统不会漏掉之前的事件,但是可能会重复计算。(最终的统计值可能会大于等于真实的数据值)
3.正确性最高:精确一致。聚合结果和未发生故障结果一致。
“”精确一致“”相对“”至少一次“”,系统会更复杂,处理速度会相对较慢。因为会有数据对齐操作。

最开始的storm,samza都是至少一次,
后来的Storm Trident 和 Spark Streaming 虽然保证了精确一致,但是牺牲了很大的性能。
Flink在没有牺牲太大性能的前提下,保证精确一次。

2.3 Flink的异步屏障快照机制
2.3.1快照机制
先看下什么是快照机制:定期对作业状态和数据流进行记录

2.3.2但是传统的快照机制,存在两个主要问题:

2.3.3 flink是如何优化快照机制的
1. 采用异步快照机制。基于chandy-lamport 算法,制定了检查点机制,叫做异步屏障检查点机制。

2. 异步屏障快照机制

3.检查点屏障,是一种特殊的内部消息,
将数据流从时间上切分为多个窗口,
一个窗口对应,数据流中的一个快照。
屏障由JobManager定时广播给计算任务所有的source,并伴随数据流一起流至下游。
每个屏障位于,当前快照 和 下个快照的分割点。
当下游数据检查到凭照,就会触发快照动作,不需要暂停这个计算任务。

4.异步检查点中的“异步”

边栏推荐
- “软硬皆施”,助力建成新型云计算数据中心
- LevelDB源码解读-SkipList
- LNK2038 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MDd_DynamicDebug”(main.obj 中)
- Katalon框架测试web(二十一)获取元素属性断言
- Which product is better for 2022 annual gold insurance?
- CesiumJS 2022^ 源码解读[0] - 文章目录与源码工程结构
- [PaddleSeg 源码阅读] PaddleSeg 自定义数据类
- Zlmediakit compilation and webrtc push-pull flow testing
- Unity移动端游戏性能优化简谱之 画面表现与GPU压力的权衡
- Summary of Chinese remainder theorem
猜你喜欢

2022-07-03: there are 0 and 1 in the array. Be sure to flip an interval. Flip: 0 becomes 1, 1 becomes 0. What is the maximum number of 1 after turning? From little red book. 3.13 written examination.

用于TCP协议交互的TCPClientDemo

Msgraphmailbag - search only driveitems of file types

Mindmanager2022 efficient and easy to use office mind map MindManager

Audio and video technology development weekly | 232
![[untitled]](/img/b5/bf76783aa428222623d760756a14d9.jpg)
[untitled]

Perf simple process for multithreaded profile

1289_ Implementation analysis of vtask suspend() interface in FreeRTOS

'2'>' 10'==true? How does JS perform implicit type conversion?

SQL语句加强练习(MySQL8.0为例)
随机推荐
Evolution of MySQL database architecture
Msgraphmailbag - search only driveitems of file types
MySQL one master multiple slaves + linear replication
system information
XSS prevention
STM32外接DHT11显示温湿度
Database SQL statement summary, continuous update
ctf-pikachu-XSS
02 ls 命令的具体实现
Sales management system of lightweight enterprises based on PHP
Pytest multi process / multi thread execution test case
[Yugong series] go teaching course 002 go language environment installation in July 2022
Support the first triggered go ticker
CesiumJS 2022^ 源码解读[0] - 文章目录与源码工程结构
Es network layer
[paddleseg source code reading] paddleseg calculates Miou
基于PHP的轻量企业销售管理系统
[PaddleSeg 源码阅读] PaddleSeg计算Dice
Graduation summary
*. No main manifest attribute in jar