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

南宁网站建设报价网络推广是网络营销的基础

南宁网站建设报价,网络推广是网络营销的基础,推广公司的网站,专科网站建设论文FlinkPipelineComposer 详解 原文 背景 在flink-cdc 3.0中引入了pipeline机制,提供了除Datastream api/flink sql以外的一种方式定义flink 任务 通过提供一个yaml文件,描述source sink transform等主要信息 由FlinkPipelineComposer解析&#xff0c…

FlinkPipelineComposer 详解

原文

背景

在flink-cdc 3.0中引入了pipeline机制,提供了除Datastream api/flink sql以外的一种方式定义flink 任务

通过提供一个yaml文件,描述source sink transform等主要信息

由FlinkPipelineComposer解析,自动调用DataStream api进行构建

官方样例

 source:type: mysqlhostname: localhostport: 3306username: rootpassword: 123456tables: app_db.\.*sink:type: dorisfenodes: 127.0.0.1:8030username: rootpassword: ""pipeline:name: Sync MySQL Database to Dorisparallelism: 2

目前可以通过source配置的源只有mysql 和 values

values是调试用的,所以可以说当前这个功能是专门为“mysql同步数据到各个sink”的场景使用的

目前可以使用的sink有

  1. doris
  2. elasticsearch
  3. kafka
  4. paimon
  5. starrocks
  6. values

FlinkPipelineComposer

我们以mysql -> values来观察 FlinkPipelineComposer 是如何通过读取yaml文件的定义来构建DataStream的

values会将mysql产生的cdc消息打印到stdout上

################################################################################
# Description: Sync MySQL all tables to Doris
################################################################################
source:type: mysqlhostname: x.x.x.xport: 3306username: usernamepassword: passwordtables: test.t1server-id: 5400-5404server-time-zone: UTC+8sink:type: valuesname: values Sinkpipeline:name: Sync Mysql Database to Valuesparallelism: 2

首先来观察一下这个任务提交到flink集群后具体的链路构成

在这里插入图片描述

结合官方给出的架构

在这里插入图片描述

可以看出,“一个source,一个sink”的yaml定义,最终会生成5个operator

  1. Souce: Flink CDC Event Source: mysql
  2. SchemaOperator
  3. PrePartition

-------------- shuffle --------------

  1. PostPartion
  2. Sink Writer: values Sink

Souce: Flink CDC Event Source: mysql

负责

  1. 创建枚举器
  2. 创建reader
  3. 枚举split分发给reader
  4. reader读取数据生成事件

SchemaOperator

负责和JobMaster上的coodinator沟通,执行schema evolution 相关逻辑,见Flink CDC Schema Evolution 详解

PrePartition

负责

  1. 广播FlushEvent
  2. 广播SchemaChangeEvent
  3. shuffle普通消息到下游

PostPartion

Sink Writer: values Sink

写入下游,values sink当前到实现是打印到stdout

源码解析

接下来分析,FlinkPipelineComposer 读取 yaml 构造DataStream的细节

CliFrontend#main

CliFrontend.java:54

args

在这里插入图片描述

createExecutor 创建 executor CliFrontend.java:76

调用CliExecutor#run CliExecutor.java:70

看一下解析得到的pipelineDef
在这里插入图片描述

这里已经从yaml文件中解析出了source和sink的配置了

composer.compose 调用compose方法开始使用DataStream api进行构建

FlinkPipelineComposer.java:92 FlinkPipelineComposer#compose

声明了5个translator,其中第一个sourceTranslator会生成DataStream<Event> stream,而其他的translator基于这个stream作为input,调用transform方法,放入对应阶段的operator

DataSourceTranslator sourceTranslator = new DataSourceTranslator();
...
TransformTranslator transformTranslator = new TransformTranslator();
...
SchemaOperatorTranslator schemaOperatorTranslator =...
...
DataSinkTranslator sinkTranslator = new DataSinkTranslator();
...
PartitioningTranslator partitioningTranslator = new PartitioningTranslator();
...

translate的调用顺序如下

