https://natsbyexample.com/examples/os/intro/dotnet2
NATS 中的对象存储能力是在 Stream 之上的一种抽象,它将消息的主题视为类似键值对中的键,但是其中的内容可以跨越多个数据块。使得它支持大型数据。并且通常作为可读/可写流进行加载和读取。
比较来说,Key-Value 存储限制保存的数据量为 1M, 而对象存储没有这个限制。
注意:对象存储不是分布式存储系统。所有存储的文件需要适应目标文件系统。
它支持客户端应用程序创建并存储一组文件的存储桶(对应于流)。文件以块的形式存储和传输,允许通过 NATS 基础设施安全地传输任意大小的文件。
1. 创建对象存储管理器
使用 JSContext 来创建对象存储的管理器 NatsObjContext
2. 创建命名的对象存储
借助对象管理器来创建一个命名的对象存储。每个对象存储可以看做一个字典。
3. 检查对象存储的状态
使用对象存储的 GetStatusAsync() 可以检查它的状态
Output
4. 存储数据和元数据
使用 PutAsync() 将数据存储到对象存储中。除了数据本身之外,还可以附加描述数据的元数据。
如果重复使用相同的 Key 存储数据,新的数据将会覆盖旧的数据。
每块数据关联一个元数据的描述,可以通过它对数据进行说明。
Output
ObjectMetadata 有一个 Headers 的属性,支持字符串形式的键值对说明。
5. 提取存储的数据
使用键值来提取存储的数据。
Output
6. 删除对象存储
借助键值可以删除存储的数据。
7. 以字节流的方式存储和读取数据
可以使用字节流对象,而不是字节数组来存储和提取数据。
Output
8.管理对象存储
列出存储的数据
Output
- 监控对象存储中的变更
Output
- 使用 NATS CLI 管理对象存储
NATS CLI 提供了 object
命令管理对象存储
创建对象存储
保存文件
列出保存的对象
See: https://docs.nats.io/nats-concepts/jetstream/obj_store/obj_walkthrough