我一开始以为快照就是个压缩包,打包节点状态然后别人下载解压就能用。但Dusk的做法完全不是这么回事。
核心机制是“签名快照”。 快照本身是不可变的,但标签(比如latest、daily)是可变的。存储桶、HTTP端点、本地目录都只是传输通道,不是信任根。客户端自己决定信任哪些配置好的源和Ed25519签名密钥。
这句话我翻了两遍才理解它想表达什么。第一遍读完没觉得有什么特别的,但关掉页面之后越想越不对劲——没有硬编码的公钥,那官方怎么保证用户下载的是真正的官方快照?又翻回去仔细看才发现,官方只是“可以配置为源”,不是“默认信任”。
大部分项目的快照工具是“你下载就行”,默认信任发布者。Dusk的设计是:工具本身不信任任何人,你自己决定信任谁的签名。你想用官方快照?配置官方的公钥。你想用自己的快照?用自己的密钥签名就行。没有任何Dusk的桶名、端点或公钥是被硬编码在代码里的。
另一个让我觉得设计得很细的地方是停机时间的处理。 stopped-pack模式里,Rusk只停止足够长的时间来创建一个经过验证的本地快照。具体做法是:停机期间只做一件事——生成本地快照。上传、发布、索引重建全部在节点重启之后才进行。停机窗口跟网络速度无关,只跟本地磁盘I/O有关。
v0.1.0支持的命令从打包到验证到发布到恢复:pack、verify、publish、promote、list、restore、gc、rebuild-index,外加plan、watch、capture这套编排流程。
翻完文档我最大的感受是:这个工具解决的不只是“怎么备份节点”,是“怎么在不信任任何人的前提下备份和恢复节点”。签名快照+客户端自主选择信任源,这套设计比单纯提供一个下载链接要重得多,也更接近Dusk“合规隐私”的底层逻辑——不靠信任,靠验证。#dusk $DUSK @Dusk
核心机制是“签名快照”。 快照本身是不可变的,但标签(比如latest、daily)是可变的。存储桶、HTTP端点、本地目录都只是传输通道,不是信任根。客户端自己决定信任哪些配置好的源和Ed25519签名密钥。
这句话我翻了两遍才理解它想表达什么。第一遍读完没觉得有什么特别的,但关掉页面之后越想越不对劲——没有硬编码的公钥,那官方怎么保证用户下载的是真正的官方快照?又翻回去仔细看才发现,官方只是“可以配置为源”,不是“默认信任”。
大部分项目的快照工具是“你下载就行”,默认信任发布者。Dusk的设计是:工具本身不信任任何人,你自己决定信任谁的签名。你想用官方快照?配置官方的公钥。你想用自己的快照?用自己的密钥签名就行。没有任何Dusk的桶名、端点或公钥是被硬编码在代码里的。
另一个让我觉得设计得很细的地方是停机时间的处理。 stopped-pack模式里,Rusk只停止足够长的时间来创建一个经过验证的本地快照。具体做法是:停机期间只做一件事——生成本地快照。上传、发布、索引重建全部在节点重启之后才进行。停机窗口跟网络速度无关,只跟本地磁盘I/O有关。
v0.1.0支持的命令从打包到验证到发布到恢复:pack、verify、publish、promote、list、restore、gc、rebuild-index,外加plan、watch、capture这套编排流程。
翻完文档我最大的感受是:这个工具解决的不只是“怎么备份节点”,是“怎么在不信任任何人的前提下备份和恢复节点”。签名快照+客户端自主选择信任源,这套设计比单纯提供一个下载链接要重得多,也更接近Dusk“合规隐私”的底层逻辑——不靠信任,靠验证。#dusk $DUSK @Dusk