#object #read #latency #constant #random #scale #blob

app blobd

为大量随机读取和小对象设计的Blob存储,具有恒定的延迟

4 个版本 (2 个破坏性版本)

0.2.1 2023年4月13日
0.2.0 2023年4月7日
0.1.0 2023年4月6日
0.0.1 2023年3月28日

#842 in 并发

SSPL-1.0

105KB
2.5K SLoC

blobd

  • 可扩展至数百万个随机并发部分读取,覆盖数万亿对象(小型或大型),在恒定的磁盘级延迟下。
  • 异步复制和事件流。
  • 适用于高传输和创建速率以及许多小对象的批量创建API。
  • 支持CORS、范围请求、预签名URL和HTTP/2的HTTP RESTful API。

设计

  • 设备上的可配置固定大小哈希表,堆上对象的链表。整个设备映射到内存。
  • 优化读取,然后创建,然后删除。无法列出对象。
  • 创建一个对象,然后并发地以16 MiB的部分写入其数据,然后提交。
  • 对象提交后不可变。目前不支持版本控制。提交时,对象替换所有具有相同键的其他对象(不是创建时)。
  • 只存储与对象相关的大小。不收集其他元数据,也无法设置自定义元数据。
  • 设备必须小于256 TiB。对象限制为1 TiB。存储对象的最大峰值数量约为140万亿。
  • 未提交的对象在7天后可以删除。删除对象时,对象使用的空间可能不会立即释放。

历史

该项目以前称为 Turbostore,完全用C编写;您仍然可以在这里看到代码。

依赖项

~15–24MB
~339K SLoC