← 最新论文
💻 computer science

Benchmarking Real-Time Database Synchronisation Architectures: REST Polling, WebSocket Push, and CockroachDB CDC

本文通过一项受控基准测试,对比了 REST 轮询、WebSocket 推送以及 CockroachDB CDC 架构在实时数据库同步方面的表现,结果表明,虽然 WebSocket 推送提供了最低的中位数延迟,且 REST 轮询提供了可预测的有界延迟,但 CDC 虽然在中位数方面具有竞争力,却因批处理机制和特定的协议不兼容问题而导致了显著的长尾延迟。

原作者: Kunal Dhanda

发布于 2026-08-18
📖 1 分钟阅读☕ 轻松阅读

原作者: Kunal Dhanda

原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

在现代软件的世界中,人们越来越渴望那些即使在没有互联网连接时,也能感觉像是运行在本地设备上的应用程序。这种通常被称为“本地优先”(local-first)的软件方法,允许你在离线时编辑文档或更新列表,待连接恢复后再将更改发送到中央服务器。挑战在于连接恢复的那一刻:计算机如何决定哪个版本的数据是正确的,以及如何在不让用户等待的情况下,尽可能快地更新中央服务器?为了使这一过程顺畅运行,系统需要一种可靠的方式来监听新信息并即时交付。如果更新太慢,用户会感到延迟;如果系统过于复杂,则会消耗电池或导致崩溃。工程师的核心问题在于如何构建这种监听机制:是让设备不断询问服务器是否有变化,还是让服务器立即向外广播变化,亦或是让数据库本身保留一份可供稍后读取的操作日志?

印度理工学院卡拉格普尔分校的一位研究人员着手对这三种常见的策略进行并排测试,以观察在受控环境下哪种策略的表现实际上最好。该研究对比了三种方法:一种是客户端按固定时间间隔检查更新的方法;一种是服务器通过永久连接即时推送变化的方法;以及一种是数据库向订阅者流式传输变更日志的方法。为了确保测试公平,研究人员构建了三个在用户看来完全相同、但内部机制不同的系统。其中一个系统使用标准数据库配合简单的“签到”循环;另一个使用相同的数据库,但添加了一个在发生变化时触发信号的触发器;第三个系统则使用了另一种旨在流式传输其自身历史记录的分布式数据库。其目标是测量用户所做的更改通过系统传输并在监听器屏幕上显示的精确时间,测试范围涵盖了从单个用户到五十个用户同时写入的情况。

结果清晰地描绘了每种方法在压力下的表现。依靠服务器通过永久连接即时“大声喊出”变化的系统被证明是最快的。在最佳情况下,变化仅需两毫秒即可出现在监听器的屏幕上,即使在五十人同时写入时,延迟也极少超过六十三毫Milliseconds。这种方法保持了极其稳定的速度,即使是最慢的更新也在不到四分之一秒内到达。依赖于客户端每百毫秒请求一次更新的方法虽然可预测,但速度较慢。由于客户端必须等待轮到自己询问,平均延迟约为六十毫秒,但它永远无法比两次检查之间的时间间隔更快。当许多用户同时写入时,这种等待时间会增加,将平均延迟推高到一百毫秒以上。使用数据库内部变更日志的系统表现则毁誉参半。虽然典型的更新到达得很快(通常在不到一秒内),但该系统在处理最慢的几次更新时遭遇了严重的延迟。偶尔,一个变化会花费超过两秒钟才到达,在某些情况下,延迟甚至达到了三秒半以上。

研究人员发现,日志系统中出现最慢更新的原因并非日志记录本身的想法有误,而是由于特定软件的连接方式导致的。该系统使用了一种变通方法来读取数据库日志,因为标准的连接工具无法正确理解数据库的语言。这种变通方法要求在每次连接中断时都启动一个新进程,这为延迟增加了一到四秒的沉重惩罚。如果没有这个特定的技术障碍,基于日志的方法可能会表现得好得多,但在本次测试中,长延迟使其不适用于用户期望即时反馈的应用场景。研究还证实了关于“检查法”的一个简单规则:两次检查之间的等待时间越长,平均延迟就越大。如果系统每五十毫秒检查一次,平均等待时间约为三十六毫秒;如果五百毫秒检查一次,平均等待时间则会跃升至三百毫秒以上。

这些发现为构建需要保持同步的软件提供了实用的指南。对于对速度要求极高的应用,例如用户实时共同协作的编辑工具,由服务器即时推送变化的方法是明确的选择。它提供了最低的延迟和最一致的性能,即使在许多人同时使用系统时也是如此。客户端定期检查更新的方法对于那些可以接受数百毫秒延迟、或者维持连接较为困难(例如移动设备为了节省电量)的简单应用来说是一个可靠的选择。而流式传输数据库日志的方法对于移动大量数据或创建备份非常强大,但本次测试的具体实现对于交互式使用来说过于缓慢且不可预测。研究结论指出,虽然这三种方法都有效,但最佳选择完全取决于优先级是瞬时响应性还是操作的简易性。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →