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

ps做图软件怎么下载网站今日最新国际新闻头条

ps做图软件怎么下载网站,今日最新国际新闻头条,专业做羽绒服的服装网站,快速做网站公司哪家专业文章目录 前言源码解析1. 接收schema变更事件2. 发起schema变更请求3. schema变更请求具体处理4. 广播刷新事件并阻塞5. 处理FlushEvent6. 修改sink端schema 结尾 前言 上一篇Flink cdc3.0同步实例 介绍了最新的一些功能和问题,本篇来看下新功能之一的动态变更表结…

文章目录

  • 前言
  • 源码解析
    • 1. 接收schema变更事件
    • 2. 发起schema变更请求
    • 3. schema变更请求具体处理
    • 4. 广播刷新事件并阻塞
    • 5. 处理FlushEvent
    • 6. 修改sink端schema
  • 结尾

前言

上一篇Flink cdc3.0同步实例 介绍了最新的一些功能和问题,本篇来看下新功能之一的动态变更表结构的具体实现。
在 Flink 中,应用程序由流数据流组成,这些数据流是由用户定义的Operators进行转换。
在这里插入图片描述
Flink CDC 3.0 框架中流动的数据类型被称为Event,代表外部系统产生的变更事件。每个事件都标有发生更改的表 ID 。事件分为SchemaChangeEventDataChangeEvent,分别代表表结构和数据的变化。处理schema变更的Operators对应图中的SchemaOperator
在这里插入图片描述
(以下代码使用Flink Release 3.0.0)

源码解析

1. 接收schema变更事件

我们以添加字段触发的AddColumnEvent为例,它实现了SchemaChangeEventSchemaOperator 当接收到有AddColumnEvent 事件时,会在processElement 中调用handleSchemaChangeEvent处理。
在这里插入图片描述

2. 发起schema变更请求

说明下这里的response实际是直接返回的new SchemaChangeResponse(true), 由于构造的shouldSendFlushEvent 直接传入true, 所以后续也会进入if条件。我们接着requestSchemaChange 方法看
在这里插入图片描述
由于知道response是直接创建的已知结果,因此responseFuture.get() 也不会阻塞。我们接着来看toCoordinator.sendRequestToCoordinator(getOperatorID(), new SerializedValue<>(request));的实现
在这里插入图片描述

3. schema变更请求具体处理

通过几层的调用,上述变更请求会走到 SchemaRegistryhandleCoordinationRequest(CoordinationRequest request),我们的请求是SchemaChangeRequest,所以会调用requestHandler.handleSchemaChangeRequest(schemaChangeRequest);
在这里插入图片描述
这里可以看到response 是直接创建的SchemaChangeResponse(true)。 接着schemaManager.applySchemaChange(request.getSchemaChangeEvent());注册新的schema。

在这里插入图片描述
另外还有个重点,在startToWaitForReleaseRequest方法中会重置responseFuture, 原本的response通过return返回了。而PendingSchemaChange中的response重置,主要就是为了等schema变更完成设计。(主线程会再次发起请求调用responseFuture.get() ,忽略这里会不理解后面为什么会阻塞)
在这里插入图片描述

4. 广播刷新事件并阻塞

回到第二部分,因为response是一个明确对象没有阻塞,返回后会直接广播FlushEventschemaChangeEvent(再次发起schemaChangeEvent不是很理解)。之后requestReleaseUpstream 请求调用responseFuture.get()会阻塞,因为response在第三步已经重置为new CompletableFuture<>(), 利用的1.8的特性。这也是收到变更事件后要保证sink端变更才能发放数据。
在这里插入图片描述

5. 处理FlushEvent

FlushEvent 由什么Operator处理,在官方架构图中其实没有指出,但是图标可以看出是通过sink端完成,我们可以找到DataSinkWriterOperator类,有对FlushEvent的处理。
在这里插入图片描述
实际调用SchemaRegistry::handleEventFromOperator方法,重点在requestHandler.flushSuccess(flushSuccessEvent.getTableId(), flushSuccessEvent.getSubtask());
在这里插入图片描述
其中applySchemaChange 就是在具体的sink端变更,下面会展开。 当变更完成后会执行waitFlushSuccess.getResponseFuture().complete(wrap(new ReleaseUpstreamResponse()));,实际就通知第4部分的response这里处理完了,可以正常放开数据流。
在这里插入图片描述

6. 修改sink端schema

每个sink端有自定义的metadataApplier
在这里插入图片描述
我们以DorisMetadataApplier为例,applyAddColumnEvent 会构造addFieldSchema,然后在schemaChangeManager 中转换为对应的sql执行。
在这里插入图片描述

结尾

以上就是这两天对源码跟进的记录,后续思考使用local环境Debug中间过程。
flink cdc debug动态表结构变更

http://www.ds6.com.cn/news/112234.html

相关文章:

  • 网站不设置关键词描述足球队世界排名榜
  • 海外推广渠道都有哪些优化大师是什么意思
  • 网站推广实践内容百家号seo怎么做
  • 好用的wordpress app搜索引擎优化的内容有哪些
  • 琼海网站制作软件开发公司经营范围
  • 网站建设需要什么格式的图片免费建站哪个比较好
  • 新手学做网站从哪里开始在线seo短视频
  • 网站动态页面怎么做深圳搜索seo优化排名
  • 贵阳网站建设怎么样网站百度收录批量查询
  • 网站建设公司发展seo公司seo教程
  • 云服务器怎么搭建网站今日新闻十大头条内容
  • 网站用什么建设公众号排名优化软件
  • 衢州 网站建设百姓网
  • 杭州做网站的公司排行注册网站域名
  • 上海网站建设基础教育机构排名
  • 哪个网站做律师推广网络营销考试题目及答案2022
  • 上海做网站那家好营销网店推广的软文
  • 网站建设公司公司好seo的中文意思是什么
  • 做ui的网站有哪些网络营销公司注册找哪家
  • 绥化网站开发公司谷歌关键词查询工具
  • 隐藏网站源代码网游推广
  • 怎么用手机网站做软件好网站自然排名优化
  • 浦东建设网站制作佛山网站优化软件
  • 扁平化设计风格的网站模板腾讯会议开始收费
  • 免费制作ppt软件深圳seo网络优化公司
  • 做网站选什么专业宁波关键词优化企业网站建设
  • 有没有哪个网站怎么做动漫新闻的百度账号登录官网
  • 科普网站建设经验常州seo外包公司
  • 营销型网站结构网页设计图
  • 邢台城乡建设局网站北京网络优化