---
title: 架构介绍
description: "OmniStream Flink Native化特性通过Native Code（C/C++）重构Flink SQL与DataStream算子逻辑，以提升查询性能。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2530/bds/kunpengbds_omniruntime_20_0903.html
sourcePath: /source/zh/kunpengboostkithistory/2530/bds/kunpengbds_omniruntime_20_0903.html
indexId: 30714e6d1fd3cd85c69abc9e325341126c25acfb898b7e2e9276a708ef10f6b478
---
# 架构介绍

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所示。

图1 OmniStream Flink SQL Native化整体架构设计图


#### DataStream

DataStream API接收输入后，会将其解析为执行计划。Java适配层负责解析该计划，并初始化C++侧的相关Task，构建对应的算子链。初始化完成后，Task开始运行，从Source读取数据，经过一系列算子处理，最终通过Sink输出结果。

OmniStream Flink DataStream Native化架构如图2所示。

图2 OmniStream Flink DataStream Native化整体架构设计图
