#cache #nats #key-value #wasmcloud #api-bindings

wasmcloud-nats-kvcache

为wasmCloud提供键值存储功能,通过NATS复制数据变化

3个不稳定版本

0.5.1 2021年3月18日
0.5.0 2021年3月3日
0.4.0 2021年2月11日

#1327 in WebAssembly

Download history 122/week @ 2024-03-13 85/week @ 2024-03-20 88/week @ 2024-03-27 162/week @ 2024-04-03 98/week @ 2024-04-10 94/week @ 2024-04-17 92/week @ 2024-04-24 84/week @ 2024-05-01 86/week @ 2024-05-08 48/week @ 2024-05-15 40/week @ 2024-05-22 96/week @ 2024-05-29 140/week @ 2024-06-05 126/week @ 2024-06-12 63/week @ 2024-06-19 117/week @ 2024-06-26

每月460次下载
2个Crate中使用(通过wasmcloud-host

自定义许可证

41KB
888

crates.io Rust license documentation

WasmCloud键值存储提供者(NATS分布式键值缓存)

这是一个内存中的键值缓存,通过在特定NATS主题上复制状态变化进行分布式。在“裸NATS”版本的此提供者中,可能会发生消息丢失,因此缓存值可能从主机到主机不同步。

注意⚠️

建议仅在开发、调试和研发目的下使用此键值存储,不要将其用于生产级分布式缓存,除非周期性节点偏差是可接受的用例(例如,在缓存未命中时重新查询数据或时间延迟/心跳同步是可接受的)。此提供者将尝试使用高水位标记加事件溯源来同步全局状态,但该系统并非完美无缺。

根据wasmcloud:keyvalue合约,此提供者存储的所有值(除原子值外)均视为字符串。Sets被视为字符串集合等。原子值不能保证全局原子性。增量减量将根据当时已知的(本地)值进行,这意味着并发、分布式所谓的“原子”更新可能导致不一致的值。

此外,缓存不是按actor隔离的。这不是一个多租户缓存。如果两个不同的actor绑定到此提供者的同一命名链接实例,请求相同的键,他们将得到相同的值。如果您需要分割分布式缓存,请在启动时提供不同的链接名称。

此提供程序将接收来自第一个链接角色的配置,并使用这些数据连接到NATS。为了满足“幂等提供程序”的要求,将忽略所有后续提供链接配置的尝试。如果在初始链接配置期间未提供NATS连接字符串信息,则此提供程序将有效地像一个单独的、独立的内存缓存一样运行,不会复制或订阅任何状态更改。

另一项警告 ⚠️

不要依赖此提供程序在响应突变操作时返回有意义的数据。例如,根据合同,原子添加操作返回一个表示新值的整数。出于优化目的,此提供程序将返回所有响应的默认(空)版本。这是基于这样一个观点:当你将数据设置在这个分布式缓存中时,你并不想立即检索该值。

依赖项

~20–32MB
~559K SLoC