一起来写个分布式 KV 存储抽象库吧
最近在调研分布式 KV 数据库,无意间发现了 docker/libkv 这个库,于是想仿照写一个类似的通用库,这样无论选择哪个 KV 存储都不影响各个系统。我查了下 npm 看看有没有类似的库还真查到一个node-libkv,但是已经好久没更新了而且是 WIP 状态,因此决定自己写一个。
仓库地址:https://github.com/kvxjs/kvx
目前 consul 部分基本写完,Etcd 和 Zookeeper 还没写,有没有感兴趣的小伙伴可以一起加入我们来贡献代码呀?
Calls | Consul | Etcd | Zookeeper |
---|---|---|---|
Put | √ | ||
Get | √ | ||
Delete | √ | ||
Exists | √ | ||
Watch | √ | ||
WatchTree | √ | ||
Lock | √ | ||
List | √ | ||
DeleteTree | √ | ||
AtomicPut | √ | ||
Close | √ |
来个 Demo 吧:
import kvx from 'kvx';
const kv = kvx('consul');
async function test() {
const key = 'hello';
const value = 'world';
await kv.put(key, value);
const pair = await kv.get(key);
const pairs = await kv.list(key);
const watcher = kv.watch(key);
watcher.on('change', (err, data) => {
console.log(data);
watcher.end();
});
}
7 回复
有点好奇楼主这个数据库的使用场景,可否细致科普一下? 比如和redis的异同,优势等等?
@aojiaotage 这是一个通用库,后端可以是任意 kv 数据库,也可以加 redis,目前想先实现 consul、etcd、zookeeper
confd 是不是这个类型的库
[CNodeMD]
@dbit-xia 不太类似,confd侧重点在管理配置,kvx 侧重存储,可以在 kvx 之上做类似 confd 的事情。
目前是用get和set比较多 所以我选择了nconf 支持自己写拓展 file,redis,env…
2132131231231231
@aizhoujin 你是一个 AI ???