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

关于网站设计pc网站开发微信支付

关于网站设计,pc网站开发微信支付,如何说服别人做网站,济南网页制作公司文章目录 前言源码解析1. 接收schema变更事件2. 发起schema变更请求3. schema变更请求具体处理4. 广播刷新事件并阻塞5. 处理FlushEvent6. 修改sink端schema 结尾 前言 上一篇Flink cdc3.0同步实例 介绍了最新的一些功能和问题#xff0c;本篇来看下新功能之一的动态变更表结… 文章目录 前言源码解析1. 接收schema变更事件2. 发起schema变更请求3. schema变更请求具体处理4. 广播刷新事件并阻塞5. 处理FlushEvent6. 修改sink端schema 结尾 前言 上一篇Flink cdc3.0同步实例 介绍了最新的一些功能和问题本篇来看下新功能之一的动态变更表结构的具体实现。 在 Flink 中应用程序由流数据流组成这些数据流是由用户定义的Operators进行转换。 Flink CDC 3.0 框架中流动的数据类型被称为Event代表外部系统产生的变更事件。每个事件都标有发生更改的表 ID 。事件分为SchemaChangeEvent和DataChangeEvent分别代表表结构和数据的变化。处理schema变更的Operators对应图中的SchemaOperator。 以下代码使用Flink Release 3.0.0 源码解析 1. 接收schema变更事件 我们以添加字段触发的AddColumnEvent为例它实现了SchemaChangeEvent。 SchemaOperator 当接收到有AddColumnEvent 事件时会在processElement 中调用handleSchemaChangeEvent处理。 2. 发起schema变更请求 说明下这里的response实际是直接返回的new SchemaChangeResponse(true) 由于构造的shouldSendFlushEvent 直接传入true 所以后续也会进入if条件。我们接着requestSchemaChange 方法看 由于知道response是直接创建的已知结果因此responseFuture.get() 也不会阻塞。我们接着来看toCoordinator.sendRequestToCoordinator(getOperatorID(), new SerializedValue(request));的实现 3. schema变更请求具体处理 通过几层的调用上述变更请求会走到 SchemaRegistry 的handleCoordinationRequest(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是一个明确对象没有阻塞返回后会直接广播FlushEvent 和 schemaChangeEvent再次发起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.hkea.cn/news/14373125/

相关文章:

  • 如何选择网站项目营销型网站更受用户欢迎的原因是
  • 网站SEO基础代做烟台网站建设精通臻动传媒
  • 邢台网站建设开发关键词检测工具
  • 行业网站设计开发费用网站注册备案之后怎么做网站
  • 网站开发维护干嘛做网站的需求调研
  • 网站建设公司问答营销案例石家庄网站空间
  • 丽水建设局网站文件网站建设 东方网景
  • seo教程技术整站优化自己做的网站如何用手机去查看
  • 大望路网站建设公司近期的重大新闻
  • php网站开发环境说明注册公司流程和资料
  • 校园网站开发的意义网站规划与建设
  • 做甜品台的网站公司在网站做广告怎么做分录
  • 枣庄网站建设济南专业的设计网站
  • 做网站需要写配置文件吗想搞网站建设
  • 源码做微信电影网站济南做网站多钱
  • 网站服务公司人工成本进什么费用大数据查询官网
  • 深圳网站设计电话网站后台更新了 前台不现实
  • 使用本地主机做网站宁波无痛人流医院哪家好
  • 淄博建站哪家好企业网站模板价格
  • 手机网站 设计趋势凡科建设网站安全吗
  • 特效素材免费网站网络营销的八大能力
  • 宣传型网站功能定位住房和建设建设局网站
  • 虚拟主机可以做视频视频网站吗教做世界美食的网站
  • 建网站 必须学html吗网站内容建设方法步骤
  • 做网络推广要做网站吗wordpress标签静态
  • 翻译网站模板云南网站建设招商
  • 绍兴seo网站优化海棠网站
  • 南阳阿里巴巴网站推广从网站下载壁纸做海报涉及
  • 如何自己学做网站西安网站建设案例
  • 个人网站logo设计做网站能申报只是产权么