coinbase 事故相关

2026 年 5 月 7 日 23:50 UTC,AWS us-east-1 一栋数据中心机房里多台冷却机同时失效,机柜温度飙升。几分钟后,Coinbase 的现货、Prime、International
和衍生品交易所——几乎全部撮合通道——开始陆续不可用,持续数小时。

事故第二天,CEO Brian Armstrong 在 X 上简短回应:

几小时后,Coinbase 工程负责人 @rwitoff 发布了初版技术总结。

要看懂这几个报告,要先了解一下 coinbase 这种公司的架构:

文中提到的撮合引擎使用了 java 的 aeron cluster,这个一个用类 raft 算法实现的集群库,能保证个别副本挂掉时不影响整体集群的功能。

coinbase 大概率买了 aeron 的商业版,所以,aeron 本身在其它 az 还有一个 standby 的备份集群。

交易管理订单和资产在 coinbase 里应该是分了两个模块,一个是 order management system,另一个是清算,图上叫 balance/ledger。

订单成交后,撮合会把成交消息发出来,结果 kafka 集群到 balance/ledger 服务,进而更新用户余额。

这里根据 coinbase 两位高管的公开言论,撮合系统虽然有其它 AZ 的 standby,但是因为不能破坏用户的 colocation,所以不能进行 AZ 切换。这里说明他们的 colocation 程序可能只部署了一份。。。(colocation 其实就是交易所给机构提供的低延迟链路,机构会把自己的做市程序部署上去)。

而 kafka 这一部分就比较奇怪了,工程负责人说他们的 replication factor 是没问题的,那按照常识,这里应该 rf 至少是 3,然后 min.insync.replica 应该是 2。在不考虑成本的情况下,kafka 的三个副本是可以部署在不同的 AZ 的:

这种情况下,任何一个 AZ 挂了,kafka 只要 leader 切换到可用的 az 就可以。因为清算链路延迟要求没那么高,所以在事故时跨 AZ 也是可以接受的。

但是一般的公司可能不会这么干,因为把三副本部署在三个 AZ 的话,会有高昂的跨 AZ 流量费。

所以很多公司可能会为了节省成本,把两个副本部署在一个 AZ 里,或者三个副本都在一个 AZ 里。

但是按说 coinbase 不是这么穷的公司吧,所以这里就非常奇怪。

Xargin

Xargin

If you don't keep moving, you'll quickly fall behind
Beijing