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

上海速莱乐流体机械设备有限公司 2026/09/09 17:59:39

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 的使用场景,避免不同客户端返回结构不一致。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

医院网站建设西安企业网站建设

🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习🎬擅长领域:驱动开

2026/06/30 12:21:00

信阳网站建设惠州网站建设

PingFangSC字体包完全指南:跨平台设计一致性解决方案【免费下载链接】PingFangSCPingFangSC字体包文件、苹果平方字体文件,包含ttf和woff2格式

2026/06/30 11:39:27

互动网站建设网站建设哪家便宜

GitHub Actions工件下载完整指南:如何高效管理构建产物【免费下载链接】download-artifact项目地址: https://gitcode.com/gh_mirror

2026/06/30 12:12:30

泰安网站建设公司网站建设学校

想要在个人电脑上重温经典的PlayStation Vita游戏吗?Vita3K这款革命性的开源模拟器为你打开了通往PSV游戏世界的大门。作为一款实验性的PS Vita模拟器,

2026/06/30 12:59:34

网站建设方案书山东网站建设

快速体验打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容:使用快马平台快速开发标签机诊断工具原型,要求:1

2026/06/30 14:18:09

网站建设制作网站建设知识

问题选中代码,如果发送失败加延时会导致最外围的while(1)时序变化,外围的while是每100ms循环一次的,有什么好的解决办法AI回答你的担忧很合理:在 for 循环里加 osDelay(100

2026/06/30 13:30:36

网站建设建设优秀网站建设

网络安全配置:IPTables与Linux审计系统全解析IPTables规则与目标扩展IPTables是一个强大的工具,可实现从简单到复杂的数据包过滤。除了预定义的目标(ACCEPT、DROP、QUE

2026/06/30 10:35:21

长春网站建设河南省建设厅网站

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

2026/06/30 11:14:54

网站建设专家网站建设资源

单机部署极限测试:MGeo在16GB显存下处理千万级数据对背景与挑战:中文地址相似度匹配的工程瓶颈在城市计算、地图服务和位置大数据融合场景中,地址相似度匹配是

2026/06/30 11:47:58

网站建设视频关于网站建设

3D可视化抽奖系统:重塑企业活动体验的智能解决方案【免费下载链接】lottery🎉🌟✨🎈年会抽奖程序,基于 Express

2026/06/30 11:03:53