TigerBeetle:世界上最快的会计数据库

💡 原文中文,约6900字,阅读约需17分钟。
📝

内容提要

TigerBeetle是一个高性能、安全的财务会计数据库,专为金融服务的未来提供动力。它采用哈希链加密校验和等技术确保数据安全,通过批处理和零系统调用网络和存储I/O提高效率。TigerBeetle具有高可用性和分布式容错,消除了灰色故障延迟峰值。它为账本验证、余额跟踪、持久性和复制提供完整解决方案。

🔎

延伸解读

安全机制:超越传统数据库的容错设计

TigerBeetle 采用哈希链加密校验和、直接 I/O 和集群时间等技术,旨在检测并修复数据篡改、潜伏扇区错误和缓存一致性问题。与 MySQL 或 Redis 相比,它遵循更严格的安全标准,通过复制状态机和 Viewstamped Replication 协议实现严格可串行化,并消除脑裂风险。这些设计使其能够应对磁盘固件错误和单点故障,为关键任务提供更高持久性。

性能优化:批处理与零系统调用 I/O

TigerBeetle 通过批处理、零复制直接 I/O 和 io_uring 实现零系统调用网络与存储操作,减少上下文切换和缓存污染。其固定大小的数据结构针对缓存行对齐优化,实现零反序列化。利用灵活仲裁,同步复制仅需最多两个远程副本,在保持严格可串行性的同时提高写入可用性并降低部署成本。这些技术共同降低了延迟,即使在高负载下也能保持高性能。

架构创新:从 LMAX 到分布式副本

TigerBeetle 基于 LMAX 架构改进,删除了本地日志步骤,改为并行复制到 3/5 分布式副本的法定数量,然后应用事件到内存状态并确认客户端。这种设计消除了领导者本地磁盘和网络链路中的灰色故障,并采用每核线程和单写入器原则避免多线程协调开销。与 LMAX 相比,它更专注于分布式容错和低延迟自动领导者选举。

数据结构:事件与状态的固定大小设计

TigerBeetle 使用固定大小的账户和转账数据结构,均为 128 字节,以优化性能和简化性。事件不可变且必须按确定顺序执行,确保可重玩性和审计能力;状态通过重放事件得到,仅包含账户余额。这种设计将会计逻辑内置于数据库,使应用层保持无状态,同时支持两阶段转账和余额跟踪,为金融服务提供完整解决方案。

❓

Q&A

TigerBeetle 是什么?它主要用来做什么?

TigerBeetle 是一个高性能、安全的财务会计数据库,专为金融服务设计,用于构建下一代金融应用,提供账本验证、余额跟踪、持久性和复制等完整解决方案。

TigerBeetle 如何保证数据安全?

TigerBeetle 采用哈希链加密校验和检测并修复数据篡改,能处理和恢复潜伏扇区错误,检测并修复固件读/写错误扇区的磁盘损坏或错误 I/O,并使用直接 I/O 避免缓存一致性错误。

TigerBeetle 的性能为什么比 MySQL 和 Redis 高?

TigerBeetle 使用小型固定大小的数据结构、批处理、零复制直接 I/O、io_uring 零系统调用网络和存储 I/O,以及灵活仲裁减少同步复制成本,从而降低延迟并提高吞吐量。

TigerBeetle 的架构是怎样的?

TigerBeetle 是一个复制状态机,基于 LMAX 架构改进,采用三个步骤:将传入事件安全复制到分布式副本的法定数量,然后将事件应用到内存状态,最后向客户端确认。它使用每核线程设计和单线程执行。

TigerBeetle 中的事件和状态数据结构是什么?

事件是不可变的数据结构,必须按确定顺序执行以确保可重玩性,并保留用于审计。状态是捕捉事件结果的数据结构,总是可以通过重放所有事件得到。TigerBeetle 提供账户作为状态数据结构。

TigerBeetle 如何实现高可用性和容错?

TigerBeetle 通过 Viewstamped Replication 和共识协议实现同步复制和低延迟自动领导者选举,消除脑裂风险。它使用灵活仲裁减少同步复制成本,并具有故障感知能力,能从本地存储故障中恢复。

🏷️

标签

➡️

继续阅读