JQuick-SQL Worker 生命周期:端口、启动与关闭规范

JQuick-SQL Worker 生命周期:端口、启动与关闭规范

Meta 描述:说明 jquick-sql 嵌入式 Worker 的首次启动机制、19001...19000+n 端口范围、Coordinator 生命周期以及 finally shutdown 的必要性。

标签:jquick-sql Worker、embedded、Coordinator、gRPC、Java 分布式 SQL 查询引擎、shutdown

官网示例:

前言

嵌入式模式让 Java 服务可直接试用分布式 SQL 查询引擎,但 Worker 是真实的本地 gRPC 服务,必须管理端口与关闭流程。生命周期处理不当会导致端口被占用或测试残留资源。

首次执行时启动

JQuickSQL.embedded() 和 embedded(n) 仅标记嵌入式模式;首次 execute 时,ensureInitialized() 检查 Coordinator,必要时调用 startEmbeddedWorkers(),随后创建 Coordinator。

端口分配规则

源码将基准端口设为 19001,并按 Worker 下标递增。因而 embedded(n) 的端口范围是 19001..19000+n。例如:

java 复制代码
JQuickSQL sql = JQuickSQL.embedded(3);
try {
    sql.registerTable("flags", "enabled", true);
    sql.execute("SELECT enabled FROM flags");
} finally {
    sql.shutdown();
}

该示例在执行时会使用 19001、19002、19003;端口冲突会在 Worker 启动阶段抛出异常。

Worker 的执行职责

Worker 维护活动任务、内存分区、Worker 通道、函数管理、表达式求值和节点执行器。Coordinator 派发 Fragment 后,Worker 接收输入分区、重建物理节点、执行片段并返回结果或输出分区。

关闭流程必须放 finally

shutdown() 会关闭 Coordinator,并逐个停止本实例启动的 Worker、清空内部列表。无论查询成功、失败还是测试断言失败,都应执行:

java 复制代码
try {
    sql.execute("SELECT * FROM users").printTable();
} finally {
    sql.shutdown();
}

常见问题

**为什么 Worker 没在 embedded 时立即启动?**初始化发生在首次执行时。

**embedded(2) 的端口是什么?**19001...19002。

**shutdown 会关闭外部 Worker 吗?**门面会关闭自身 Coordinator 与其内部记录的本地 Worker;外部节点的服务治理应独立管理。

总结与拓展

严格遵守端口范围与 finally shutdown,可让嵌入式执行更适合本地开发、自动化测试和轻量级分析。生产部署还应统一规划端口与节点健康管理。

Core Advantage

Embedded workers provide a local Coordinator-Worker execution environment with explicit cleanup.

Applicable Scenarios

Local development, integration tests, batch analytics, and embedded cluster experiments.

相关推荐
大维1 小时前
DBX 实测:从 SQLite 查询到 MiniMax-M3 自然语言生成 SQL
数据库·sql·sqlite
玖米GEO运营王总监2 小时前
2026年账号矩阵协同效应怎么量化:三个指标与公式结构
java·大数据·数据库
景煜拾年3 小时前
InnoAI SQL 助手
运维·数据库·笔记·sql
.痞老板.4 小时前
mysql初阶--数据类型
android·数据库·mysql
Risehuxyc4 小时前
MySQL密码插件
数据库·mysql
腾科IT教育5 小时前
Oracle考试全解析:OCP、OCM认证体系与核心考点备考指南
数据库·oracle·开闭原则
叼烟扛炮14 小时前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
.痞老板.17 小时前
mysql初阶--数据库基础
数据库·mysql
城北徐宫18 小时前
MySQL约束条件一览
数据库·mysql
ClouGence20 小时前
数据库变更审批困局,被这个开源工具解决了
数据库·开源