本文為您介紹2022年9月19日發布的Realtime ComputeFlink版的重大功能變更和主要缺陷修複。
概述
2022年9月19日正式對外發布Realtime ComputeFlink版的新版本,包含平台和引擎的更新、連接器的更新、效能最佳化以及缺陷修複。本次發布的是基於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的版本;連接器方面我們支援讀取阿里雲Table Store服務和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的版本。 | |
Table Store Source連接器發布 | 支援讀取OTS的增量Log。 | |
JDBC連接器發布 | 內建社區JDBC連接器。 | |
RocketMQ源表支援並發數大於Topic分區數 | 該模式可以讓使用者在消費前可以為可能的Topic分區數增加預留資源。 | |
RocketMQ結果表支援Message Key的設定 | 寫入RocketMQ支援設定Message的Key資訊。 | |
支援阿里雲AnalyticDB for MySQL Catalog | 通過此Catalog,您可以直接讀取AnalyticDB for 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源表。