2016 年, Flink 产品开始用于阿里巴巴集团内部大屏等业务场景。最初Flink产品称为Blink,阿里对其进行了改造后,在阿里云上推出了 Flink 全托管产品,将Blink功能合并到Flink里。
当前阿里云上主要售卖的产品为 Flink 版,完全兼容开源,且好多功能优于开源版本。
阿里云实时计算产品推出了很多企业级能力,为不同企业和场景提供了更丰富的能力,比如开发、运维。阿里云在企业级能力上实现了丰富的功能,包括上下游connector、作业自动调优、场景化解决方案、自动智能诊断以及全面告警和监控。
同时,以上能力均可被继承。如果企业有自己实时计算平台/大数据平台,可以将上述产品集成至自有平台。
2022年 9 月,阿里云将发布很多关键特性。
① 作业状态集管理。Flink是实时流计算作业,状态是作业的关键。此前往往将状态与作业的操作进行绑定。而新版本会将作业状态和其他操作解耦,由独立页面进行状态管理。可以通过一些定时任务定时生成作业快照,可以定时清理作业快照。在作业需要重新运行时,可选择已经保存的快照来恢复作业。
② 作业资源定时调优:很多业务有明显的波峰波谷,因此实时数据的处理也一定存在波峰波谷。可为Flink作业设定定时策略,比如早上九点将资源调大,晚上九点将资源缩小以适配波峰波谷。如果作业有异常,会进行告警提示。
③ 作业健康分:为运行中的作业打出健康分,打分机制基于阿里云积累的丰富规则,同时会给出非常专业的指导意见。
④ Open API :可以将产品特性集成到用户自己的服务上。
⑤ Hologres Catalog支持创建表时进行表属性设置:在使用Hologres Catalog创建表时,支持用户在WITH参数中设置物理表属性。
⑥ 表格存储 OTS Source Connector发布,FileSystem connector发布: connector 以及文件 connector 可以读取更多数据源,FileSystem 不仅可以作为结果表,也可作为维表。OT S 可以有全量、增量以及全增量一体三种模式。
⑦ JDBS Connector发布。
⑧ Flink1.15支持:在企业级Flink产品里面率先发布了Flink 1.15 ,Flink1.15的增强特性得以体现。
⑨ HiveCatalog支持的Hive版本范围扩展。
上图为作业状态集管理页面。定时策略可以以不同的时间粒度设置自动快照,重启时可从快照进行作业恢复。
上图为作业资源定时调优页面。如图所示,可以根据实际需求将周一至周五的并发配置为10,周六周日并发配置为5。此外,时间粒度可以选择为月、周、天以及小时等。
上图为作业健康分页面。比如显示健康分为46 分,因为作业近期持续重启。如果健康分为100,也会提供相关诊断结果,显示进行检测的项目。
2022年3月和5月发布了很多其他重要功能。
其中Flink CDC是近一年以来推出的非常重要的企业级特性,主要包含以下几个方面:
① MySQL和 PG connector 同步了社区 CDC 2.2版本,修复了一些 bug ,新增了参数。
② 支持了Kafka catalog ,可以新建Kafka catalog ,解析Kafka里的特殊格式信息,支持解析JSON 格式消息获取Schema。JSON 格式发生变化时,写到结果表的结构也会根据 JSON 自动变化。
③ 独有的CDAS语法实现了整库同步,支持分库分表和同步的能力,比如将 MySQL 整库数据、分库分表数据同步到下游 Hologres等产品。
④ MySQL CDC connector 支持PolarDB-X和PolarDB Mysql数据源。
⑤ 入湖方面,内置了企业级Hudiconnector,上游可以打通 CDC 链路,全量增量读取 MySQL 数据,下游可以自动同步到Hudi。上游 MySQL 的表结构变更也可自动同步到Hudi。集成了阿里云OSS和DLF等组件,完善数据在计算引擎之间的连通性。
其次,提供了另外一套实时数仓解决方案,即Flink+ Clickhouse 企业级特性。在产品开发调试能力上也做了增强。测试方面,新增了模拟数据生成 connector ,里面提供了很多规则可以帮助做压测、函数等功能测试;新增了模板中心,提供了 20 多种常用模板,进行少许修改即可完成自己的作业开发。
此外,还新增了异常智能分析。作业发生比如异常时,能够抓取日志进行分类,可以帮助更好地进行异常作业定位。
为了更好地服务开发者,是的开发者的使用更方便,我们实现了一站式开发。
开发方面,可以在控制台上直接写 SQL,提供了20+模板以及SQL语法的正确性检查。其次,提供了完整的测试能力,包括使用 session 集群临时运行作业查看结果、控制台查看临时数据以及debug 里展示数据生成。作业上线之后,提供了多方手段来进行运维,比如资源配置、自动调优、状态集的生命周期管理、诊断能力等。
比如简单快速实现SQL调试,在控制台上可以看到数据激活、做自定义函数验证、上传调试数据、单步调试。
Session集群可以快速启停,帮助快速调试作业。提供了数据模拟器 connector 专门用于调试,包括行数,速率、格式、范围等,更贴近业务,满足测试需求。
运维方面,可以对所有作业状态进行监控,快速关注高风险作业。提供作业告警,对作业基于不同条件配置告警,并以电话、短信,钉钉消息等方式进行通知。此外,可在ARMS控制太进行更详细的规则配置。提供了数据曲线大盘,可以查看反压、Source端性能、数据倾斜等指标,指标可以通过 API 形式进行获取。
自动调优分为自动和定时两种。没有实现该功能以前,如果用Flink自建集群做资源调优,往往需要开发或运维人员在高峰、低谷期进行手工调配、重启作业,工作量巨大,且调整的资源大小也难以确定。
自动调优方案指作业上线之后,如果作业正常运行但是资源利用率长时间较低,则会将作业并发降低;而如果发现资源使用率达到了一定阈值,比如 CPU 使用达 90% 、内存使用达 95% ,则会自动为作业增加并发。自动调优能帮助更好地实现数据处理,保证数据处理不延迟,能够让数据及时完成处理。
定时调优指可以配定时任务,比如早上9点执行资源为50,晚上 9 点以后资源为10。
作业健康分能力是基于阿里巴巴集团内部的最佳实践总结。 比如作业上线后的启动、运行、停止阶段需要关注哪些内容、出问题应该如何处理等。我们将最佳实践总结做成了诊断功能,可以手动触发诊断,获得诊断结果以及相关处理建议。
如果作业出现异常停止或手动停止,仍需保证接下来数据处理的连续性和稳定性。很多客户关心是否能够避免重复处理数据、在哪个时间点能够继续处理数据,以上问题都依赖于于状态管理。
因此,我们提供了作业全生命周期的管理,提供了状态生成与删除、状态展示、状态的使用、状态兼容性能力以及状态的恢复等能力。
今年9 月,我们发布了最新 OpenAPI ,可与客户已有系统进行集成。当前平台上具备的大部分能力都可以使用 OpenAPI 进行调度,比如作业上线运维、作业资源调整、调优、诊断等。
Flink CDC 是目前云上用户使用较多的场景,它可以替代已有的一些开源数据集成工具,它基于开源工具做了增强和修复,比如其全量、增量以及全增量一体的能力是其他开源数据集成工具所不具备的,Flink CDC也可以支持更多上游以及 MySQL 相关的数据库,支持分库分表、表结构同步,支持元数据的管理比如无锁读取、断点续传等。下游同样支持很多开源、闭源产品。
阿里云实时计算Flink CDC具有以下四个价值:
l 元信息自动发现。
l 全增量自动切换。
l 表结构变更自动同步。
l 整库同步或单表同步。
以上功能均只需通过一行SQL、一个Job即可实现。
FlinkCEP主要用于风控与营销场景。
风控与营销场景往往会有连续性事件发生,而连续性事件发生意味着有一些连续性规则需要与数据进匹配。Flink CEP方的价值在于将规则保存在比如 RDS 或 Hologres里,修改规则之后作业无需重启,因为实时性是连续性事件的关键。
上图为Flink CEP系统架构,将开发人员与测试人员进行解耦。规则保存在Hologres或 RDS 里,可以实时查看规则并进行维护和修改。修改之后,Flink会自动完成规则更新,保证业务连续性。
Flink天然具备丰富的上下游 source 与sink,是一个先进的ETL架构。
上图为阿里云 Flink 与开源 Flink 的对比。
阿里云Flink的很多功能源于社区版,但做了一些增强,比如弹性付费等成本、性能相关的功能均实现了弹性伸缩。付费方式可以选择按量付费以及包年、包月。此外,即使不使用弹性存储功能,阿里云Flink内核也比社区版优化了2-3倍,天然比社区 Flink 减少资源,这也意味着成本降低。
特色能力上,阿里云Flink具有数据实时入湖入仓、实时风控场景等能力,也做了很多企业级 connector,connector 一旦放在产品里,则所有代码、所有测试都可达到企业级。
在开发效率上,阿里云Flink提供了一站式开发平台,包括常见模板、元数据管理、完善的调试。
运维方面也实现了很多开源版本不具备的功能,比如监控告警、问题诊断与分析、企业级高可用以及完善的作业状态生命周期管理。安全方面提供了企业级安全,包括严格安全审计、变更审计以及不同作业、不同团队之间的空间隔离等。