使用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左右

相关推荐
执风挽^20 小时前
Python基础编程题2
开发语言·python·算法·visual studio code
程序员泠零澪回家种桔子20 小时前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构
Z9fish20 小时前
sse哈工大C语言编程练习20
c语言·开发语言·算法
萧鼎20 小时前
Python 包管理的“超音速”革命:全面上手 uv 工具链
开发语言·python·uv
源代码•宸21 小时前
大厂技术岗面试之谈薪资
经验分享·后端·面试·职场和发展·golang·大厂·职级水平的薪资
Anastasiozzzz21 小时前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
刘琦沛在进步21 小时前
【C / C++】引用和函数重载的介绍
c语言·开发语言·c++
机器视觉的发动机21 小时前
AI算力中心的能耗挑战与未来破局之路
开发语言·人工智能·自动化·视觉检测·机器视觉
HyperAI超神经21 小时前
在线教程|DeepSeek-OCR 2公式/表格解析同步改善,以低视觉token成本实现近4%的性能跃迁
开发语言·人工智能·深度学习·神经网络·机器学习·ocr·创业创新
晚霞的不甘21 小时前
CANN 编译器深度解析:UB、L1 与 Global Memory 的协同调度机制
java·后端·spring·架构·音视频