Deno Deploy 上的 KV
Deno Deploy 现在提供了一个内置的无服务器键值数据库,名为 Deno KV。
此外,Deno KV 在 Deno 本身内也可用,利用 SQLite 作为其后端。自 Deno v1.32 起,此功能已可通过 --unstable
标志访问。了解更多关于 Deno KV 的信息。
一致性 跳转到标题
默认情况下,Deno KV 是一个强一致性数据库。它提供最严格形式的强一致性,称为外部一致性,这意味着
- 可串行化:这是事务的最高隔离级别。它确保并发执行多个事务的结果与按顺序一个接一个执行事务的系统状态相同。换句话说,可串行化事务的最终结果等同于这些事务的某些顺序。
- 线性化:这种一致性模型保证了操作(例如读取和写入)看起来是即时的并且实时发生。一旦写入操作完成,所有后续的读取操作将立即返回更新后的值。线性化确保了操作的强实时排序,使系统更可预测且更易于推理。
同时,您可以通过在单个读取操作上设置 consistency: "eventual"
选项来选择放宽一致性约束。此选项允许系统从全局副本和缓存提供读取服务,以实现最小延迟。
以下是在我们顶级区域观察到的延迟数据
区域 | 延迟(最终一致性) | 延迟(强一致性) |
---|---|---|
弗吉尼亚北部 (us-east4) | 7毫秒 | 7毫秒 |
法兰克福 (europe-west3) | 7毫秒 | 94毫秒 |
荷兰 (europe-west4) | 13毫秒 | 95毫秒 |
加利福尼亚 (us-west2) | 72毫秒 | 72毫秒 |
香港 (asia-east2) | 42毫秒 | 194毫秒 |
分布式队列 跳转到标题
无服务器分布式队列在 Deno Deploy 上可用。有关更多详细信息,请参阅 Deno Deploy 上的队列。
从 Deno Deploy 外部连接到托管数据库 跳转到标题
您可以从 Deno Deploy 外部的 Deno 应用程序连接到您的 Deno Deploy KV 数据库。要打开托管数据库,请将 DENO_KV_ACCESS_TOKEN
环境变量设置为 Deno Deploy 个人访问令牌,并将数据库的 URL 提供给 Deno.openKv
const kv = await Deno.openKv(
"https://api.deno.com/databases/<database-id>/connect",
);
请查看 文档,了解连接到远程 KV 数据库的协议规范
数据分发 跳转到标题
Deno KV 数据库在至少 6 个数据中心之间复制,跨越 3 个区域(美国、欧洲和亚洲)。一旦写入操作被提交,其变更将持久存储在主区域内的至少两个数据中心中。异步复制通常会在 10 秒内将这些变更传输到其他两个区域。
该系统旨在容忍大多数数据中心级别的故障,而不会发生停机或数据丢失。恢复点目标 (RPO) 和恢复时间目标 (RTO) 有助于量化系统在各种故障模式下的弹性。RPO 表示以时间衡量的最大可接受数据丢失量,而 RTO 表示在故障后将系统恢复到正常运行所需的最大可接受时间。
- 主区域中一个数据中心丢失:RPO=0(无数据丢失),RTO<5 秒(系统在 5 秒内恢复)
- 副本区域中任意数量的数据中心丢失:RPO=0,RTO<5 秒
- 主区域中两个或更多数据中心丢失:RPO<60 秒(数据丢失少于 60 秒)