架构介绍
OmniStream Flink Native化特性通过Native Code(C/C++)重构Flink SQL与DataStream算子逻辑,以提升查询性能。
- 针对SQL,OmniStream采用C++结合向量化指令实现算子,通过向量化加速,提升SQL计算性能。
- 针对DataStream,OmniStream采用C++结合向量化指令实现算子,充分发挥Native Code性能优势,提升DataStream场景性能。
SQL
OmniStream Flink Native化特性采用Java适配层(Java Adapter)与C++核心层(CPP Core)双层架构设计。
- Java适配层由Java实现,主要用于生成Native的执行计划和不支持的场景回退Java Runtime。
- 核心层由C++实现,主要是实现各算子逻辑及数据传输等。
SQL/Table API输入的SQL查询首先会经过解析,生成对应的执行计划。Java适配层获取该执行计划并初始化CPP侧相关Task,生成对应的算子链。初始化结束后,Task开始运行,从Source源读取数据,经过一系列算子处理后最终通过Sink输出结果。
OmniStream Flink SQL Native化架构如图1所示。
DataStream
DataStream API接收输入后,会将其解析为执行计划。Java适配层负责解析该计划,并初始化C++侧的相关Task,构建对应的算子链。初始化完成后,Task开始运行,从Source读取数据,经过一系列算子处理,最终通过Sink输出结果。
OmniStream Flink DataStream Native化架构如图2所示。
父主题: 特性介绍

