本文为您介绍2022年9月19日发布的实时计算Flink版的重大功能变更和主要缺陷修复。
概述
2022年9月19日正式对外发布实时计算Flink版的新版本,包含平台和引擎的更新、连接器的更新、性能优化以及缺陷修复。本次发布的是基于Flink 1.13的VVR-4.0.15版本,以及基于Flink 1.15的VVR-6.0.2版本。详情如下:
引擎侧将正式对外发布VVR 6.0.2版本,该版本是基于Apache Flink 1.15的企业级Flink引擎的第一次发布。Apache Flink 1.15中类似Window table-valued函数增强、CAST和类型系统增强、JSON函数增强等重要功能与性能优化都将在云上得以充分体现。
状态管理一直是用户关心的一个重点。在本次发布中,我们将系统检查点(社区Checkpoint)和作业快照(社区Savepoint)作为状态集进行统一管理。具体来说,在该版本中作业快照的生成速度、快照大小、恢复速度都有显著提升,成功率和稳定性也大幅提升。
与此同时,我们废弃了原来在作业停止时删除快照的设定,而是明确区分系统检查点和作业快照,并支持用户显式地进行作业快照的生成和管理。除了易用性的提升,在新版本中Gemini状态存储引擎的优化提升也带来了成本的显著节省。通过状态集管理,每年可以节省的OSS存储费用约为15%-40%。另外,在平台上支持了快照作业间启动复用,更便捷地支持用户进行A/B Test等双跑类场景。
在资源利用效率提升上,业务上一般存在稳定的时间段会产生数据的波峰波谷,我们在资源调优上支持定时调优的策略,可以帮助您在特定时间将作业的资源调整为您预设的资源,降低人力成本的投入。
在作业运行连续性上,我们引入了作业在失败切换时的快速恢复能力。帮助用户在对数据重复或者丢失相对容忍的同时对作业业务连续性有高要求的场景下,进行失败任务的快速恢复。作业失败切换导致的延迟由分钟级最大可降低到毫秒级。
警告在本期中该功能并不保证数据的丢失和重复。在使用前,请确保您的业务容忍结果数据出现丢失和重复。该配置默认不开启,需在作业中额外添加配置项,更多原理和配置详情请参见Task快速重启配置。
在作业运行诊断上,通过引入健康分的概念对作业启动到运行全状态的分析给出诊断项和意见,协助您运维流作业。
在被集成能力上,平台侧支持全新的OpenAPI来支持用户集成自己的业务。
实时风控一直是Flink的主要应用场景之一,针对连续的时间行为序列的复杂时间处理(CEP)相关的新特性,在之前的版本中为白名单客户提供预览版功能,并顺利在生产业务上通过验证。
在本次发布中将面向全部用户发布CEP一系列的增强能力。首先,CEP规则的热更新能力一直是用户呼声最高的功能,其可以在业务高峰期更及时地主动介入更新规则,并彻底解决由于任务重新发布导致的十分钟级风控业务断流问题,从而极大提高业务可用性;其次是CEP SQL语法的增强,本次发布通过引入新的SQL扩展语法来增强CEP SQL的表达能力。受益于该增强能力,您可以将较复杂的DataStream作业简化为SQL作业,提升开发效率的同时可以更轻松地整合进数据治理的血缘系统中。最后本次发布还引入了若干CEP Metrics,可以观察到CEP规则的匹配详细指标。
其他的优化包含在性能优化上,我们将对Flink SQL中双流Join算子支持自动推导开启KV分离优化,可以显著提升双流Join类型作业的性能,无需用户额外配置。同时我们对Hive Catalog支持的Hive版本范围也做了扩展,支持了2.1.0~2.3.9,3.1.0~3.1.3的版本;连接器方面我们支持读取阿里云表格存储OTS服务和JDBC源表、维表及结果表的连接器。
新特性
特性 | 详情 | 文档 |
状态集管理 | 状态集管理针对所有有状态的Flink作业,将状态的管理和作业的启停解绑,即作业停止时不再删除作业快照,通过独立的管理页面,用户可以完成快照的定时创建和删除。 | |
定时调优 | 定时调优功能针对业务上有明显波峰波谷的Flink作业,对于这类作业我们支持用户在平台设置好自定义的定时策略,在用户需要的时间将作业自动调整到用户预先设定好大小的资源上,来应对业务上的峰谷,避免重复人力的浪费。 | |
作业健康分 | 作业健康分针对在启动中和运行中的作业,利用丰富的专家规则检测用户作业的问题并给出指导性的意见,该功能将协助客户更好的感知作业状态,调整作业参数。 | |
成员授权优化 | 优化授权体验,支持授权时自动列出所有子账号来进行选择,不需要手动填写。 | |
支持动态复杂事件处理(CEP) | CEP是对实时数据流进行模式匹配的一种能力。本次发布的是在开源Flink CEP的能力基础上,支持了将作业规则外置于数据库使得其可以被动态加载生效的能力,接口为Datastream API。 | |
静态CEP SQL增强 | MATCH_RECOGNIZE语句允许用户使用SQL来描述CEP规则。本次发布的是在开源Flink的MATCH_RECOGNIZE语句基础上,提供了很多能力增强,例如支持输出超时匹配事件、支持notFollowedBy等。 除此之外,还引入了新的Metrics,详情如下:
| |
提供作业失败切换时的快速恢复能力 | 启动快速重启后,当某个Task发生异常时,可以只重启失败的任务,减少作业失败切换对作业的影响。 警告 此功能为实验性功能,在使用前,请确保您的业务容忍结果数据出现丢失和重复。 | |
整库同步支持将数据同步至云Kafka | 使用此功能,数据会同步写入到对应的一张Upsert Kafka表中。用户可以直接使用Kafka中的表代替MySQL表,降低多个任务对于MySQL服务造成的压力。 | |
Hologres结果表DDL定义分区表 | 创建对应Hologres结果表时可以通过PARTITION BY定义分区表。 | |
Hologres维表支持异步请求的超时时间设置 | 通过设置异步请求的超时时间asyncTimeoutMs,确保应用程序能够在一定的时长内完成数据请求。 | |
Hologres Catalog支持创建表时进行表属性设置 | 合理的表属性设置可以有助于系统高效地组织和查询数据,在使用Hologres Catalog创建表时,支持用户在WITH参数中设置物理表属性。 | |
MaxCompute Sink连接器支持Binary类型 |
| |
Hive Catalog支持更多Hive版本 | 本版本支持2.1.0~2.3.9、3.1.0~3.1.3的版本。 | |
表格存储OTS Source连接器发布 | 支持读取OTS的增量Log。 | |
JDBC连接器发布 | 内置社区JDBC连接器。 | |
RocketMQ源表支持并发数大于Topic分区数 | 该模式可以让用户在消费前可以为可能的Topic分区数增加预留资源。 | |
RocketMQ结果表支持Message Key的设置 | 写入RocketMQ支持设置Message的Key信息。 | |
支持阿里云AnalyticDB for MySQL Catalog | 通过此Catalog,您可以直接读取AnalyticDB for MySQL元数据,不用再手动注册云原生数据仓库 AnalyticDB MySQL 版(AnalyticDB for MySQL)表,以提高作业开发的效率且保证数据的正确性。 |
性能优化
引入作业原生快照格式,大幅优化原来标准格式作业快照在大状态下容易超时的问题,整体作业稳定性得到显著提升。详情如下表所示。
类别
优势
作业快照完成时间
平均提升5~10倍,提升比例随增量状态的减小而增大,典型作业甚至可以达到100倍。
作业恢复时间
平均提升5倍左右,提升比例随状态大小的增大而增大。
作业快照空间开销
平均节省2倍的空间消耗,节省比例随状态大小的增大而增大。
作业快照网络开销
平均节省5~10倍的网络开销,节省比例随增量状态的减小而增大。
双流Join算子支持自动推导开启KV分离优化。SQL作业双流Join算子会根据作业特点,自动推导并开启State KV分离优化功能,优化双流Join性能。在典型场景的性能测试中,性能平均提升40%以上。详情请参见高性能Flink SQL优化技巧和企业级状态后端存储配置。
优化作业启动速度,平均作业启动速度提升15%。
缺陷修复
修复作业修改时间异常更新的问题。
修复部分作业暂停重启后State无法判断的问题。
修复金融云无法本地上传JAR的问题。
修复作业运行总资源和页面统计不一致的问题。
修复作业探查日志分页跳转失败的问题。
修复直接读取Kafka Catalog返回upsert kafka table报错的问题。
修复在多个UDF嵌套运算时,使用中间结果出现NullPointerException报错的问题。
修复mysql-cdc chunk分片异常、OOM、初始化数据和增量数据时区不一致的问题。详情请参见MySQL的CDC源表。