Flink 容错机制与状态

字节跳动 Flink 状态查询实践与优化 动手点关注干货不迷路????本篇文章介绍了字节跳动在 Flink 状态查询方面所进行的优化,解决了查询 Flink 任务状态时开发成本高及无法查询状态元信息等问题,提出了 State Query on Flink SQL 的解决方案,让用户使用 Flink Batch SQL 就可以快速查询 Flink 任务状态。背景众所周知,Flink 中的 State 保存了算子计算过程... 阅读详情

 

简介

  • Apache Flink提供了一种容错机制,可以持续恢复数据流应用程序的状态。
  • 该机制确保即使出现故障,经过恢复,程序的状态也会回到以前的状态。
  • Flink 主持 at least once 语义 和 exactly once 语义
  • Flink 通过定期地做 checkpoint 来实现容错 和 恢复, 容错机制不断地生成数据流的快照, 而不会对性能产生太大的影响。
  • 流应用程序的状态存储在一个可配置的地方(例如主节点或HDFS)
  • 如果出现车程序故障(由于机器、网络或软件故障), Flink 将停止分布式流数据流。
  • 然后系统重新启动 operator, 并将其设置为最近一批的检查点。
  • 注意点:
    • 默认情况下, 禁用checkpoint
    • 要使得容错机制正常运行, 数据流 source 需要能够将流倒回到指定的之前的点。
    • 比如 Apache Kafka 有这种方法, flink与 Kafka 的 connector 可以利用重置 kafka topic 的偏移量来达到数据重新读取的目的。
    • 由于 Flink 的检查点由分布快照实现, 以下的"检查点" 和 "快照" 是同意义的。

CheckPoint(检查点)

  • Flink 的容错机制的核心部分是生成分布式数据流和operator状态一致的快照。
  • 这些快照充当检查点, 系统可以早发生故障时将其回滚。
  • 分布式快照是由 Chandy-Lamport 算法实现的。
  • Barriers(栅栏)

恢复

  • Flink 恢复时的机制是十分直接的: 在系统失效时, Flink选择最近的已完成的检查点k, 系统接下来重新部署整个数据流图, 然后给每个Operator 在检查点 k 时的相应状态。
  • 数据源则被设置为从数据流的 Sk 位置开始读取。
  • 例如, 在 Apache Kafka 执行恢复时, 系统会通知消费者从便宜 Sk 开始获取数据。

先决条件

  • Flink 的 checkpoint机制一般来说, 它需要:
    • 持续的数据源
      • 比如消息队列(Apache Kafka, RabbitMQ) 或文件系统(例如, HDFS, Amazon S3, GFS, NFS, Ceph ......)。
    • 状态存储的持久化
      • 通常是分布式文件系统(HDFS, Amazon S3, GFS, ...)

启用和配置检查点

  • 默认情况下, flink禁用检查点。

  • 开启 checkpoint 的方式: 调用env.enableCheckpointing(n), 其中 N 是以毫秒为单位的检查点间隔。

  • Checkpoint 的相关参数:

