Dataphin实时计算:实时代码模板实现多链路容灾

本文涉及的产品
智能数据建设与治理Dataphin,200数据处理单元
简介: 实时计算场景由于其需要24小时不间断的运行,对于任务的稳定性、时效性要求异常的高。在通常情况下,为了保证结果能够高准确、低延迟地产出,生产环境中需要双链路甚至三链路来实现主备的容灾处理。那么对于相同的一套指标,我们需要维护的代码就会根据链路数量成倍往上翻。特别是在变更的时候,人工操作有可能会带来很多的不一致。考虑到主备任务处理逻辑需要保持强一致性,差异仅仅在于输入流/表以及输出流/表,dataphin针对这种场景设计了专门的处理方案,引入了模版和模版任务的概念,可以高效的解决上述问题。

为了让大家更好的理解Dataphin实时计算的功能,这里向大家介绍一个主备链路相关的Case:

实时计算场景由于其需要24小时不间断的运行,对于任务的稳定性、时效性要求异常的高。在通常情况下,为了保证结果能够高准确、低延迟地产出,生产环境中需要双链路甚至三链路来实现主备的容灾处理。那么对于相同的一套指标,我们需要维护的代码就会根据链路数量成倍往上翻。特别是在变更的时候,人工操作有可能会带来很多的不一致。

考虑到主备任务处理逻辑需要保持强一致性,差异仅仅在于输入流/表以及输出流/表,dataphin针对这种场景设计了专门的处理方案,引入了模版和模版任务的概念,其与具体的SQL任务关系如下:
image.png
TIPS:(概念简介)

实时SQL为具体执行SQL代码,该代码由模版任务+模版参数信息+任务参数信息+任务配置信息一起实例化得到,其中任务配置信息为任务的资源配置、队列信息、版本信息等,任务参数信息为Flink的任务粒度配置参数,而模版参数信息则是自动提取的模版任务中的参数信息,该参数会替换模版任务中的各项待替换项。
模版为代码的高级抽象,在dataphin中视为了一类资源,可以由模版任务引用。
模版任务为一种任务类型,该类型任务必须依赖于某一个模版,并且在预编译阶段进行实例化,生成最终可执行sql。
废话不多说,直接上干货。

1) 针对一个处理逻辑,需要同时部署主备两链路,两者具体逻辑一致,差异点在于数据来源的TT topic以及数据存储的alihbase集群以及tableName(其中alihabse集群信息已经通过实时元表实现了对用户透明),那么我们就可以抽象一个nanhua_test的模版,其中设置两类参数output_table和input_table。
image.png
2)新建模版任务nanhua_test_template_sql,引用nanhua_test版本为1的模版
image.png
3)自定义模版参数、任务参数、任务配置信息,输入各自链路对应的参数值,比如图中的源表名和目标表名,即可生成对应链路的实时任务。
image.png
4)当需要对模版的执行逻辑进行变更时,可以在模版中进行修改,直接应用到选定的引用的模版任务中。这样,对于多个主备任务,我们只需要维护一个模版就可以了,大大节省了开发成本和维护成本,再也不用担心主备任务的口径不一致了。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
16小时前
|
Java 开发工具 流计算
flink最新master代码编译出现Java Runtime Environment 问题
在尝试编译Flink源码时遇到Java运行时环境致命错误:EXCEPTION_ACCESS_VIOLATION。问题出现在JVM.dll+0x88212。使用的是Java 11.0.28和Java HotSpot(TM) 64-Bit Server VM。系统为Windows客户端,没有生成核心dump文件。错误日志保存在hs_err_pid39364.log和replay_pid39364.log。要解决这个问题,建议检查JDK版本兼容性,更新JDK或参照错误报告文件提交Bug至http://bugreport.java.com/bugreport/crash.jsp。
|
17小时前
|
SQL Java 流计算
Flink CDC在代码里面集成cdc的时候,是不是也要用上面这个胖包flink-sql-connector-mysql-cdc,不要去用瘦包flink-connector-mysql-cdc? com.ververica flink-sql-connector-mysql-cdc 2.4.0
Flink CDC在代码里面集成cdc的时候,是不是也要用上面这个胖包flink-sql-connector-mysql-cdc,不要去用瘦包flink-connector-mysql-cdc? com.ververica flink-sql-connector-mysql-cdc 2.4.0
52 1
|
17小时前
|
存储 数据采集 安全
瓴羊Dataphin数据安全能力再升级,内置分类分级模板、上线隐私计算模块
瓴羊Dataphin数据安全能力再升级,内置分类分级模板、上线隐私计算模块
106 0
|
16小时前
|
SQL 消息中间件 Java
Flink问题之从SavePoint启动任务修改的代码不生效
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
332 2
|
16小时前
|
SQL 监控 Java
Flink报错问题之cdc代码报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
16小时前
|
Java 关系型数据库 MySQL
Flink CDC编译问题之官方样例代码报错如何解决
Flink CDC编译指的是将Flink CDC源代码转换成可执行程序的过程,可能会涉及到依赖管理和环境配置等问题;本合集将介绍Flink CDC编译的步骤、常见错误及其解决办法,以确保顺利完成编译过程。
|
16小时前
|
SQL Java 关系型数据库
Flink SQL 问题之用代码执行报错如何解决
Flink SQL报错通常指在使用Apache Flink的SQL接口执行数据处理任务时遇到的问题;本合集将收集常见的Flink SQL报错情况及其解决方法,帮助用户迅速恢复数据处理流程。
169 6
|
16小时前
|
SQL Kubernetes 调度
DataphinV3.14 Flink SQL任务支持基于Session集群调试,模拟生产代码逻辑的调试效果
实时研发一直以来的都是通过local-debug的方式来调试开发中的Flink SQL任务,该方式有如下不足: 1. 支持的采样数据有限,且非是流式数据的调试。 2. 手动上传构造数据的方式较为繁琐,局限性较大。 为便于Flink SQL任务的调试,DataphinV3.14版本支持Flink SQL任务基于Session集群调试,期望做到像离线即席查询般方便地获取实时任务的输出结果,方便用户对线上的真实数据进行代码逻辑上的调试。
|
17小时前
|
流计算
Dataphin V3.13 支持实时计算任务列表,快速批量操作
在一些场景中,常常需要支持通过筛选指定条件快速定位目标实时任务并进行批量操作,如:为了保证大促期间实时指标及时准确产出,在大促前需要找出一批相关的实时任务进行资源配置的调整,更高效利用可用计算资源,实现资源的动态分配和优化;当系统需要紧急响应某些情况(如故障恢复、资源冲突等)时,批量操作使得快速下线、替换或重启一组任务。 Dataphin V3.13版本中,新增实时计算任务列表,支持快速筛选任务和批量操作任务的功能,可以帮助更加高效地处理大量计算任务。
|
SQL 数据采集 分布式计算
Dataphin功能大图(三)研发:设计即研发,规范建模保障数据模型与代码的一致性
在《Dataphin核心功能: 规划功能》一文中, 讲到过Dataphin的OneModel方法论将数据建设分为四层, 分别为主题域模型(建模), 概念模型, 逻辑模型和分析模型。本文将继续展开逻辑模型和分析模型的讲解。
Dataphin功能大图(三)研发:设计即研发,规范建模保障数据模型与代码的一致性