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>.kisenon.com:5432/<database>?sslmode=require

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

创建

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

可选标志:

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

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

删除

keon endpoints delete <endpoint-id>

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

相关