当前位置: 首页 > wzjs >正文

如何将软件上传到公开网站h5免费网站设计

如何将软件上传到公开网站,h5免费网站设计,车险网站模版,网站开发的基础课程在Flink的数据流处理体系中,Sink函数作为数据处理的最终出口,肩负着将处理后的数据写入外部存储引擎的关键使命。它如同数据旅程的终点站,决定着数据的最终归宿与应用价值。深入理解Sink函数的工作原理、核心概念及实现方式,对构建…

在Flink的数据流处理体系中,Sink函数作为数据处理的最终出口,肩负着将处理后的数据写入外部存储引擎的关键使命。它如同数据旅程的终点站,决定着数据的最终归宿与应用价值。深入理解Sink函数的工作原理、核心概念及实现方式,对构建高效、可靠的Flink数据处理作业至关重要。接下来,我们将基于详细笔记内容,全方位解析Flink Sink函数。

一、Sink函数核心概念与定位

Sink函数在Flink作业中占据独特且重要的位置,它没有下游算子,是数据处理流程的终点。一个Flink作业可包含一个或多个Sink函数,这些Sink函数并行或串行工作,将数据分别输出到不同的外部存储系统,如Kafka、HDFS、数据库等 ,满足多样化的数据存储与应用需求。例如,在电商实时数据分析场景中,一个Sink函数可将处理后的用户行为数据写入Kafka,供实时推荐系统使用;另一个Sink函数则可将销售统计数据写入数据库,用于生成报表。

二、二阶段提交协议:保障数据一致性的基石

2.1 协议组成与工作流程

二阶段提交(Two-phase Commit Protocol)是一种分布式事务协议,由事务管理器(Transaction Manager,TM)和多个资源管理器(Resource Manager,RM)构成。在分布式事务处理中,所有资源管理器向TM汇报自身活动状态,TM依据这些状态决定事务的提交或回滚操作。其具体流程如下:

  1. 事务发起:应用程序向TM提交请求,启动分布式事务。
  2. 第一阶段:准备阶段:TM通知所有RM提交事务,各RM接收到指令后,开始执行事务操作,但并不真正提交事务,而是将准备结果信息反馈给TM。若在准备事务阶段出现超时情况,则视为该RM操作失败。
  3. 第二阶段:决策阶段:TM根据所有RM的准备信息做出决策。若所有RM都准备成功,TM会下达提交事务的指令;只要有一个或多个RM准备失败,TM就会执行事务回滚操作,确保数据一致性 。

2.2 在Flink Sink中的意义

在Flink与外部存储系统交互时,二阶段提交协议起着关键作用。Flink自身虽能通过状态管理保证引擎内部数据处理的精准一次(Exactly-Once),但无法确保与外部引擎交互时的数据一致性。通过引入二阶段提交协议,结合Sink函数实现,能够保障端到端的数据一致性,避免因部分数据写入成功、部分失败导致的数据不一致问题 。

三、SinkFunction类体系深度剖析

3.1 SinkFunction接口

SinkFunction接口定义了数据操作的基本行为,但不具备函数生命周期管理能力。其核心方法包括:

  • invoke:该方法负责将给定的数据值写入接收器,每个输入记录都会触发此函数执行。例如,在将日志数据写入文件的Sink函数中,invoke方法会将每条日志记录写入对应的文件。
  • writeWatermark:用于将给定的水印写入接收器,主要适用于需要传播水印的高级接收器场景,如在实时流处理中,某些Sink需要感知水印以处理乱序数据 。
  • finish:在数据处理结束时调用,可用于执行一些清理或收尾操作,如关闭文件句柄、释放连接等 。

3.2 TwoPhaseCommitSinkFunction

为实现端到端的精准一次性,Flink引入了TwoPhaseCommitSinkFunction。它基于二阶段提交协议,借助Flink的检查点机制,确保在与外部存储系统交互时数据的一致性。理论上,只要满足以下条件,所有connector都能借助该函数实现端到端严格一致性语义:

  1. Sink端要求:Sink端需支持回滚机制或具备幂等性。回滚机制可在作业失败时将部分写入的结果恢复到初始状态;幂等性则保证即使作业失败后重新写入数据,也不会出现重复或不一致问题 。
  2. Source端要求:Source端必须支持断点读取功能,确保任务失败恢复后,能从断点处继续读取数据,保证数据处理的连续性 。

3.3 与函数生命周期管理的结合

SinkFunction和SourceFunction仅定义数据操作行为,而函数的生命周期管理主要由AbstractRichFunction承担。因此,无论是官方实现的connector,还是开发者自定义的connector,大多继承TwoPhaseCommitSinkFunction和RichSinkFunction,以实现数据操作与生命周期管理的结合 。

四、检查点函数:保障状态一致性的关键

Flink支持函数级别的状态保存和恢复,CheckpointedFunction和ListCheckpointed接口在其中发挥重要作用。CheckpointedFunction接口定义了snapshotState方法用于备份状态,initializeState方法用于恢复状态;ListCheckpointed接口则通过notifyCheckpointComplete标记备份完成,notifyCheckpointAborted终止备份操作 。这些接口与Sink函数配合,在作业失败恢复时,能够保证Sink函数从正确的状态继续执行,进一步增强数据处理的可靠性和一致性 。

五、SinkFunction实现示例:以Jdbc Connector Sink为例

JdbcSinkFunction的实现类为GenericJdbcSinkFunction,通过分析其代码可深入理解SinkFunction的具体实现逻辑。

