使用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 服务端

单机部署

shell 复制代码
# 下载包
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 个节点的集群:

shell 复制代码
# 下载包
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,可以很方便的使用。

shell 复制代码
Usage: conreg-cmt --server <SERVER> <COMMAND>

Commands:
  init         Initialize the cluster
  add-learner  Add a learner node to the cluster
  promote      Promote some learner node to a full member, must call "add-learner" first
  remove-node  Remove a node from the cluster
  status       Get cluster status
  monitor      Monitor cluster status
  help         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左右

相关推荐
Scott9999HH3 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
GetcharZp4 小时前
抛弃低效SSH!这套Ansible+Web可视化神器,让你天天准点下班!
后端
码智社4 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海4 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖5 小时前
JDK 26 新特性详解
java·开发语言
马优晨6 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
weixin_446260857 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
doiito7 小时前
【AI 应用】从“外国人味”到地道中文:kokoroi-rs v0.1.2 架构升级深度解析
ai·rust·系统设计
人邮异步社区8 小时前
怎么把C语言学到精通?
c语言·开发语言