全部產品
Search
文件中心

Realtime Compute for Apache Flink:效能白皮書(Nexmark效能測試)

更新時間:Mar 31, 2026

本文介紹如何使用 Nexmark 基準測試載入器評測Realtime Compute Flink 版的流處理效能。

效能一覽

Nexmark 是業界通用的流處理引擎效能基準,包含 19 條標準 Query,覆蓋過濾、彙總、JOIN、視窗等典型情境。本文基於 Nexmark 測試載入器,在 8 CU 計算資源配置下,以 1 億條輸入資料為基準,對Realtime Compute Flink 版進行全量 Query 效能評測。測試結果表明:

  • 簡單查詢(如 q0、q1、q2)的 RPS 可達 400 萬~650 萬條/秒。

  • 複雜彙總與視窗查詢(如 q4、q5、q16)的 RPS 在 15 萬~63 萬條/秒之間。

測試載入器

Nexmark 是一套針對流處理引擎的標準效能基準測試。測試模型如下:

  • Nexmark 源表:按照指定 TPS 產生測試資料(Person、Auction、Bid 三類事件)。

  • Transformations:19 條標準 Nexmark Query,覆蓋過濾、轉換、彙總、JOIN、視窗等典型情境。

  • Blackhole 結果表:資料寫入 Blackhole,排除外部儲存的效能幹擾,專註評測 Flink 引擎自身的處理能力。

本文採用的 Nexmark 測試載入器基於Realtime Compute Flink 版的 OpenAPI 實現,自動化完成作業建立、部署、運行監控及結果採集的全流程。無需在控制台手動編寫 SQL 或建立作業。

測試環境

本次測試的 Flink 作業啟用了以下最佳化配置:

配置項

參數值

說明

table.exec.mini-batch.enabled

true

開啟 Mini-Batch 彙總

table.exec.mini-batch.allow-latency

2s

Mini-Batch 攢批間隔

table.optimizer.distinct-agg.split.enabled

true

開啟 Distinct 彙總拆分最佳化

execution.checkpointing.interval

3min

Checkpoint 間隔

前提條件

  • 已安裝 Java JDK 1.8.x 或更高版本。

  • 已建立工作空間,詳情請參見開通Realtime ComputeFlink版

  • 已擷取阿里雲帳號的 AccessKey ID 和 AccessKey Secret。

測試步驟

步驟一:下載測試載入器

下載 Nexmark 測試載入器壓縮包nexmark-flink.tar.gz並解壓。

解壓後的目錄結構如下:

nexmark-flink/
├── run_nexmark.sh          # 測試入口指令碼
├── nexmark_env.sh          # 環境變數設定檔(需編輯)
├── bin/                    # 運行指令碼
├── conf/                   # Flink 作業配置
├── lib/                    # JAR 包(需上傳至控制台)
└── queries-vvp/            # Nexmark Query SQL 檔案

步驟二:上傳 Nexmark JAR

  1. 登入Realtime Compute控制台

  2. 單擊進入目標專案空間,在左側導覽列檔案管理 > 上傳資源

  3. 選擇並上傳 nexmark-flink-0.2-SNAPSHOT.jar 檔案。該檔案位於測試載入器的 nexmark-flink/lib 目錄下。

  4. 上傳完成後,單擊目標檔案名稱複製 OSS 地址。該地址在後續配置參數時使用。檔案路徑格式因儲存類型而異:

    • OSS Bucket 儲存oss://<OSS Bucket 名稱>/artifacts/namespaces/<專案空間名稱>/<檔案名稱>

      例:oss://oss-test/artifacts/namespaces/flink-default/nexmark-flink-0.2-SNAPSHOT.jar
    • 全託管儲存oss://flink-fullymanaged-<工作空間ID>/artifacts/namespaces/<專案空間名稱>/<檔案名稱>

      例:oss://flink-fullymanaged-e6a123456789/artifacts/namespaces/flink-default/nexmark-flink-0.2-SNAPSHOT.jar

    如需查看工作空間的儲存類型,在Realtime Compute管理主控台單擊目標工作空間操作列下的詳情查看。

步驟三:配置運行參數

編輯 nexmark-flink/nexmark_env.sh 檔案,填寫以下參數。

參數名

說明

樣本

END_POINT

Realtime Compute Flink 版的服務存取點。根據地區選擇對應的存取點,詳情請參見服務存取點

ververica.cn-hangzhou.aliyuncs.com

AK

阿里雲帳號的 AccessKey ID。

-

SK

阿里雲帳號的 AccessKey Secret。

-

WORK_SPACE

專案工作空間的 Workspace ID。

e6a123456789

NAMESPACE

專案工作空間的 Namespace。

flink-default

NEXMARK_JAR

步驟二中上傳的 JAR 檔案的 OSS 地址。

oss://flink-fullymanaged-e6a123456789/artifacts/namespaces/flink-default/nexmark-flink-0.2-SNAPSHOT.jar

FLINK_VERSION

目標測試的 Flink 引擎版本號碼。

vvr-11.6-jdk11-flink-1.20

QUERIES

指定啟動並執行 Query。多個 Query 以逗號分隔,例如 q0q1,q2,q3。運行全部 Query 設定為 all

all

說明

運行全部 Query 耗時較長。每條 Query 需要經歷作業建立、資料產生、計算執行等階段。建議先運行單條 Query(例如將 QUERIES 設為 q0),驗證環境配置和參數填寫無誤後,再執行全量測試。

步驟四:運行測試

  1. nexmark-flink 目錄下執行以下命令。

    ./run_nexmark.sh
  2. 測試載入器通過 OpenAPI 自動建立並運行 Nexmark 作業。

  3. 運行完成後,輸出各 Query 的運行時間長度(毫秒)。樣本如下:

    INFO  com.github.nexmark.flink.vvp.Nexmark - q0 13078
    ============================================================================
    ✓ Benchmark execution completed successfully
    ============================================================================

效能表現

Realtime Compute Flink 版 8 CU 計算資源配置下,Nexmark 19 個 Query 的效能表現如下。每條 Query 的輸入資料量為 1 億條,RPS 為輸入資料量與用時的比值。

說明

以下測試資料基於特定硬體環境和引擎版本採集。隨著底層硬體升級迭代和引擎版本更新,實際效能表現可能存在差異,測試結果僅供參考。

Query

用時(毫秒)

RPS

q0

23450

4,264,392

q1

22824

4,381,353

q2

15224

6,568,576

q3

21558

4,638,649

q4

157117

636,468

q5

679277

147,215

q7

333837

299,547

q8

29939

3,340,125

q9

266563

375,146

q10

51202

1,953,049

q11

145983

685,011

q12

36991

2,703,360

q14

20012

4,997,002

q15

42734

2,340,057

q16

337293

296,478

q17

27076

3,693,308

q18

96335

1,038,044

q19

95121

1,051,293

q20

231482

431,999

q21

39693

2,519,336

q22

31228

3,202,254