推荐 Raft Engine:高性能的嵌入式存储引擎

推荐 Raft Engine:高性能的嵌入式存储引擎

项目地址:https://gitcode.com/tikv/raft-engine

项目简介

Raft Engine 是一个基于 Rust 开发的高度优化的持久化存储引擎,灵感来源于 Bitcask,专为 TiKV 存储 Multi-Raft 日志而设计。该引擎将高效率和低写放大率相结合,以满足分布式数据库对性能和稳定性的严格要求。与 TiKV 集成后,Raft Engine 成为了支持强一致性的关键组件。

技术分析

Raft Engine 的核心特性包括内存中的 memtable 和日志文件。每个 Raft 组都有自己的 memtable,用于存储键值对以及日志条目的文件位置。在磁盘上,数据按顺序写入活动的日志文件,并在达到预设阈值时进行旋转。不同的 Raft 组共享同一个日志流。

写操作

Raft Engine 提供了原子性写入,允许批量提交更改并支持同步和非同步写入。批量写入分为三个步骤:

  1. 可选地压缩日志条目。
  2. 将数据写入日志文件(多线程协同,其中一个线程成为队列领导者,负责整个组的写入)。
  3. 将更改应用到 memtable。

垃圾回收

当本地状态机应用完更改后,相应的日志条目可以被逻辑上地从引擎中清除。垃圾回收过程是协作式的,依赖于用户调用 purge_expired_files() 方法来控制何时合并和删除无用的日志文件,释放存储空间。

应用场景

Raft Engine 适用于需要高可用性和强一致性的分布式系统,尤其是那些利用 Raft 协议的数据库和存储解决方案。例如,在 TiKV 中,它作为底层日志引擎,保障了分布式事务处理的高效和可靠。此外,由于其轻量级设计,也适合作为任何需要快速读写的嵌入式存储解决方案。

项目特点

  • 简洁的 API:提供用于存储和检索连续索引的 protobuf 日志条目的接口。
  • 键值存储:每个 Raft 组有自己的键值存储空间。
  • 低写放大率:通过优化的设计降低写操作的资源消耗。
  • 协同 GC:用户控制垃圾回收时机,反馈旧日志信息以便及时紧凑。
  • 压缩支持:支持 lz4 压缩,节省存储空间。
  • 可扩展性:支持文件系统扩展。

要开始使用 Raft Engine,请将其添加至你的 Cargo.toml 文件:

[dependencies]
raft-engine = "0.4"

Raft Engine 还提供了多个功能选项,如用于调试的 scripting 功能,夜间构建的 nightly 功能等。

通过其简单的 API 和高效的性能,Raft Engine 是任何寻求强大持久化存储解决方案的开发者的理想选择。如果你正在寻找一个可靠的、高性能的 Raft 日志存储引擎,那么 Raft Engine 定会成为你的得力助手。

项目地址:https://gitcode.com/tikv/raft-engine

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gitblog_00053

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值