tigerbeetle/docs/internals/ARCHITECTURE.md 在 main 分支 · tigerbeetle/tigerbeetle

主要观点:TigerBeetle 是一个用于高并发、写为主、高吞吐量、低延迟且强一致性和高耐久性工作负载的数据库,专注于金融交易。它是一个分布式系统,由六个副本组成,通过共识协议保证数据一致性,采用复制状态机模型,将数据存储在磁盘上的 LSM 树中,并使用多种技术确保代码正确性和性能优化。
关键信息

  • 问题陈述:针对传统数据库架构在处理金融交易等工作负载时的低效,TigerBeetle 旨在提供更优解决方案。
  • 概述:集群架构,主副本负责处理请求和复制准备,副本通过共识协议保持数据一致,数据以 LSM 树形式存储,通过超级块进行状态管理。
  • 设计决策:从第一原则出发设计,追求像哈希表一样快,不浪费耐久性,采用非交互式事务,单线程,静态内存分配,无依赖,使用 Zig 语言,保证确定性,进行模拟测试,遵循机械同情原则,批量处理,分离控制平面和数据平面,同步执行,拥抱并发,使用 io_uring,利用时间,直接 IO,灵活的 quorum,协议感知恢复,哈希链等。
    重要细节
  • 工作负载特点:非常竞争、并行和分片不佳,大多为写操作,需要高吞吐量、低延迟、强一致性和高耐久性。
  • 数据存储:以 LSM 树形式存储在磁盘上,每个 LSM 树存储固定大小的值,通过元编程配置 LSM 森林以提高性能和存储效率。
  • 设计原则:如静态内存分配确保系统有明确界限,避免依赖简化代码,确定性简化系统等。
  • 技术实现:使用 io_uring 进行 IO 操作,利用时间进行业务逻辑和内部实现,通过直接 IO 绕过操作系统缓存以确保正确性等。
  • 共识协议:采用灵活的 quorum,在不同情况下需要不同数量的副本参与,以保证集群的可用性和数据一致性。
  • 恢复机制:协议感知恢复,处理磁盘故障和数据损坏,使用 NACK 协议处理潜在损坏的准备。
  • 引用参考:列举了众多相关的技术文章和研究,为 TigerBeetle 的设计和实现提供了理论基础和借鉴。
阅读 9
0 条评论