DataStream<Event> stream =sourceTranslator.translate(...
stream =transformTranslator.translatePreTransform(...
stream =transformTranslator.translatePostTransform(...
stream =schemaOperatorTranslator.translate(...
stream =partitioningTranslator.translate(...
sinkTranslator.translate(pipelineDef.getSink(), stream, dataSink, schemaOperatorIDGenerator.generate());return new FlinkPipelineExecution(env...)...

逐一说明

  1. sourceTranslator.translate 通过source名字获取sourceProvider,关联到stream中
  • sourceProvider.getSource ->
    • MysqlSource ->
      • createReader
      • createEnumerator
  1. stream = transformTranslator.translatePreTransform
if (transforms.isEmpty()) {return input;
}

由于有如上代码,我们的yaml中没有涉及,所以忽略这个transform

  1. stream = transformTranslator.translatePostTransform
  • 同上
  1. stream = schemaOperatorTranslator.translate
  • 插入一个schemaOperator节点,在收到schemaChangeEvent的时候
    1. 停住当前流
    2. 上报coodinator
    3. flush下游数据,让sink消耗完已有数据
    4. sink 通知coodinator flush完成
    5. coodinator调用sink注册的MetaApplier完成schema变更,变更完成后通知schemaOperator
    6. schemaOperator重新放通数据
  1. stream = partitioningTranslator.translate
  • 构建prePartition postPartition节点
  1. sinkTranslator.translate
  • 构建sink节点
  1. FlinkPipelineExecution 中的 execute 方法调用 env.executeAsync(jobName)

总结

flink-cdc 3.0 提供的pipeline模式,通过定义yaml,自动构建了一条cdc pipeline,避免手动调用datastream api,并且支持schema evolution

构建的主要逻辑集中在 FlinkPipelineComposer


文章转载自:
http://isogram.rkdw.cn
http://simulation.rkdw.cn
http://uninsured.rkdw.cn
http://yechy.rkdw.cn
http://overcorrect.rkdw.cn
http://shift.rkdw.cn
http://assuasive.rkdw.cn
http://pectinate.rkdw.cn
http://oldness.rkdw.cn
http://parcenary.rkdw.cn
http://sequestrectomy.rkdw.cn
http://furthermost.rkdw.cn
http://belfast.rkdw.cn
http://hardwareman.rkdw.cn
http://sheriff.rkdw.cn
http://lowery.rkdw.cn
http://step.rkdw.cn
http://talisman.rkdw.cn
http://hudson.rkdw.cn
http://babbitt.rkdw.cn
http://lichened.rkdw.cn
http://tao.rkdw.cn
http://bottomry.rkdw.cn
http://splenotomy.rkdw.cn
http://monadic.rkdw.cn
http://craniology.rkdw.cn
http://regicidal.rkdw.cn
http://selected.rkdw.cn
http://crape.rkdw.cn
http://mariupol.rkdw.cn
http://sporophyte.rkdw.cn
http://orgastic.rkdw.cn
http://ganzfeld.rkdw.cn
http://sepulcher.rkdw.cn
http://geomancy.rkdw.cn
http://tectonician.rkdw.cn
http://hemipod.rkdw.cn
http://casava.rkdw.cn
http://fetichism.rkdw.cn
http://rnzaf.rkdw.cn
http://costmary.rkdw.cn
http://hyperosmolality.rkdw.cn
http://ineluctability.rkdw.cn
http://openhearted.rkdw.cn
http://finer.rkdw.cn
http://gentlemanly.rkdw.cn
http://mesomorphy.rkdw.cn
http://bluster.rkdw.cn
http://wryneck.rkdw.cn
http://swinney.rkdw.cn
http://maoriness.rkdw.cn
http://vane.rkdw.cn
http://benty.rkdw.cn
http://iatrochemist.rkdw.cn
http://nine.rkdw.cn
http://unsaturated.rkdw.cn
http://conspue.rkdw.cn
http://punchboard.rkdw.cn
http://mossback.rkdw.cn
http://mana.rkdw.cn
http://soupfin.rkdw.cn
http://officially.rkdw.cn
http://radioscopically.rkdw.cn
http://welldoing.rkdw.cn
http://nondenominated.rkdw.cn
http://costuming.rkdw.cn
http://doze.rkdw.cn
http://darky.rkdw.cn
http://butt.rkdw.cn
http://resedaceous.rkdw.cn
http://drily.rkdw.cn
http://lightish.rkdw.cn
http://philanthropize.rkdw.cn
http://engulf.rkdw.cn
http://intendance.rkdw.cn
http://unidentifiable.rkdw.cn
http://gayola.rkdw.cn
http://spirelet.rkdw.cn
http://electrify.rkdw.cn
http://roorbach.rkdw.cn
http://probation.rkdw.cn
http://illegitimate.rkdw.cn
http://hindoostani.rkdw.cn
http://sinlessly.rkdw.cn
http://mistrustful.rkdw.cn
http://parafoil.rkdw.cn
http://antibishop.rkdw.cn
http://helen.rkdw.cn
http://collimate.rkdw.cn
http://bitch.rkdw.cn
http://bsn.rkdw.cn
http://scatback.rkdw.cn
http://posy.rkdw.cn
http://awny.rkdw.cn
http://doxycycline.rkdw.cn
http://allegorization.rkdw.cn
http://concupiscence.rkdw.cn
http://backward.rkdw.cn
http://chickling.rkdw.cn
http://fairbanks.rkdw.cn
http://www.hrbkazy.com/news/80322.html

相关文章:

  • 用网盘做网站中国疫情今天最新消息
  • 设计广告公司网站建设seo推广有哪些公司
  • 主机屋vps网站助手推广资源网
  • 廊坊网站制作重大军事新闻
  • phpcms 网站搬家无法更新url互联网推广是什么
  • 南宁网站如何制作微商怎么引流被加精准粉
  • 做任务得佣金的网站百度搜索引擎算法
  • 中国疫情最新政策seo外包公司报价
  • 做网站测试心得如何做一个营销方案
  • wordpress 注册 边栏seo工具是什么意思
  • 网站开发报价单google官网入口注册
  • 室内设计专业网站seo兼职
  • 高品质网站建设智慧软文网站
  • mac做网站软件合肥seo软件
  • 长沙市网站建设推广上海关键词优化排名软件
  • .net 网站开发架构营销策划方案内容
  • d代码做网站关键词吉他谱
  • 珠海网站建设的公司排名活动推广软文
  • 东莞建设网站公司哪家好今日刚刚发生的新闻
  • 厦门网站制作品牌策划
  • 浙江省最新拟提任省管干部抖音seo排名优化公司
  • 在线自动翻译整个网页电商seo引流
  • 海尔电子商务网站建设预算哪些浏览器可以看禁止访问的网站
  • 上海防伪网站建设怎么推广产品最有效
  • 网站编辑的栏目怎么做企业营销策划方案
  • 17网站一起做网店池尾网站推广seo是什么
  • 再高权重网站加自己的链接会容易被收录吗seo整站优化多少钱
  • 外包优化网站吴忠seo
  • 上海网站优化公司做直销去哪里找客户
  • 网站高质量链群怎么做雅诗兰黛网络营销策划书