State Backends(状态反压)

  • 流计算中再以下场景中需要保存状态:

    • 窗口操作
    • 使用了 KV 操作的函数
    • 继承了 CheckpointFunction 的函数
  • 当检查点(checkpoint) 机制启动时, 状态将在检查点中持久化来应对数据丢失以及恢复。

  • 而状态在内部是如何表示的、状态是如何持久化到检查点中以及持久化到哪里都取决于选定的 State Backend。

  • Flink 在保存状态时, 支持3中存储方式:

    • MemoryStateBackend(内存状态反压)
    • FsStateBackend(文件状态反压)
    • RocksDBStateBackend(RocksDB状态反压)
  • 如果没有配置其他任何内容, 系统默认将使用 MemoryStateBackend。

  • MemoryStateBackend

    • 此种存储策略将数据保存在java的堆里,比如:kv的状态或者窗口操作用hash table来保存value等等。

    • 当进行checkpoints的时候,这种策略会对状态做快照,然后将快照作为checkpoint中的一部分发送给JobManager,JM也将其保存在堆中。

    • Memory StateBackend可以使用异步的方式进行快照,官方也鼓励使用异步的方式,避免阻塞,现在默认就是异步。

    • 注意点:

      • 异步快照方式时,operator操作符在做快照的同时也会处理新流入的数据,默认异步方式
      • 同步快照方式:operator操作符在做快照的时候,不会处理新流入的数据,同步快照会增加数据处理的延迟度。
    • 如果不希望异步,可以在构造的时候传入false,如下:

      new MemoryStateBackend(MAX_MEM_STATE_SIZE, false);
      
    • 此策略的限制:

      • 单次状态大小最大默认被限制为5MB,这个值可以通过构造函数来更改。
      • 无论单次状态大小最大被限制为多少,都不可用大过akka的frame大小。
      • 聚合的状态都会写入JM的内存。
    • 适合的场景:

      • 本地开发和调试
      • 状态比较少的作业
  • FsStateBackend

    • 通过文件系统的URL来设置,如下:

      • hdfs://namenode:40010/flink/checkpoints
      • file:///data/flink/checkpoints
    • 当选择FsStateBackend时,会先将数据保存在任务管理器( Task Manager)的内存中。

      • 当做checkpointing的时候,会将状态快照写入文件,保存在文件系统。

      • 少量的元数据会保存在JM的内存中。

      • 默认情况下,FsStateBackend配置为提供异步快照,以避免在写入状态检查点时阻塞处理管道(processing pipeline)。

      • 可以通过将构造函数中相应的boolean标志设置为false来禁用该功能

        new FsStateBackend(path, false);
        
      • 适用场景:

        • 状态比较大, 窗口比较长, 大的 KV 状态
        • 需要做 HA 的场景
  • RockDBStateBackend

    • 通过文件系统的URL来设置, 例如:

      • hdfs://namenode:40010/flink/checkpoints
      • file:///data/flink/checkpoints
    • 此种方式kv state需要由rockdb数据库来管理,这是和内存或file backend最大的不同。

    • RocksDBStateBackend使用RocksDB数据库保存数据,这个数据库保存在TaskManager的数据目录中。

    • 注意:RocksDB,它是一个高性能的Key-Value数据库。数据会放到先内存当中,在一定条件下触发写到磁盘文件上

    • 在 checkpoint时, 整个 RocksDB数据库的数据会快照一份, 然后存到配置的文件系统中(一般是 hdfs)。

    • 同时, Apache Flink将一些最小的元数据存储在 JobManager 的内存或者 Zookeeper 中(对于高可用性情况)。

    • RocksDB默认配置为执行异步快照

    • 适合场景:

      • RocksDBStateBackend是目前唯一可用于支持有状态流处理应用程序的增量检查点。
      • 注意:增量的checkpoint指的是在保存快照时,快照里的数据只要保存差异数据就好。
      • RocksDBStateBackend方式能够持有的状态的多少只取决于可使用的磁盘大小。
      • 相比较MemoryStateBackend将状态保存在内存中,这会允许使用非常大的状态。
      • 但这也同时意味着,这个策略的吞吐量会受限。
    • 代码:

      // 默认使用内存的方式存储状态值, 单词快照的状态上限为10MB, 使用同步方式进行快照。
      env.setStateBackend(new MemeoryStateBackend(10*1024*1024, false));
      
      // 使用 FsStateBackend的方式进行存储, 并且是同步方式进行快照
      env.setStateBackend(new FsStateBackend("hdfs://namenode....", false));
      
      try{
          // 使用 RocksDBStateBackend方式存储, 并采用增量的快照方式进行存储。
          env.setStateBackend(new RocksDBStateBackend("hdfs://namenode....", true));
      } catch(IOException e){
          e.printStackTrace();
      }
      

