一起来写个分布式 KV 存储抽象库吧
发布于 6 年前 作者 helloyou2012 4317 次浏览 来自 分享

最近在调研分布式 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 ???

回到顶部