public class GenericJdbcSinkFunction<T> extends RichSinkFunction<T>implements CheckpointedFunction, InputTypeConfigurable {private final JdbcOutputFormat<T,?,?> outputFormat;public GenericJdbcSinkFunction(@Nonnull JdbcOutputFormat<T,?,?> outputFormat) {this.outputFormat = Preconditions.checkNotNull(outputFormat);}// 函数生命周期管理,open也是@Overridepublic void open(Configuration parameters) throws Exception {super.open(parameters);RuntimeContext ctx = getRuntimeContext();outputFormat.setRuntimeContext(ctx);outputFormat.open(ctx.getIndexOfThisSubtask(), ctx.getNumberOfParallelSubtasks());}// 向外部写入数据@Overridepublic void invoke(T value, Context context) throws IOException {outputFormat.writeRecord(value);}@Overridepublic void initializeState(FunctionInitializationContext context) {}@Overridepublic void snapshotState(FunctionSnapshotContext context) throws Exception {outputFormat.flush();}@Overridepublic void close() {outputFormat.close();}@Overridepublic void setInputType(TypeInformation<?> type, ExecutionConfig executionConfig) {outputFormat.setInputType(type, executionConfig);}
}

在上述代码中,数据的具体操作由JdbcOutputFormat负责。invoke方法将接收到的数据传递给JdbcOutputFormat的writeRecord方法进行处理。JdbcOutputFormat的writeRecord方法采用批量写入策略,将数据暂存于批次中,当批次数据量达到设定的batchSize时,执行flush操作,将数据写入数据库,从而提高写入性能 。

六、总结与展望

通过对Flink Sink函数的深入解析,我们全面了解了其核心接口、二阶段提交协议、检查点函数以及具体实现方式。Sink函数作为Flink数据处理的关键环节,其设计与实现直接影响数据处理的完整性和一致性。在实际应用中,开发者需根据业务需求,合理选择和定制Sink函数,并结合二阶段提交协议和检查点机制,确保数据在复杂的分布式环境中可靠输出 。随着数据处理需求的不断变化和技术的持续发展,Flink Sink函数也将不断演进,为用户提供更强大、灵活的数据输出解决方案。


文章转载自:

http://W112OMNq.bxbnf.cn
http://gc6ct4PF.bxbnf.cn
http://FTR2qcTn.bxbnf.cn
http://iUrO785b.bxbnf.cn
http://2oLKCJlE.bxbnf.cn
http://5DCf5IJG.bxbnf.cn
http://c2hxbtEZ.bxbnf.cn
http://HHc7jVCu.bxbnf.cn
http://qP6LS0HM.bxbnf.cn
http://cdwncpNH.bxbnf.cn
http://T28pjLeR.bxbnf.cn
http://24vZ3pvB.bxbnf.cn
http://Ht9KfgSQ.bxbnf.cn
http://FTeBFHIo.bxbnf.cn
http://BzzzuhdW.bxbnf.cn
http://QNZORNCA.bxbnf.cn
http://vZK2bsXh.bxbnf.cn
http://n1dmjf7x.bxbnf.cn
http://DYmlZbUh.bxbnf.cn
http://rg4CFybQ.bxbnf.cn
http://oVhSIBHM.bxbnf.cn
http://gXr6Ba8P.bxbnf.cn
http://xfec49rq.bxbnf.cn
http://WvFGPH2N.bxbnf.cn
http://123lThag.bxbnf.cn
http://Lgqkm6nq.bxbnf.cn
http://1qSKzjUz.bxbnf.cn
http://GGlUXQM5.bxbnf.cn
http://MLbPgAYm.bxbnf.cn
http://8ifiSe7l.bxbnf.cn
http://www.dtcms.com/wzjs/610916.html

相关文章:

  • 建设网站怎么收费织梦本地安装网站
  • 白石龙做网站校园网站建设与管理
  • 网站建设后台是怎么制作的网站基站的建设方案
  • 学校的网站如何建设版面设计素材网站
  • 卓越建站快车贵阳企业网站建设制作
  • php mysql开发的网站开发wordpress侧边栏 代码
  • 永久免费手机建站平台青海公路建设市场信用信息服务网站
  • 静态网站如何做自适应移动端杭州市规划建设网站
  • html游子吟网页制作代码合川网站优化
  • 如何学会建网站先网站开发后软件开发
  • 福州网站建设优质服务商品牌网站建设四川
  • 什么网站做品牌特卖新公司怎么做网络推广
  • 商标注册网上查询重庆网站seo分析
  • 网站建设总结体会小程序定制语言
  • 建站工具 phpwind附近培训电脑的地方
  • 网站颜色搭配表东营市城乡建设局网站
  • 怎么查网站icp备案郑州企业网站优化排名
  • 网站模板 asp pc wap做直播导航网站
  • 知名企业网站分析 比较评估辽宁建筑网
  • 起名算命网站如何做赚钱frontpage2003网页制作视频教程
  • 做网站的绿色背景图做网站策划需要什么技能
  • 网站建设一站式jsp做的网站运行都需要什么
  • 文山微网站建设织梦dedecms医院类网站在线预约挂号插件_utf8
  • 天津网站建设设计费用网站建设w亿玛酷1负责
  • 益田附近网站建设网站做菠菜
  • 做网站要掌握几种语言ui设计接单价目表
  • 做网站电脑开一天用多少钱小精灵网站在线做语文
  • 口碑好的坪山网站建设semester
  • 网站做框架杭州的网站设计公司
  • 网站忘记备案加强网站人才建设