Checkpoint使用

  • 程序的运行过程中会每隔env.enableCheckpointing(5000)时间, 产生一个checkpoint快照点。

  • 当使用 hdfs 来存储checkpoint 的快照点状态数据时,

  • 如果程序失败, 我们重启程序时, 可以指明从哪个快照点进行恢复。

    flink-1.9.1/bin/flink run -s hdfs://ronnie01:8020/data/flink-checkpoint/xxxxxxxxxxxxxxx(哈希码)/chk-xxx/ metadata -c com.ronnie.flink.test.checkPointTest flink-test.jar
    
  • 代码:

    package com.ronnie.flink.stream.test;
    
    import org.apache.flink.api.common.functions.FlatMapFunction;
    import org.apache.flink.api.common.restartstrategy.RestartStrategies;
    import org.apache.flink.api.java.tuple.Tuple;
    import org.apache.flink.api.java.tuple.Tuple2;
    import org.apache.flink.contrib.streaming.state.RocksDBStateBackend;
    import org.apache.flink.runtime.state.filesystem.FsStateBackend;
    import org.apache.flink.runtime.state.memory.MemoryStateBackend;
    import org.apache.flink.streaming.api.CheckpointingMode;
    import org.apache.flink.streaming.api.datastream.DataStreamSource;
    import org.apache.flink.streaming.api.datastream.KeyedStream;
    import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
    import org.apache.flink.streaming.api.environment.CheckpointConfig;
    import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
    import org.apache.flink.util.Collector;
    
    import java.io.IOException;
    
    public class CheckPointTest {
    
        public static void main(String[] args) {
            StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    
            // 启动checkpoint, 并且设置多久进行一次checkpoint, 即两次checkpoint的时间间隔
            env.enableCheckpointing(5000);
    
            env.setParallelism(1);
    
            CheckpointConfig checkpointConfig = env.getCheckpointConfig();
    
            env.setRestartStrategy(RestartStrategies.fallBackRestart());
    
            /* 设置 checkpoint 语义, 一般使用 exactly_once 语义。
             at_least_once 一般在那里非常低的延迟场景使用。*/
            checkpointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
    
            /*
                设置检查点之间的2最短时间
                检查点之间的最短时间: 为确保流应用程序在检查点之间取得一些进展, 可以定义检查点之间需要经过多长时间。
                如果将此值设置为例如500, 则无论检查点持续时间和检查点间隔如何, 下一个检查点将在上一个检查点完成后的500ms内启动
                请注意, 这意味检查点间隔永远不会小于此参数。
             */
            checkpointConfig.setMinPauseBetweenCheckpoints(500);
    
            // 设置超时时间, 若本次checkpoint时间超时, 则放弃本次checkpoint操作
            checkpointConfig.setCheckpointTimeout(60000);
    
            /*
                同一时间最多可以进行多少个checkpoint
                默认情况下, 当一个检查点仍处于运行状态时, 系统不会触发另一个检查点
             */
            checkpointConfig.setMaxConcurrentCheckpoints(1);
    
            /*开启checkpoints的外部持久化,但是在job失败的时候不会自动清理,需要自己手工清理state
              DELETE_ON_CANCELLATION:在job canceled的时候会自动删除外部的状态数据,但是如果是FAILED的状态则会保留;
              RETAIN_ON_CANCELLATION:在job canceled的时候会保留状态数据
             */
            checkpointConfig.enableExternalizedCheckpoints(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
    
            // 默认使用内存的方式存储状态值。单次快照的状态上限内存为10MB, 使用同步方式进行快照。
            env.setStateBackend(new MemoryStateBackend(10*1024*1024, false));
    
            // 使用 FsStateBackend的方式进行存储, 并且是同步方式进行快照
            env.setStateBackend(new FsStateBackend("hdfs://ronnie01:8020/data/flink-checkpoint",false));
    
            try {
                env.setStateBackend(new RocksDBStateBackend("hdfs://ronnie:8020/data/flink-checkpoint", true));
            } catch (IOException e) {
                e.printStackTrace();
            }
    //        DataStreamSource<String> dataStreamSource = env.socketTextStream("ronnie01",9999);
    //
    //        SingleOutputStreamOperator<Tuple2<String, Integer>> pairStream = dataStreamSource.flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() {
    //            @Override
    //            public void flatMap(String value, Collector<Tuple2<String, Integer>> out) throws Exception {
    //                String[] split = value.split(" ");
    //                for (String word : split) {
    //                    System.out.println("--------- lala --------");
    //                    out.collect(new Tuple2<String, Integer>(word, 1));
    //                }
    //            }
    //        });
    //
    //
    //        KeyedStream<Tuple2<String, Integer>, Tuple> keyedStream = pairStream.keyBy(0);
    //
    //
    //        SingleOutputStreamOperator<Tuple2<String, Integer>> sum = keyedStream.sum(1);
    //
    //
    //        sum.print();
    //
    //
    //        try {
    //            //转换算子都是懒执行的,最后要显示调用 执行程序,
    //            env.execute("checkpoint-test");
    //        } catch (Exception e) {
    //            e.printStackTrace();
    //        }
    
        }
    }
    
    

Savepoint (保存点)

  • Flink的Savepoints与Checkpoints的不同之处在于备份与传统数据库系统中的恢复日志不同。

  • 检查点的主要目的是在job意外失败时提供恢复机制。

  • Checkpoint的生命周期由Flink管理,即Flink创建,拥有和发布Checkpoint - 无需用户交互。

  • 作为一种恢复和定期触发的方法,Checkpoint主要的设计目标是:

    • 创建checkpoint,是轻量级的
    • 尽可能快地恢复
  • 与此相反,Savepoints由用户创建,拥有和删除。

  • 他们一般是有计划的进行手动备份和恢复。

  • 例如,在Flink版本需要更新的时候,或者更改你的流处理逻辑,更改并行性等等。

  • 在这种情况下,我们往往关闭一下流,这就需要我们将流中的状态进行存储,后面重新部署job的时候进行会。

  • 从概念上讲,Savepoints的生成和恢复成本可能更高,并且更多地关注可移植性和对前面提到的作业更改的支持。

  • 使用:

    • 命令:

      flink savepoint jobID target_directory
      
    • 保存当前流的状态到指定目录:

      bin/flink savepoint xxxxxxxx(哈希码) hdfs://ronnie01:8020/data/flink/savepoint
      
    • 重启, 恢复数据流:

      flink-1.9.1/bin/flink run -s hdfs://ronnie01:8020/data/flink/savepoint/savepoint-xxxxx-xxxxxxxxx -c com.ronnie.flink.stream.test.CheckPointTest flink-test.jar
      

 

相关博文:
· Flink容错机制
· 【Flink】容错机制
· 总结Flink状态管理和容错机制
· Flink状态管理和容错机制介绍
· Flink容错机制(checkpoint)

Flink stop 和 cancel停止 job 的区别 阅读详情

相关推荐

Flink之状态管理与容错机制

1 状态管理的基本概念 1.1 什么是状态 1.1.1 无状态的例子:消费延迟计算 消息队列: 一个生产者持续写入,多个消费组分别读取,如何实时统计每个消费者落后多少条数据? //输入 { "timestamp": 1555516800, "offset": { "producer": 16, "consumer0": 10, "consumer1": 7, "c...

alex大喵的博客 1064

Flink 停止 job 的方式(stop 和 cancel)

1.Stop 方式 后边跟的任务id 是flink的任务ID,不是yarn的 flink stop -m 127.0.0.1:8081 357591171dfcca2eea09de 注:stop方式停止任务对 source 有要求,source必须实现了StopableFunction接口,才可以优雅的停止job /** * 需要能 stoppable 的函数必须实现这个接口,例如流式任务的 source。 * stop() 方法在任务收到 STOP 信号的时候调用。 * source 在接收到

杜海的博客 1万+

Flink 状态管理和容错机制介绍

计算任务的结果不仅仅依赖于输入,还依赖于它的当前状态,其实大多数的计算都是有状态的计算。比如wordcount,给一些word,其计算它的count,这是一个很常见的业务场景。count做为输出,在计算的过程中要不断的把输入累加到count上去,那么count就是一个state。...

SmartSi 579

flink学习(cancel以及整合springboot)

flink,springboot

weixin_42165317的博客 1416

Flink 状态与容错机制

通过定期的检查点机制,Flink 可以将任务的状态保存到持久化存储中,并在发生故障时从最近的检查点恢复状态,从而实现容错性。Flink 提供了不同的键控状态接口,如 ValueState、ListState、MapState 和 ReducingState,用于不同的使用场景。Flink 是一个开源的流式处理框架,具备强大的状态管理和容错机制。Flink 提供了一套可靠的状态管理方案,以及容错机制,确保在发生故障时数据的一致性和可恢复性。Flink 支持两种类型的状态:键控状态和算子状态。

VqhhMobile的博客 145

Flink的状态和容错机制

Flink具有强大的容错机制,可以保证在出现故障时数据的一致性和可靠性。Flink具有强大的容错机制,可以保证在出现故障时数据的一致性和可靠性。Apache Flink是一个分布式流处理和批处理框架,具有强大的状态管理和容错能力。在本文中,我们将详细介绍Flink中的状态管理和容错机制,并提供相应的源代码示例。Apache Flink是一个分布式流处理和批处理框架,具有强大的状态管理和容错能力。在本文中,我们将详细介绍Flink中的状态管理和容错机制,并提供相应的源代码示例。Flink的状态和容错机制。

VqhhMobile的博客 72

一文让你彻底弄清failfast、failsafe、failover、failback、failsilent

背景 最近参与了部门的稳定性建设,时常会看到一些failxxxx的字眼,常见的场景如:在Java集合迭代过程中,如果集合有修改就会抛出一个ConcurrentModificationException异常,这就是一种典型的fail-fast机制。 经过查阅资料,原来这些专有名词都有一个统一的名字:容错机制。终于,借此机会对常见的容错机制进行一下总结,方便以后学习。 文章中若有本人理解或描述不当之处,欢迎老铁们指出~ fail-fast - 快速故障 在系统设计中,快速故障系统是一种可以立即报告任何可能表明

爱钻研的小白的博客 4613

策略实现容错恢复机制

策略实现容错恢复机制,实现算法上的动态转换。

Flink 状态管理与容错机制

参考 Apache Flink 零基础入门系列文章。 状态管理的基本概念 什么是状态 在批处理过程中,数据是划分为块分片去完成的,然后每一个Task去处理一个分片。当分片执行完成后,把输出聚合起来就是最终的结果。在这个过程当中,对于state的需求还是比较小的。 在流计算过程中,对State有非常高的要求,因为在流系统中输入是一个无限制的流,会持续运行从不间断。在这个过程当中,就需要将状态数据很好...

Fenggms的博客 756

华为S5700三层交换机VLAN配置避坑指南:为什么你的VLAN间无法互通?

本文针对华为S5700三层交换机VLAN间无法互通的典型故障,提供深度排障指南。文章从数据转发原理入手,系统梳理了从物理链路、VLAN配置、VLANIF接口状态、路由表到ARP表、MTU及安全策略等全链路检查点,并给出了清晰的排查命令与流程,帮助网络工程师快速定位并解决VLAN间路由问题,实现稳定互通。

tt34567的博客 875

TAS5805MPWPR实战:数字音频功放从选型到量产全流程指南

数字音频功放将I2S数字信号直接转为PWM驱动扬声器,省去传统DAC与模拟运放链路,在高保真、低BOM与紧凑PCB之间找到平衡。其核心在于内置可编程DSP,支持多段PEQ、DRC等数字处理,通过I2C配置即可完成调音,而不占用主控算力。这类方案广泛应用于蓝牙音箱、Soundbar、智能音频模组等产品,但实际落地时常遇到I2C通信不稳定、EQ未生效、底噪超标、DC检测误触发等工程问题。从电源布局、LC滤波参数到PurePath Console工具链的使用,再到量产固件加载与故障排查,都需要系统化方法论支撑。本

weixin_29164843的博客 220

Flink学习之容错机制和状态一致性

☀️在前天的学习中,我们学习了flink中的几个重要概念:时间、水位线和状态,今天我们继续学习flink中的两个重要机制:容错机制和状态一致性保证。对往期内容感兴趣的同学可以参考👇: 链接: Flink学习中之time、watermark、state. 链接: Flink实战之电商用户行为实时分析. 链接: Flink学习之flink sql. 链接: Flink学习之Table API(python版本). 链接: Flink学习之DataStream API(python版本). 🌰flink的容错

柳小葱的博客 3307

软件自动化测试脚本如何编写,编写自动化测试脚本的几点注意事项

我们需要自动化测试脚本的原因:1、验收测试是一项非常复杂和费力的被用来确保软件质量的环节。它的目的就是使软件能得到充分运行并且能使其符合原始需求。2、测试的目的无非就是满足了两个结果:测试通过或测试不通过。为了能实现每个测试结果,必须要明确每个测试用例。并且对于整个系统而言在合同中必须定义测试用例的失败标准,而且这个失败标准数必须是可接受的。3、测试用例的通过条件必须有一个清晰的标准,标准可以被定...

weixin_39575775的博客 2251

flink checkpoint 恢复_Flink状态管理和容错机制介绍

本文整理自去年8月11日在北京举行的 Flink Meetup 会议,分享嘉宾施晓罡,目前在阿里大数据团队部从事Blink方面的研发,现在主要负责Blink状态管理和容错相关技术的研发。公众号(zhisheng)内回复 Flink 可获得相关的资料本文主要内容如下:有状态的流数据处理;Flink中的状态接口;状态管理和容错机制实现;阿里相关工作介绍;一. 有状态的流数据处理 1....

weixin_42106357的博客 1398

从Multibit到Debanking:芯片设计中的时序优化完整流程解析(含真实案例)

本文深入解析芯片设计中Multibit技术与Debanking的时序优化完整流程,结合7nm移动SoC真实案例,详细探讨Multibit的核心优势、实施条件及潜在风险,并提供Debanking的触发时机与操作策略。通过平衡Multibit与Debanking,工程师可有效优化PPA(Power-Performance-Area),提升芯片设计效率。

weixin_30316097的博客 462

解锁RK3588视觉潜能:RGA硬件加速库实战指南

本文深入探讨了如何利用RK3588芯片内置的RGA硬件加速库,解决视觉应用中图像预处理的性能瓶颈。通过实战指南,详细介绍了RGA库在YUV转RGB、图像缩放等核心操作上的应用,相比CPU软处理可大幅降低延迟与CPU占用,从而充分释放RK3588的NPU算力,构建高效的AI视觉预处理流水线。

zeta9的博客 671

Flink状态管理和容错机制介绍

  本文来自8月11日在北京举行的 Flink Meetup会议,分享来自于施晓罡,目前在阿里大数据团队部从事Blink方面的研发,现在主要负责Blink状态管理和容错相关技术的研发。 本文主要内容如下: 有状态的流数据处理; Flink中的状态接口; 状态管理和容错机制实现; 阿里相关工作介绍; 一.有状态的流数据处理 1.1.什么是有状态的计算    计算任务的结果不仅仅依赖于...

Unique small lu bu 2477

Android 14.0 SystemUI状态栏居中显示时间和修改时间显示样式

在14.0的系统rom定制化开发中,在systemui状态栏系统时间默认显示在左边和通知显示在一起,但是客户想修改显示位置,想显示在中间,所以就要修改SystemUI 的Clock.java 文件这个就是管理显示时间的,居中显示的话就得修改布局文件了

安卓兼职framework和app工程师的博客 979

Flink:状态管理和容错机制

Flink中的状态 flink状态是什么? 在工作流中是如何参与运作的? flink状态的类型? 算子状态?作用域为限定算子任务,即仅当前算子可以访问。 算子状态的数据结构?列表状态 、联合列表状态、广播状态 ...

啥也不会的博客 2467

多思计组实验实验三、存储器读写实验

实验三、存储器读写实验

qq_53089329的博客 3653

生存曲线绘制及图例标签添加(使用R语言)

数据应该包含两列:一个是表示个体生存时间的时间变量(通常称为"时间(time)“)和一个是表示个体是否发生事件(如死亡)的事件变量(通常称为"事件(event)”)。通过修改上述代码中的数据和参数,您可以根据自己的需求绘制生存曲线,并添加相应的图例信息和标签。生存曲线是在生存分析中常用的工具,用于描述一组个体随时间的存活概率。函数的第一个参数指定图例的位置,这里我们选择了右上角(“topright”)。包来进行生存曲线的绘制,并通过添加图例信息和标签来增强可视化效果。的数据框,包含这两列数据。

CyberXZ的博客 558

【Flink】一文解析Flink如何实现状态管理和容错机制

Flink内置的很多算子,数据源source,数据存储sink都是有状态的,流中的数据都是buffer records,会保存一定的元素或者元数据。这种检查点的保存和恢复机制可以为应用程序内部状态提供“精确一次”(exactly-once,每一个数据只会被计算一次,遇到回退现象,需要将加上的数字再减去)的一致性,因为所有算子都会保存检查点并恢复其所有状态,这样一来所有的输入流就都会被重置到检查点完成时的位置。旧的流处理系统并不支持有状态的计算,而新一代的流处理系统则将状态及其正确性视为重中之重。

weixin_43923463的博客 799

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Flink之状态管理及容错机制

一、状态管理的基本概念 1.1、什么是状态   首先举一个无状态计算的例子:消费延迟计算。 假设现在有一个消息队列,消息队列中有一个生产者持续往消费队列写入消息,多个消费者分别从消息队列中读取消息。从图上可以看出,生产者已经写入 16 条消息,Offset 停留在 15 ;有 3 个消费者,有的消费快,而有的消费慢。消费快的已经消费了 13 条数据,消费者慢的才消费了 7、8 条数据。 ...

lixinkuan的博客 1565

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Apache Flink状态管理和容错机制介绍

1. 有状态的流数据处理 1.1 什么是有状态的计算 计算任务的结果不仅仅依赖于输入,还依赖于它的当前状态,其实大多数的计算都是有状态的计算。 比如wordcount,给一些word,其计算它的count,这是一个很常见的业务场景。count做为输出,在计算的过程中要不断的把输入累加到count上去,那么count就是一个state。 1.2 传统的流计算系统缺少对于程序状态的有效支持 (1...

不见其长,日有所长 238

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Flink的容错机制第三篇 状态管理及容错

上篇我们大体讲了Flink容错机制的处理方法,和产生checkpoint的机制;这次主要讲一些补充 一,Flink的checkpoint形式 checkpoint有两种特殊形式: Savepoint:是一种特殊的checkpoint,只不过不像checkpoint定期的从系统中去触发的,它是用户通过命令触发, 存储格式和checkpoint也是不相同的,会将数据按照一个标准的格式存储,不管配...

lishinho的博客 1127
上一篇: Elasticsearch内存那些事儿
下一篇:  Flink  内存
王树民
博客等级 码龄10年 912粉丝 560原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值