news 2026/4/16 12:03:53

Flink SQL Gateway 把 Flink SQL 变成“多客户端并发可用”的统一服务入口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flink SQL Gateway 把 Flink SQL 变成“多客户端并发可用”的统一服务入口

1. SQL Gateway 解决了什么问题

如果只用 SQL Client(embedded),更多是“我在一台机器上交互式跑 SQL”。但一旦进入团队协作和平台化,就会遇到这些诉求:

  • 多个用户/系统同时提交 SQL(并发、隔离、会话上下文)
  • 用标准协议接入(REST、HiveServer2、JDBC)
  • 在 CI/CD 或平台中用 API 方式提交 SQL 脚本
  • 统一管理连接、依赖、参数、资源目标集群

SQL Gateway 正是为此设计:可插拔 Endpoint + 统一的 SqlGatewayService 处理器。 (Apache Nightlies)

2. 架构速懂:Endpoint + SqlGatewayService + Session/Operation

SQL Gateway 由两部分组成:

  • Endpoint:对外入口(比如 REST、HiveServer2)
  • SqlGatewayService:真正处理请求的“内核”,被不同 Endpoint 复用 (Apache Nightlies)

同时它引入两个关键概念:

  • Session(会话):保存用户在交互过程中的上下文(配置、catalog、已加载 jar、变量等),创建后返回sessionHandle供后续调用使用 (Apache Nightlies)
  • Operation(操作):每次提交 SQL(查询/DDL/DML)都会生成一个operationHandle,用于拉取结果或跟踪执行 (Apache Nightlies)

3. 本地 5 分钟跑起来:Cluster + Gateway + 健康检查

1)启动本地 Flink 集群

./bin/start-cluster.sh

2)启动 SQL Gateway(REST Endpoint 默认监听 8083)

./bin/sql-gateway.sh start -Dsql-gateway.endpoint.rest.address=localhost

3)检查 Gateway 是否可用

curlhttp://localhost:8083/v1/info

能返回产品名和版本信息就说明启动成功。 (Apache Nightlies)

你也可以用start-foreground以前台方式启动,便于调试日志。 (Apache Nightlies)

4. REST API 三步走:开 Session → 提交 SQL → 拉取结果

下面是一套最常用的 REST 调用链(非常适合写到脚本或平台后端里)。

Step 1:创建 Session

curl--requestPOST http://localhost:8083/v1/sessions# => {"sessionHandle":"..."}

Step 2:提交 SQL(示例 SELECT 1)

curl--requestPOST\http://localhost:8083/v1/sessions/${sessionHandle}/statements/\--data'{"statement":"SELECT 1"}'# => {"operationHandle":"..."}

Step 3:拉取结果(分页/批次)

curl--requestGET\http://localhost:8083/v1/sessions/${sessionHandle}/operations/${operationHandle}/result/0

返回体里如果带nextResultUri,继续 GET 它就能拿下一批结果。 (Apache Nightlies)

5. 关键能力:在请求里指定要提交到哪个 Flink 集群

SQL Gateway 支持客户端在请求体里传executionConfig,从而指定目标 Flink 集群的 REST 地址与端口(适合一套 Gateway 对多套集群、或平台侧动态路由)。

示例(把作业提交到jobmanager-host:8081):

curl--requestPOST\http://localhost:8083/v1/sessions/${sessionHandle}/statements/\--data'{ "executionConfig": {"rest.address":"jobmanager-host","rest.port":8081}, "statement":"SELECT 1" }'

这一点对“统一入口 + 多环境/多集群”非常实用。 (Apache Nightlies)

6. 客户端怎么接:SQL Client / JDBC / Hive 生态

6.1 SQL Client 连接 Gateway(最顺手)

SQL Client 的 gateway 模式就是把 SQL 提交到 SQL Gateway 去执行:

./bin/sql-client.sh gateway--endpointhttp://127.0.0.1:8083

并且官方明确:SQL Client 从 v2 开始只支持连接 REST Endpoint。 (Apache Nightlies)

6.2 Flink JDBC Driver(给 BI/应用接入)

Flink JDBC Driver 的使用前提就是启动 SQL Gateway 的 REST Endpoint,它相当于 JDBC Server。 (Apache Nightlies)

典型场景:应用用 JDBC 发 SQL,Gateway 统一转成 Flink 作业执行。

6.3 HiveServer2 Endpoint(兼容 Beeline / DBeaver / Superset 等)

SQL Gateway 原生支持 HiveServer2 Endpoint,兼容 HiveServer2 wire protocol,可以用现成的 Hive 客户端工具接入。 (Apache Nightlies)

启用方式:

./bin/sql-gateway.sh start -Dsql-gateway.endpoint.type=hiveserver2

或写入flink-conf.yaml

sql-gateway.endpoint.type:hiveserver2

CLI 参数优先级高于配置文件。 (Apache Nightlies)

7. 部署 SQL 脚本:Application Mode 一键起作业

