The First Idempotency Key5 days agohttps://hatchet.run/blog/first-idempotency-key作者调查了幂等键的第一个实例,幂等键是确保重复API消息被忽略的唯一标识符。Claude AI最初声称Stripe在2011年左右引入了幂等键,但后来撤回,指出Stripe大约在2015年普及了该头部。早期的概念包括Amazon EC2的ClientToken和2005年使用唯一POST URL的POST Once Exactly规范。像OASIS ebXML和WS-ReliableMessaging这样的传输级标准也旨在通过消息去重实现恰好一次处理。更多...
Consensus Board Game5 days agohttps://matklad.github.io/2026/03/19/consensus-board-game.html共识从根本上基于简单多数投票,但可能在投票分裂时陷入僵局(例如,两红、两蓝、一绿)。为解决分裂投票,会指定一个领导者选择一种颜色,其他人则批准,但领导者可能不可用。解决方案涉及在二维棋盘列上同时进行多次投票,并轮流指定领导者,每列独立运作。如果不同列对不同的颜色形成了多数,则该棋盘无效;安全条件要求任何两个形成多数的列必须就同一种颜色达成一致。更多...
<antirez>5 days agohttp://antirez.com/news/78队列通过使用生产者(提交任务)和消费者/工作者(执行任务),将计算拆分为调度和执行。至多一次交付在处理前确认消息,如果工作者失败则存在消息丢失的风险。至少一次交付在处理后确认,允许多次交付,但在实践中更倾向于避免数据丢失。至少一次系统受益于最终一致的数据结构(例如CRDT),而不是强一致性,从而提高性能和分区容忍性。更多...
<antirez>5 days agohttp://antirez.com/news/79Redis集群开发始于2011年3月,但由于早期失误和优先级变化,花了近四年时间才发布首个候选版本(3.0.0-rc1)。该项目最初因为扩展被视为关键而仓促启动,但Redis本身还不够成熟,导致多次暂停以专注于更基础的功能,如持久化、复制和延迟优化。作者在开始时缺乏分布式编程知识,导致最初设计有缺陷,后来在学习基础知识后重新设计了方案。Redis集群提供数据分片、在线重新分片和故障转移功能,但只保证最终一致性,分区期间可用性受限——它既不是CP系统也不是AP系统。更多...
<antirez>5 days agohttp://antirez.com/news/88Disque是一个新的消息代理系统,由Redis的创建者antirez(Salvatore Sanfilippo)作为副项目开发。它源于观察到许多开发者将Redis用作消息队列,尽管Redis并未针对不可变消息进行优化。Disque旨在填补过于简单和过于复杂的消息代理之间的空白,提供一个入门门槛低的‘消息传递的Redis’。该系统默认保证至少一次投递,每条消息可选最多一次语义,使用确认和自动重试。更多...
Distributed System Is Slower Than a Laptopa month agohttps://codegood.co/writing/your-distributed-system-is-slower-than-a-laptop2015年一篇论文显示,单线程笔记本电脑在大规模图处理任务上胜过了分布式系统。许多分布式系统即使动用数百个核心也未能超越单个合格线程,导致了高COST(超越单线程的配置成本)。公司在单机解决方案更简单、更便宜且性能更好的情况下,仍花费数百万购买分布式系统。硬件进步使得单台服务器变得极为强大,但“默认分布式”的思维定式依然毫无根据地持续存在。更多...
Cloudflare Meerkat - Globally distributed consensus25 days agohttps://blog.cloudflare.com/meerkat-introduction/Cloudflare 需要一个分布式共识服务来管理全球控制平面状态,确保即使在网络不可预测的情况下也能保持强一致性和高可用性。基于 Raft 的系统在广域网中表现不佳,因为存在领导者依赖和超时问题,导致在领导者故障或网络退化时出现可用性问题。Meerkat 是 Cloudflare 使用 QuePaxa 算法构建的新共识服务,允许所有副本执行写入操作而无需超时,从而提高了容错能力和可用性。Meerkat 为键值存储等应用保证了线性一致性,确保所有读取操作都能看到之前的写入,即使跨越分布式副本也是如此,它使用共识日志来同步事件。更多...
Postgres transactions are a distributed systems superpowera month agohttps://www.dbos.dev/blog/co-locating-workflow-state-with-your-data工作流和应用数据可部署于同一Postgres数据库中,支持在单一事务内完成更新,从而简化容错机制。同库部署允许事务性步骤通过将数据库更新与检查点合并至单个事务中,实现精确一次执行语义,无需额外幂等性逻辑。可在同一数据库内通过用户定义函数实现事务性工作流发件箱模式,确保原子化更新与通知,相比独立系统显著降低运维复杂度。DBOS提供基于Postgres持久化执行的技术工具,助力构建可扩展、高可靠的系统。
Lunatic: An Erlang-inspired runtime for WebAssemblya month agohttps://lunatic.solutions/Lunatic是一个受Erlang启发的开源WebAssembly运行时环境。它提供了隔离的轻量级进程,以实现高并发性和容错能力。特性包括通过JIT编译Wasm实现高性能、通过能力限制确保安全性以及分布式集群支持。应用程序可跨架构和操作系统移植,一次编译为WebAssembly即可。更多...