kisenon

端点

空闲挂起的 Postgres 前端 —— 类型、生命周期和唤醒语义。

端点是接受客户端连接的 Postgres 进程。 端点是临时性的:它们在空闲时挂起,在收到第一个数据包时唤醒, 并运行在项目的分离存储层之上。只为计算实际运行的秒数付费。

类型

类型可写?何时使用
rw默认。应用流量、迁移,以及任何进行变更的操作。对于典型工作负载,每个分支一个 rw 端点已绰绰有余。
ro只读副本。多个 ro 端点可以挂载到同一个分支并共享存储;它们的本地缓存保持独立。用于将分析流量与应用流量隔离。

两种类型都恰好挂载到一个 分支。端点 不能移动到另一个分支;请改为在目标分支上创建一个新端点。

空闲挂起

端点在一个可配置的无客户端活动窗口之后挂起。 默认是 300 秒(5 分钟)。在创建时设置 suspend_after_seconds 以覆盖它;新窗口会在端点的下一个空闲周期生效。

在挂起期间:

  • 计算 pod 已消失。不计费 CPU,也不计费内存。
  • 存储不受影响 —— 你的数据在 pageserver 中是持久的。
  • 端点 id 和连接字符串保持有效。

唤醒

向一个挂起的端点发送数据包会将其唤醒。一旦集群拥有温热的 pageserver 缓存,冷启动延迟通常为 300–500 毫秒; 长时间空闲之后(或一个全新项目之后)的第一次唤醒 在 pageserver 页面缓存预热期间可能需要 10–30 秒。 标准 Postgres 驱动在典型配置下不会将此视为超时 —— 如果你遇到了,请参见 疑难解答

常规唤醒之所以快,是因为平台会在需求之前保持一个预热的计算池: 一次唤醒通常会挂载到一个已经在运行的计算,而不是从头启动它。 你无需管理或为该池付费 —— 它只影响你的端点恢复的速度。

状态机

一个端点会经历如下转换:

Pending → Starting → Running → Stopping → Stopped → (Failed)
  • Pending —— 控制平面已接受创建请求, 正在调度计算 pod。如果你看到一个端点在此卡住 超过几秒,请参见 疑难解答
  • Starting —— 计算 pod 已启动;Postgres 正在初始化 并将 WAL 重放到分支的 HEAD。
  • Running —— 正在接受客户端连接。
  • Stopping —— 空闲窗口已过;正在排空连接并 刷写本地状态。
  • Stopped —— 已挂起。等待下一个数据包以唤醒。
  • Failed —— 终态错误。端点卡片会显示 原因;罕见,但会在调度失败或计算 镜像无法启动时发生。

连接 URI

线路格式记录在 连接字符串 中:

postgresql://<role>:<pwd>@<endpoint_id>.<region>.kisenon.com:5432/<database>?sslmode=require

主机名派生自端点 id,而非项目 id —— 每个端点独立终止 TLS。TLS 是必需的。

同一个端点也在 <endpoint_id>-pooler.<region>.kisenon.com 上响应,用于事务池化的 连接(默认开启)—— 参见 连接字符串 了解池化与直连的 权衡。

创建

keon endpoints create --branch <branch-id> --type rw

可选标志:

  • --suspend-after-seconds <n> 用于覆盖默认挂起窗口。
  • --type ro 用于只读端点。

CLI 会返回端点 id 和连接字符串。在调用返回后的几秒内, 端点即处于 Running 状态并准备好接受连接。

删除

keon endpoints delete <endpoint-id>

已打开的客户端连接会被断开。端点 id 被退役, 其 DNS 主机名停止解析。分支及其数据 不受影响。

相关内容