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

相关推荐
波力海苔夹心脆6757 分钟前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
不会算法的笨小孩28 分钟前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常
JWASX36 分钟前
【Go】map 源码解析 - group
后端·golang·map·源码分析
量化分析码农2 小时前
【Python量化波动率实战 01】波动率是怎么算的:年化、滚动与区间估计一次讲清
后端
特立独行的猫A2 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
金銀銅鐵2 小时前
从一个类名到一张类图:用反射自动生成 PlantUML
java·后端·uml
追逐时光者2 小时前
一款基于 .NET 开源、免费的数据库自治诊断平台
后端·.net
追逐时光者3 小时前
让 GitHub Copilot 更懂你的 .NET 代码风格:一份精简实用的 Copilot Instructions
后端·.net
Hhy_11073 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
starzy19903 小时前
深入理解Scala函数定义:从方法到函数的类型跨越
开发语言·scala