网站建设系统天津网站建设

杭州西籽网络科技有限公司 2026/09/09 17:53:49

1. REST Endpoint 的核心交互模型

SQL Gateway 的 REST 交互基本就三步:

  1. Open Session
    客户端创建会话,Gateway 返回SessionHandle,后续所有操作都挂在这个会话上下文下(比如你在会话里USE CATALOGADD JARSET的东西)。 (Apache Nightlies)

  2. Submit SQL -> Operation
    提交 SQL 后,Gateway 把这条 SQL 变成一个Operation,返回OperationHandle。Operation 有生命周期:你可以cancel取消执行,也可以close释放资源。 (Apache Nightlies)

  3. Fetch Results(分页批次)
    OperationHandle拉取结果。每次会返回一批数据 + schema,可能还会带nextResultUri用于拉下一批;当拉完会返回resultType=EOS且下一批 URI 为空。 (Apache Nightlies)

这套模型的好处是:你可以像管理“远程查询任务”一样管理 SQL(查状态、取消、释放、分页拉取),非常适合平台化封装。

2. REST Endpoint 关键配置:address / bind-address / port / bind-port

REST Endpoint 的网络配置最容易搞混的是“对外地址”和“绑定地址”的区别:

  • sql-gateway.endpoint.rest.address客户端用来连接 Gateway 的地址(对外地址)
  • sql-gateway.endpoint.rest.bind-addressGateway 进程实际绑定的本地地址
  • sql-gateway.endpoint.rest.port:客户端连接的端口(默认 8083)
  • sql-gateway.endpoint.rest.bind-port:Gateway 绑定端口(默认 “8083”,可配置成端口列表、范围,或组合) (Apache Nightlies)

为什么建议 bind-port 配范围

当同一台机器上跑多个 SQL Gateway(多实例、灰度、不同租户)时,固定端口很容易冲突。bind-port支持:

  • 列表:"50100,50101"
  • 范围:"50100-50200"
  • 组合:"50100,50110-50120"

官方也明确建议用范围避免冲突。 (Apache Nightlies)

port 和 bind-port 的关系(快速记忆)

优先级逻辑可以理解为:

  • 你配了bind-port:就按bind-port绑定
  • 否则:绑定port(或默认值)
  • bind-address配了就强制绑定到它,否则按 address/默认行为处理 (Apache Nightlies)

3. OpenAPI 版本:v1 到 v4 各自解决什么

REST Endpoint 提供多版本 OpenAPI(默认 v3),不同版本能力不同:

  • v1:允许提交 statements 并执行
  • v2:支持 SQL Client 连接 Gateway
  • v3:支持 Materialized Table 的 refresh 操作
  • v4:支持 Application Mode 部署脚本(deploy script) (Apache Nightlies)

做平台封装时建议:先 GET/api_versions探测可用版本,再选择你需要的协议版本。

4. v4 常用 API 清单与“该用哪个”

下面按“你在平台里最常用的事情”来分组(都属于你贴出来的 v4):

4.1 探活与版本协商

  • GET /api_versions:返回可用 API 版本
  • GET /info:返回 Gateway/集群元信息

4.2 会话管理(Session)

  • POST /sessions:创建会话(可带 properties 覆盖默认配置)
  • GET /sessions/:session_handle:查看会话配置
  • DELETE /sessions/:session_handle:关闭会话
  • POST /sessions/:session_handle/heartbeat:心跳续期,配合 idle-timeout 保活

4.3 会话内环境配置(DDL / USE / ADD JAR)

  • POST /sessions/:session_handle/configure-session:执行DDL、USE、LOAD/UNLOAD MODULE、ADD JAR等“搭环境”的语句
    典型用途:建表、切 catalog/database、注册函数、加载 connector 依赖。

4.4 执行 SQL(生成 Operation)

  • POST /sessions/:session_handle/statements:执行一条 statement,返回operation_handle

4.5 Operation 生命周期管理

  • GET /sessions/:session_handle/operations/:operation_handle/status:查状态
  • POST /.../cancel:取消执行
  • DELETE /.../close:关闭 operation 释放资源
  • GET /.../result/:token:分页拉取结果(注意 token 和 rowFormat)

4.6 体验增强与脚本部署

  • GET /sessions/:session_handle/complete-statement:SQL 自动补全提示(做 Web SQL IDE 很有用)
  • POST /sessions/:session_handle/scripts:Application Mode 部署脚本(v4 的核心能力之一)

这些接口的语义在官方 REST Endpoint 文档里都有完整描述。 (Apache Nightlies)

5. 拉取结果时 rowFormat 怎么选:JSON vs PLAIN_TEXT

GET .../result/:token有个必填查询参数rowFormat,它决定 RowData 怎么序列化:

  • JSON:按 Table/RowData 的 JSON 映射返回(能保留类型信息、字段结构)
  • PLAIN_TEXT:自动把所有列 cast 成 String(适合快速展示、日志、调试) (Apache Nightlies)

平台化建议:

  • 面向程序消费:优先 JSON
  • 面向人看的控制台:PLAIN_TEXT 体验更好(少处理类型)

