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秒)