首页| 论坛| 搜索| 消息
主题:暴力撬死锁!rsync 算法是如何被“逼”出来的?
爱我中华发表于 2026-07-19 13:43
天才的设计”很多人了解完 rsync 会有一个感受:所有步骤拆开看,每一步都不难理解。 滚动校验和?就是加减法。哈希表查找?数据结构课本里就有。MD4?现成的。但这就是最妙的地方:它用的全是“现成的砖”,但搭出了一个从来没人想到过的建筑。在 rsync 之前,“远程文件同步”这件事的解法大致只有两种:传整个文件(简单粗暴,但贵)。传 diff/patch(需要两个文件都在同一端,实际上自相矛盾)。rsync 开辟了第三种路径:只传指纹清单 + 不匹配的碎片,让远端自己拼回去。 这个思路在今天看来理所当然,但在 1996 年之前,全球互联网上没有任何工具这样做。而让它能跑起来的”发动机”:滚动校验和,更是一个教科书级别的”换个角度看问题”:别人看到的是“我需要算两百万次校验和,每次 O(n),太慢了”。他们看到的是“校验和可以不是’算’出来的,而是’更新’出来的”。不是更努力地算,而是换一种不需要算的方法。结尾今天,rsync 已经快 30 岁了。它躺在每一台 Linux 服务器里,躺在每一个 MacOS 的备份流程里,躺在无数云存储的同步引擎里。每天有数以亿计的文件通过它的算法思想完成传输。而它只需要传输平均 5% 的数据。没有提出任何新的数学定理,没有发明任何新的密码学原语。它只是把几个已有的工具——滚动校验和、MD4、哈希表——以一种前人从未尝试过的方式组合在一起,解决了互联网时代最基础的一个工程问题:如何在两个彼此看不到完整真相的节点之间,用最小的代价达成一致。而 rsync 做的,就是把这句话翻译成了校验和。后记:rsync 的作者 Andrew Tridgell 后来还做了另一件大事——他逆向工程了微软的 SMB 协议,写出了 Samba,让 Linux 和 Windows 可以在同一个网络里共享文件。他的风格一以贯之:在所有人都认为“这不可能”或者“只能传整个文件”的地方,他蹲下来看了看,说:不对,我们可以只传校验和。作者丨最后的绅士来源丨网址:https://zhuanlan.zhihu.com/p/2040205763549851895dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn
上一页  (3/3)
回帖(11):
11 # ddwg0818
07-20 12:13
支持一下大佬!
10 # ddwg0818
07-20 12:13
必须支持一下!
9 # ddwg0818
07-20 12:13
感谢大佬分享!
8 # z3960
07-20 05:23
了解信息
7 # z3960
07-20 05:23
来看一看
6 # huwg
07-20 01:05
谢谢分享
5 # huwg
07-20 01:05
了解一下
4 # huwg
07-20 01:05
来看看
3 # srwam
07-19 20:34
看后续
2 # srwam
07-19 20:34
了解一下

全部回帖(11)»
最新回帖
收藏本帖
发新帖