使用Rust实现服务配置/注册中心
Conreg
使用 Rust 实现的配置与注册中心,参考了 Nacos 的设计,简单易用,使用 Raft 保证集群节点数据一致性。
支持的平台:
- Ubuntu
- CentOS
- 其他常见的 Linux 发行版(我们使用
musl
编译,理论上支持所有主流 Linux 发行版)
开源地址:https://github.com/xgpxg/conreg
功能特性
配置中心:
- 命名空间隔离
- 配置增删改查操作
- 一致性同步(Raft)
- 配置历史记录
- 配置恢复
- 配置导入/导出
注册中心:
- 命名空间隔离
- 服务注册
- 心跳检测
- 服务发现
- 实例元数据
安全:
- 登录验证
- OpenAPI 认证
客户端 SDK(conreg-client):
- 配置获取
- 服务注册
- 服务发现
- 负载均衡
集群管理工具:
- 集群初始化
- 集群扩容
- 集群缩容
- Raft 状态监控
- 集群升级
- 集群备份
Web UI:
- 基础 UI
- 嵌入与集成
使用方法
Conreg 服务端
单机部署
# 下载包
curl -L https://github.com/xgpxg/conreg/releases/latest/download/conreg-server.tar.gz | tar -zxvf - -C .# 启动服务
conreg-server -p 8000
使用浏览器打开:http://127.0.0.1:8000
默认用户名和密码:conreg/conreg
集群部署
在生产环境中,通常建议使用集群部署。以下示例使用 3 个节点的集群:
# 下载包
curl -L https://github.com/xgpxg/conreg/releases/latest/download/conreg-server.tar.gz# 解压包
tar -zxvf conreg-server.tar.gz -C ./conreg1 tar -zxvf conreg-server.tar.gz -C ./conreg2 tar -zxvf conreg-server.tar.gz -C ./conreg3# 启动服务
conreg1/conreg-server -p 8001 -d ./conreg1/data1 -m cluster -n 1 conreg2/conreg-server -p 8002 -d ./conreg2/data2 -m cluster -n 2 conreg3/conreg-server -p 8003 -d ./conreg3/data3 -m cluster -n 3# 初始化集群
curl -X POST http://127.0.0.1:8001/api/cluster/init -d [[1,"127.0.0.1:8001"],[2,"127.0.0.1:8002"],[3,"127.0.0.1:8003"]]
可以使用代理组件,如 Nginx,来代理集群节点,以便可以通过浏览器访问后台页面,或者直接访问集群中的任何一个节点。
对于集群管理(如初始化、扩容、缩容、监控等),我们提供了一个集群管理的 CLI 工具:conreg-cmt,可以很方便的使用。
Usage: conreg-cmt --server <SERVER> <COMMAND>Commands:init Initialize the clusteradd-learner Add a learner node to the clusterpromote Promote some learner node to a full member, must call "add-learner" firstremove-node Remove a node from the clusterstatus Get cluster statusmonitor Monitor cluster statushelp Print this message or the help of the given subcommand(s)Options:-s, --server <SERVER> Address of any node in the cluster [default: 127.0.0.1:8000]-h, --help Print help-V, --version Print version
Conreg 客户端
conreg-client 是 Conreg 的客户端 SDK,用于集成到您的 Rust 应用程序中。
您可以从 conreg-client 中查看详细文档。
UI
看这里:conreg-ui
性能指标
测试机器(Windows WSL):Intel i7-8750H,6 核 12 线程,16G 内存。
使用单机模式发起 100 万个请求进行测试。
操作类型 | 性能指标 | 备注 |
---|---|---|
配置写入 | 1.3k/s | - |
配置读取 | 11k/s | 未启用缓存 |
配置读取 | 52k/s | 启用缓存 |
服务实例注册 | 1.1k/s | - |
服务实例查询 | 55k/s | - |
服务实例心跳 | 1.4k/s | - |
内存稳定占用在 55.7M左右