6. 一套可直接照抄的 REST 调用流程(含配置会话、执行、分页、收尾)

下面示例用最小闭环演示“创建会话 → 配置环境 → 执行 SQL → 拉结果 → 关闭资源”。

6.1 创建 Session

SESSION=$(curl-s-XPOST http://localhost:8083/v1/sessions|jq-r.sessionHandle)echo$SESSION

6.2 配置会话(可选:USE / ADD JAR / CREATE TABLE 等)

例如创建临时表(黑洞 sink):

curl-s-XPOST"http://localhost:8083/v1/sessions/${SESSION}/configure-session"-H'Content-Type: application/json'-d'{"statement":"CREATE TEMPORARY TABLE sink(a INT) WITH (''connector''=''blackhole'')"}'

6.3 执行 statement,拿到 OperationHandle

OP=$(curl-s-XPOST"http://localhost:8083/v1/sessions/${SESSION}/statements"-H'Content-Type: application/json'-d'{"statement":"SELECT 1"}'|jq-r.operationHandle)echo$OP

6.4 拉取结果(注意 rowFormat + token)

curl-s"http://localhost:8083/v1/sessions/${SESSION}/operations/${OP}/result/0?rowFormat=JSON"

如果返回里有nextResultUri,继续 GET 它;直到resultType=EOS

6.5 收尾(强烈建议做)

curl-s-XDELETE"http://localhost:8083/v1/sessions/${SESSION}/operations/${OP}/close"curl-s-XDELETE"http://localhost:8083/v1/sessions/${SESSION}"

原因很简单:Operation/Session 都会占用服务端资源,不 close 就只能靠超时回收,平台一上量很容易把 gateway 拖慢。

7. 生产封装建议:把 Gateway 当“服务”来治理

  • 必须实现 heartbeat:前端 IDE/Web 平台很容易出现“用户停在页面上不动”,没有心跳会被 idle-timeout 回收;有心跳就能按需保活。 (Apache Nightlies)
  • 必须做 cancel + close:取消只是停止执行,close 才是资源释放;两者都要有入口(比如“停止查询”“关闭结果集”)。 (Apache Nightlies)
  • 结果拉取要支持分页续拉:以nextResultUri或 token 驱动续拉,避免一次性拉爆网关或客户端内存。 (Apache Nightlies)
  • 多实例端口用 bind-port 范围:尤其同机多 gateway、容器 hostNetwork、或灰度并行部署时最关键。 (Apache Nightlies)
  • rowFormat 策略固定:平台层统一约定 JSON/PLAIN_TEXT 的使用场景,避免不同客户端返回结构不一致。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

舟山网站建设宜兴网站建设

北航卡尔曼滤波与组合导航 第三次作业 SINS/GPS组合动态实验本次作业要求进行SINS/GPS组合导航的动态实验,主要涉及卡尔曼滤波和组合导航的相关内容。在Matlab中࿰

2026/06/30 11:40:56

东莞网站建设网站建设高端

HuggingFace镜像网站同步更新lora-scripts项目,加速模型加载速度在生成式人工智能(AIGC)技术席卷各行各业的今天,越来越多

2026/06/30 13:32:36

鄂州网站建设四平网站建设

Linly-Talker能否接入铁路12306客服系统?在春运高峰期间,铁路12306的客服热线常常因瞬时并发量激增而陷入“占线—等待—挂断”的恶性循环。用户拨打数十次才能

2026/06/30 13:52:08

淄博网站建设网站建设协议

当前,Token的消耗量呈现出年均百倍增长的态势。国家数据局统计显示,截至今年6月底,我国日均Token消耗量从2024年初的1000亿,已经突

2026/06/30 10:13:19

上海营销型网站建设省建设厅网站

10大论文选题工具核心对比排名工具名称核心功能效率评分适用场景1aicheck智能选题+大纲生成★★★★★完全无头绪时的选题生成2aibiye选题优化+可行性分析★★★★☆已有初步方向

2026/06/30 13:18:05

上海门户网站建设网站建设哪家

Excalidraw 自定义主题:让协作工具真正属于你的品牌在一场跨时区的产品评审会上,团队成员打开同一个白板链接,映入眼帘的不是千篇一律的浅灰界面ÿ

2026/06/30 12:39:02

南宁网站建设西安企业网站建设

如何用HeyGem将一段音频应用到多个数字人视频中?在虚拟内容爆发式增长的今天,企业越来越依赖高效、低成本的方式批量生产高质量视频。比如,同一篇产品介绍文案&

2026/06/30 10:57:53

南通网站建设asp网站建设

Langchain-Chatchat品牌声誉管理:负面评论快速响应机制在电商平台的客服后台,一条差评刚刚被发布:“净水器漏水,客服还不理人&#x

2026/06/30 13:21:35

天津网站建设山东网站建设

测风激光雷达是一种基于光学脉冲相干探测技术的高精度风场监测设备,通过分析大气中气溶胶粒子对激光产生的多普勒频移效应,实现三维风场的实时探测。该系统具备"测得快、测得

2026/06/30 11:29:56