端点
空闲挂起的 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 主机名停止解析。分支及其数据 不受影响。