DataFly Lib

DataFly Lib

最初为Adrenaline mod制作的异步I/O简单库

Datafly

一个用于 Fly 的 Minecraft 模组的共享异步 I/O 库,提供集中化、高性能的磁盘持久化能力。

功能特性

  • 所有模组共用一个线程池——无浪费的线程,无重复的 I/O 代码
  • 可从任何线程写入数据,并通过 DataTask<T> 获取结果——无阻塞,无回调地狱
  • 读后写保证——读取始终返回最新提交的值,即使尚未写入磁盘
  • 对同一键的突发写入进行合并——仅时间窗口内的最后一个值实际写入磁盘
  • 通过 tmp -> fsync -> rename 实现原子写入——崩溃时不会出现半写入或损坏的文件
  • 缓冲区内存不足时紧急启用 gzip 压缩——用 CPU 换取堆空间
  • 将过大的写入溢出到临时假脱机目录,而非阻塞或丢弃数据
  • 崩溃恢复——下次启动时,残留的假脱机文件会被重新导向其目标
  • 可插拔编解码器系统——支持 JSON、NBT、TOML、YAML、原始字节,或自定制
  • 每个模组可独立配置写入器——各模组自行控制堆限制、编解码器、合并窗口和缓存大小
  • 可选的 LRU 读取缓存——对热键完全跳过磁盘读取
  • update() —— 原子读取-修改-写入,在整个周期内持有写入锁
  • computeIfAbsent() —— 一行原子调用实现创建或更新
  • 与世界无关——可在主菜单、客户端、专用服务器等任何位置运行