kisenon

项目

Kisenon 中的隔离单位 —— 命名、生命周期与级联语义。

一个项目是 Kisenon 中的顶层容器。每个分支、端点、角色和数据库 都恰好生存在一个项目之下。

一个项目拥有什么

  • 一个 main 分支,在项目创建时自动创建。
  • 划定作用域到这个项目的写时复制存储。没有其他项目能读取它的页面。
  • 在创建时固定的 Postgres 主版本。
  • 一个区域。如今每个项目都生存在单个家庭集群区域 (美国,裸金属);多区域在路线图上。

项目隔离

存储、WAL 和缓存按项目分区;项目之间没有共享的写入路径。来自不同 项目的端点无法触及彼此的存储,即使它们的计算 pod 被调度在同一个节点 上 —— 按项目的网络策略和存储认证令牌把守每一个页面请求。

这是您可以为合规和噪声邻居隔离所依赖的边界。项目内部的分支边界更软: 分支共享存储,并继承父分支的页面,直到它们发散。

命名

项目名是用户可见的标签。它们:

  • 必须是 1–63 个字符。
  • 匹配 ^[a-zA-Z][a-zA-Z0-9_-]*$。字母、数字、_-; 必须以一个字母开头。
  • 不要求全局唯一;在您的组织内唯一就足够了。

内部项目 id(prj_<24 hex>)是其他每个资源所引用的东西。标签是 给人看的。

Postgres 版本

您在创建时选择主版本。默认是 17。一旦设定,它就无法原地更改 —— 主版本升级是一次带外迁移,我们会在它落地时记录文档。对于 alpha, 请把版本当作不可变对待。

创建

在 web 控制台中,点击 New project,输入一个名称,选择 Postgres 主版本,并选择一个区域(下拉菜单默认为 Auto (nearest))。点击 Create。从 CLI:

keon projects create --name my-app --pg-version 17

控制平面会预配存储,创建 main 分支,并返回项目 id。端到端 通常需要不到两秒。

删除

删除一个项目会级联通过它拥有的每一个资源:

  1. 每个分支上的所有端点都被停止和移除。
  2. 所有分支被拆除。
  3. 项目的存储被卸载,其数据被排队等待异步压实并最终从对象存储中移除。

级联是不可逆的。没有撤销删除,并且在级联开始后,存储构件无法从控制台 恢复。如果数据很重要,请在删除前进行一次逻辑转储(pg_dump)。

keon projects delete <project-id>

CLI 会提示确认;在编写脚本时传入 --yes 以跳过。

相关

  • 分支 —— 一个项目的写时复制子级。
  • 端点 —— 挂接到一个分支的 Postgres 前端。
  • 连接字符串 —— 线缆格式。