in JavaScript

实现一个Node.js版本的Consul SDK

Consul

Consul 是一个开源软件,用于实现分布式系统的服务发现与配置,内置如下功能:

  • 服务的注册和发现
  • 键值对存储
  • 健康检查
  • 多数据中心支持

Node-Consul

目前实现最为完备的 Consul 客户端是 node-consul,看看它的功能点:

  • ACL: 访问控制
  • Agent: 检查/服务注册
  • Health: 健康信息获取
  • Catalog: 目录列表
  • KV: 键值对存取
  • Event: 发送事件与列表
  • Query: 查询服务信息
  • Status: Raft一致性的状态信息

Too much,超出了需求范围,我们需要的是一个类似于探针的包,下载后简单配置一下就开始工作,随着宿主服务启动/关闭而自动注册/注销。然而,这样的包目前似乎没有,只有自己写了,于是有了:

Consul-SDK npm version

node-consul-sdk 目前版本(1.1.x),仅实现了两个功能:

  1. 服务启动时注册到consul
  2. 服务退出时从consul注销

未来发展成什么样子,取决于实际需求

使用

使用很简单,只需在你的服务目录中进行三步操作:

1. 安装

  • npm方式:
  • yarn方式:

2. 配置

在服务根目录下放一个配置文件 consul.json,格式如下:

字段 意义
serverHost consul agent地址(选填,默认值为localhost)
serverPort consul agent端口(选填,默认值为8500)
secure 是否使用安全连接(选填,默认值为false)
name 服务名称
host 服务所在的IP地址
port 服务使用的端口

3. 调用

在服务入口文件中(比如app.js) 引入模块:

SDK的代码实现

考虑到宿主环境的复杂性,实现方式颇为远古,纯 es5 制霸:

index.js (程序入口)

libs/lib.js :

打赏作者
您的支持将激励我继续创作!

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

Write a Comment

Comment