SQL Gateway 支持把一段脚本直接以 Application Mode 的方式部署(JobManager 负责编译脚本)。如果脚本里需要 Kafka 等连接器资源,通常要用ADD JAR拉取/加载相关 artifact。 (Apache Nightlies)

REST 示例(K8S application):

curl--requestPOST http://localhost:8083/sessions/${SESSION_HANDLE}/scripts\--header'Content-Type: application/json'\--data-raw'{ "script": "CREATE TEMPORARY TABLE sink(a INT) WITH ( '\''connector'\'' = '\''blackhole'\'' ); INSERT INTO sink VALUES (1),(2),(3);", "executionConfig": { "execution.target": "kubernetes-application", "kubernetes.cluster-id": "'"${CLUSTER_ID}"'", "kubernetes.container.image.ref": "'"${FLINK_IMAGE_NAME}"'"}}'

如果你要跑 PyFlink,需要镜像里预装 PyFlink。 (Apache Nightlies)

8. 关键配置与调优:把“服务化”跑稳

SQL Gateway 是常驻服务,最怕两类问题:会话无限增长、线程资源被打满。官方提供了一组核心参数可以控制。 (Arenadata Docs)

会话治理(推荐生产必配)

  • sql-gateway.session.idle-timeout:会话空闲多久自动关闭(0 表示不关闭)
  • sql-gateway.session.check-interval:检查空闲会话的周期
  • sql-gateway.session.max-num:最大活跃 session 数

吞吐与并发(防止被突发流量压死)

  • sql-gateway.worker.threads.min/sql-gateway.worker.threads.max
  • sql-gateway.worker.keepalive-time:空闲 worker 线程回收时间

计划缓存(高频重复查询会很香)

  • sql-gateway.session.plan-cache.enabled
  • sql-gateway.session.plan-cache.size
  • sql-gateway.session.plan-cache.ttl(Arenadata Docs)

9. 生产落地建议:平台化时最容易踩的坑

  • 入口层建议加反向代理与鉴权:REST Header(Cookie/Token)在企业里很常见,Gateway 本身更适合作为“内网服务”,由网关层做认证授权与限流
  • 多实例部署:SQL Gateway 本身是服务,前面挂 LB;会话是否需要粘性(sticky)取决于你是否把 session 状态放在实例内存里(通常是)
  • 资源隔离:如果你用 session cluster 跑大量互不相干的作业,要提前规划隔离策略(不同队列/不同集群/不同 gateway 实例)
  • 依赖管理标准化:把常用 connector/format 的 jar 或 artifact 管理成“白名单”,别让用户随意上传导致类冲突与安全风险
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/4 3:07:02

亲测好用!10款AI论文工具测评:本科生毕业论文必备

亲测好用!10款AI论文工具测评:本科生毕业论文必备 2025年AI论文工具测评:为什么你需要这份榜单? 随着人工智能技术的不断发展,越来越多的本科生开始借助AI工具提升论文写作效率。然而,面对市场上琳琅满目的…

作者头像 李华
网站建设 2026/4/16 11:12:22

冲床自动送料全套程序一套,含信捷plc及威纶通触摸屏有详细注释文件,有一定基础的可自行制作,已...

冲床自动送料全套程序一套,含信捷plc及威纶通触摸屏有详细注释文件,有一定基础的可自行制作,已实际应用多年,视频即现场视频,软件产品具有可复制性冲床自动送料系统里藏着不少硬核技术活儿,今天就带大伙儿拆…

作者头像 李华
网站建设 2026/4/5 3:24:59

论文重复率超过30%?学会这五个实用技巧,快速将查重率降到合格线以下

最新研究数据揭示,全球气温上升与极端气候事件的发生频率呈现出明显的正相关性,这一发现进一步验证了气候系统变化对气象异常模式产生的深远影响。 首先,咱们聊聊人工降重的基本功 人工智能领域的快速发展已成为多项调研报告的重点关注对象…

作者头像 李华
网站建设 2026/4/16 10:43:42

颠覆性7款AI论文神器!20分钟万字问卷,真实参考文献一键搞定!

还在为开题报告抓耳挠腮?还在为文献综述熬夜检索?还在为导师的修改意见一筹莫展?如果你的答案是肯定的,那么这篇文章就是你学术生涯的转折点。作为一名深耕学术领域的资深研究者,我耗时数月,深度测评了市面…

作者头像 李华
网站建设 2026/4/16 10:43:22

2025模温机品牌实力榜:防爆非标定制与高精度控温企业盘点

2025模温机品牌实力榜:防爆非标定制与高精度控温企业盘点在工业制造迈向精密化与智能化的今天,模温机已不再是简单的加热设备,而是保障产品质量、提升生产效率的核心温控枢纽。尤其在化工合成、复合材料成型、精密注塑等高端领域,…

作者头像 李华
网站建设 2026/4/8 19:27:57

【毕业设计】基于机器学习+深度学习的二手车价格预测及应用实现

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华