前言
etcd
是一个高可用的键值存储系统,用于在分布式系统中存储配置和服务发现信息。etcd3
是其第三版,是一个由 CoreOS 社区开发的分布式的键值存储系统。@hapiness/etcd3
是基于 etcd3-node
基础上开发的适用于 Node.js 的 etcd3
客户端库,其提供了更熟悉 Node.js 编程的 API 以及优秀的 TypeScript 支持。
本文将通过详细的使用教程,为大家介绍 @hapiness/etcd3
的使用方法。
安装 @hapiness/etcd3
使用 npm 安装 @hapiness/etcd3
:
npm i @hapiness/etcd3
连接到 etcd
在使用 @hapiness/etcd3
前,需要先连接到 etcd。
import { Etcd3 } from '@hapiness/etcd3'; const etcd = new Etcd3({ hosts: ['localhost:2379'] // etcd 服务地址 });
Etcd3 构造函数接收一个配置对象,可配置字段包括:
hosts
:{string[]}
etcd 服务地址,格式为http(s)://hostname:port
,多地址时传入数组。默认值为:['127.0.0.1:2379']
credentials
:{ object }
etcd 认证证书。此处不做介绍。
基本操作
以下是 @hapiness/etcd3
提供的基本操作API:
put
添加一个键值对。
await etcd.put('key').value('value')();
put
:指定操作类型为put
key
:指定键名value
:指定键值
get
根据键名获得其对应的值。
const res = await etcd.get('key').string(); console.log(res); // value
get
:指定操作类型为get
key
:指定键名string
:以字符串形式返回值,其他返回方式见后文
watch
监听某一个键值对的变化。
etcd.watch().key('key').create().then(watcher => { watcher .on('put', console.log) .on('delete', console.log) .catch(console.error); setTimeout(async () => await etcd.put('key').value('value2')(), 2000); });
watch
:指定操作类型为watch
key
:指定需要监听的键名create
:创建一个监听器,并返回Promise
watcher 对象支持以下事件:
put
:在监视器上注册一个put
事件,表示有一个新的键值对存入了对应的键名delete
:在监视器上注册一个delete
事件,表示有一个键值对被删除了
lease
分配一个租约,并给其绑定一个键值对。
// 分配一个 10 秒的租约 const lease = etcd.lease(10); // 绑定一个键值对 await etcd.put('key').value('value').lease(lease)();
lease
:指定租约的值,单位为秒put
:指定操作类型为put
key
:指定键名value
:指定键值
作为绑定 lease 的连锁内容,还可以实现续约和撤销租约。
-- -------------------- ---- ------- ----- ---- - --- ------- ------ ------------------ --- ----- ----- - --------------- --------------- --------------- ------------- ------- ------------------ -------- -- ------------------ ------------------ -------- -- --------------- ------------------ ----------------------
transaction
返回一个带有事务支持的对象,使用该对象进行操作,即可完成类似于数据库交易的相关功能。常用的操作有:put
、get
、delete
、commit
、rollback
等。
await etcd.tx() .if('key', '==', 'value') .put('key2').value('value2') .commit();
tx
:指定操作类型为transaction
if
:在该方法内传入要比较的键名、运算符和要比较的值,用于判断。仅当判断结果为 true 时才会执行之后的 operation。支持的运算符包括:>
: 大于>=
: 大于等于<
: 小于<=
: 小于等于==
: 等于!=
: 不等于
put
:指定操作类型为put
key2
:要添加的新键value2
:要添加的新键值commit
:提交操作
以上是 @hapiness/etcd3
提供的基本操作,结束基本操作后需要调用 exec()
方法来执行命令。
示例代码
-- -------------------- ---- ------- ------ - ----- - ---- ------------------ ----- -------- ------ - ----- ---- - --- ------- ------ ------------------ --- -- --- ----- --------------------------------- -- --- ----- --- - ----- ------------------------- ----------------- -- ----- -- ----- --------------------------------------------- -- - ------- ---------- ------------ ------------- ------------ ---------------------- ---------------- -- -- ----- ---------------------------------- ------ --- -- ----- ----- ----- - --------------- ----- ---------------------------------------------- ----- ------------------------------------ ----- --------------------------------- -- ----------- ----- --------- ---------- ----- -------- ---------------------------- --------- ------------------ ---------------------- - ----------------------------
结论
本文为大家介绍了 @hapiness/etcd3
的使用方法。希望可以对广大前端开发者提供一些新的思路和灵感,使其可以顺利的使用 etcd 这一服务。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bbb967216659e2440fb