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

相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
大勇前进3 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu3 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile3 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白803 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端