r-nacos

r-nacos

Rust实现的轻量级高性能服务注册配置中心

r-nacos是Rust实现的轻量级高性能服务注册配置中心,完全兼容Nacos协议。它提供注册中心、配置中心和Web管理控制台功能,支持单机和集群部署。与Java版Nacos相比,r-nacos启动速度更快,资源占用更少,性能更高,适用于开发测试、个人云服务和对性能要求较高的场景。

r-nacos注册中心配置中心微服务开源项目Github

r-nacos

简介

r-nacos是一个用Rust实现的Nacos服务。

r-nacos是一个轻量、快速、稳定、高性能的服务;包含注册中心、配置中心、Web管理控制台功能,支持单机和集群部署。

r-nacos在设计上完全兼容最新版本Nacos面向客户端SDK的协议(包括1.x的HTTP OpenAPI和2.x的gRPC协议),支持使用Nacos服务的应用迁移到r-nacos。

与Java版Nacos相比,r-nacos提供相同的功能,但启动更快、占用系统资源更少、性能更高、运行更稳定。

详细说明请参阅r-nacos文档

Docker拉取次数
GitHub下载量(所有资产,所有版本)

适用场景

  1. 开发测试环境使用Nacos时,可以将Nacos服务替换为r-nacos。启动更快,可以秒级启动。
  2. 个人资源云服务部署的Nacos,可以考虑换成r-nacos。资源占用率低:安装包仅10MB出头,不依赖JDK;运行时CPU占用小于0.5%,内存小于5MB(具体取决于实例)。
  3. 使用非定制Nacos服务,希望提升服务性能与稳定性的用户可以考虑迁移到r-nacos。

演示

控制台演示地址:https://www.bestreven.top/rnacos/ (演示服务和网址由一位热心用户提供)

用户名:dev,密码:dev

演示内容:

  • 配置中心:接近5000个配置
  • 服务中心:30个服务,每个服务有15个实例,共450个服务实例。

注: 以上演示内容,服务使用的内存约为15MB

快速开始

一、安装运行r-nacos

【单机部署】

方式1:下载二进制包运行

GitHub发布页下载对应系统的应用包,解压后即可运行。

Linux或macOS:

# 解压 tar -xvf rnacos-x86_64-apple-darwin.tar.gz # 运行 ./rnacos

Windows解压后直接运行rnacos.exe即可。

方式2:通过Docker运行

#stable是最新正式版本号,也可以指定镜像版本号,如:qingpan/rnacos:v0.4.0
docker pull qingpan/rnacos:stable  
docker run --name mynacos -p 8848:8848 -p 9848:9848 -p 10848:10848 -d qingpan/rnacos:stable

Docker容器的运行目录是/io,会从这个目录读写配置文件

Docker版本说明

应用每次打包都会同时打包对应版本的Docker镜像,格式为qingpan/rnacos:$tag。

每个版本会打包两类Docker镜像:

Docker镜像类型标签格式示例说明
GNU Debian包$versionqingpan/rnacos:v0.4.0基于debian-slim,体积较大(压缩包36MB,解压后102MB),运行性能相对较高
MUSL Alpine包$version-alpineqingpan/rnacos:v0.4.0-alpine基于Alpine,体积较小(压缩包11MB,解压后34MB),运行性能相对较低

如果不关注具体版本,可以使用最新正式版本标签:

  • 最新的GNU正式版本:qingpan/rnacos:stable
  • 最新的Alpine正式版本:qingpan/rnacos:stable-alpine

方式3:通过Docker Compose运行

单机部署示例:

docker-compose.yaml

# 单机部署示例,数据目录:./data version: '3.8' services: nacos: image: qingpan/rnacos:stable container_name: nacos ports: - "8848:8848" - "9848:9848" - "10848:10848" volumes: - ./data:/io:rw environment: - RNACOS_INIT_ADMIN_USERNAME=admin - RNACOS_INIT_ADMIN_PASSWORD=admin - RNACOS_HTTP_PORT=8848 restart: always

集群部署示例:docker-compose.yaml

方式4:通过Cargo编译安装

# 安装
cargo install rnacos
# 运行
rnacos

方式5:下载源码编译运行

git clone https://github.com/r-nacos/r-nacos.git
cd r-nacos
cargo build --release
cargo run --release

方式6:macOS支持通过Homebrew安装

# 将r-nacos添加到taps brew tap r-nacos/r-nacos # 使用Homebrew安装r-nacos brew install r-nacos # 运行 rnacos # 后续可以通过以下命令更新到最新版本 # brew upgrade r-nacos

方式7:部署到Kubernetes

Kubernetes支持使用Helm部署。

对于测试和试用,推荐使用第1、第2或第3种方式,直接下载运行即可使用。 在Linux系统下,第1种方式默认使用musl版本(性能比GNU版本略差)。对于生产环境中对性能有要求的服务,可以考虑使用第2、第3、第4、第5种方法在相应环境下编译GNU版本进行部署。

启动配置:

参数KEY内容描述默认值示例开始支持的版本
RNACOS_HTTP_PORTr-nacos监听的HTTP端口884888480.1.x
RNACOS_GRPC_PORTr-nacos监听的gRPC端口默认为HTTP端口+100098480.1.x
RNACOS_HTTP_CONSOLE_PORTr-nacos独立控制台端口默认为HTTP端口+2000;设置为0可不开启独立控制台108480.4.x
RNACOS_CONSOLE_LOGIN_ONE_HOUR_LIMITr-nacos控制台1小时内登录失败次数限制默认为5,同一用户连续登录失败5次将被锁定1小时50.4.x
RNACOS_HTTP_WORKERSHTTP工作线程数CPU核心数80.1.x
RNACOS_CONFIG_DB_FILE配置中心本地数据库文件地址【0.2.x版本后不再使用】config.dbconfig.db0.1.x
RNACOS_CONFIG_DB_DIR配置中心本地数据库sled文件夹,系统运行时自动创建nacos_dbnacos_db0.2.x
RNACOS_RAFT_NODE_ID节点ID110.3.0
RNACOS_RAFT_NODE_ADDR节点地址(IP:gRPC端口),单节点运行时每次启动均生效;多节点集群部署时,仅取加入集群时配置的值127.0.0.1:gRPC端口127.0.0.1:98480.3.0
RNACOS_RAFT_AUTO_INIT是否作为主节点初始化(仅在每次启动时生效)节点ID为1时默认为true,非1时为falsetrue0.3.0
RNACOS_RAFT_JOIN_ADDR是否作为节点加入指定的主节点(领导者IP:gRPC端口);仅在首次启动时生效127.0.0.1:98480.3.0
RNACOS_RAFT_SNAPSHOT_LOG_SIZERaft打包快照镜像的日志数量;变更日志超过此值将触发一次打包镜像默认值10000100000.5.0
RUST_LOG日志级别:debug、info、warn、error;所有HTTP、gRPC请求都会记录info日志,如不关注可设置为error以减少日志量infoerror0.3.0
RNACOS_ENABLE_NO_AUTH_CONSOLE是否启用无鉴权控制台falsefalse0.5.2
RNACOS_CONSOLE_LOGIN_TIMEOUT控制台登录有效期(单位:秒)一天,86400秒864000.5.0
RNACOS_GMT_OFFSET_HOURS日志时间的时区,单位为小时;默认为本机时区,在Docker中运行时需指定local8(东八区),-5(西五区)0.5.7
RNACOS_ENABLE_OPEN_API_AUTH是否对开放API启用鉴权(注:从Nacos切换到r-nacos过程中不要开启鉴权)falsetrue0.5.8
RNACOS_API_LOGIN_TIMEOUT开放API鉴权有效期,单位为秒(注:从不鉴权到开启鉴权,需间隔相应时长以确保客户端token能更新生效)一小时,3600秒36000.5.8
RNACOS_CLUSTER_TOKEN集群间通信请求验证token,空表示不开启验证,设置后仅相同token的节点间可通信空字符串1234567890abcdefg0.5.8
RNACOS_INIT_ADMIN_USERNAME初始化管理员用户名,仅在主节点首次启动时生效adminrnacos0.5.11
RNACOS_INIT_ADMIN_PASSWORD初始化管理员密码,仅在主节点首次启动时生效adminrnacos1234560.5.11
RNACOS_ENABLE_METRICS是否启用监控指标功能truetrue0.5.13
RNACOS_METRICS_COLLECT_INTERVAL_SECOND监控指标采集间隔,单位秒,最小间隔为1秒,不能小于RNACOS_METRICS_LOG_INTERVAL_SECOND1550.5.14
RNACOS_METRICS_LOG_INTERVAL_SECOND监控指标采集打印到日志的间隔,单位秒,最小间隔为5秒60300.5.13
RNACOS_CONSOLE_ENABLE_CAPTCHA验证码开关truetrue0.5.14

启动配置方式可参考:运行参数说明

【集群部署】

集群部署参考文档:

二、运行Nacos应用

服务启动后,即可运行原有的Nacos应用。

配置中心HTTP API示例

# 设置配置
curl -X POST 'http://127.0.0.1:8848/nacos/v1/cs/configs' -d 'dataId=t001&group=foo&content=contentTest'

# 查询
curl 'http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=t001&group=foo'

注册中心HTTP API示例

# 注册服务实例
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance' -d 'port=8000&healthy=true&ip=192.168.1.11&weight=1.0&serviceName=nacos.test.001&groupName=foo&metadata={"app":"foo","id":"001"}'

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance' -d 'port=8000&healthy=true&ip=192.168.1.12&weight=1.0&serviceName=nacos.test.001&groupName=foo&metadata={"app":"foo","id":"002"}'

 curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance' -d 'port=8000&healthy=true&ip=192.168.1.13&weight=1.0&serviceName=nacos.test.001&groupName=foo&metadata={"app":"foo","id":"003"}'

# 查询服务实例

curl "http://127.0.0.1:8848/nacos/v1/ns/instance/list?&namespaceId=public&serviceName=foo%40%40nacos.test.001&groupName=foo&clusters=&healthyOnly=true"

具体用法请参考 nacos.io 的用户指南。

nacos 客户端 SDK

Java nacos SDK

nacos-client

<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>${nacos.version}</version> </dependency>
协议验证过版本推荐版本
gRPC协议(2.x)2.1.0>2.1.x
HTTP协议(1.x)1.4.1>1.4.x

Go nacos SDK

nacos-sdk-go

nacos-sdk-go/v2 v2.2.5
协议验证过版本推荐版本
gRPC协议(2.x)2.2.5>=2.2.5

Rust nacos SDK

nacos-sdk-rust

nacos-sdk = "0.3.3"
协议验证过版本推荐版本
gRPC协议0.3.3>=0.3.3

nacos_rust_client

nacos_rust_client = "0.3.0"
协议验证过版本推荐版本
同时支持HTTP协议与gRPC协议0.3.0>=0.3.0
HTTP协议0.2.2>=0.2.2

其它语言

开放API

三、控制台管理

从0.4.0版本开始,支持独立端口号的新控制台。新控制台具有完备的用户管理、登录校验、权限控制功能,支持对外网暴露。

启动服务后可以通过浏览器访问 http://127.0.0.1:10848/rnacos/ 来使用新控制台。

旧控制台http://127.0.0.1:8848/rnacos/ 已标记为废弃,默认不开启,可通过配置开启。旧控制台不需要登录鉴权,也不支持用户管理。

控制台主要包含用户管理、命名空间管理、配置管理、服务管理、服务实例管理等功能。

控制台在线演示

地址: https://www.bestreven.top/rnacos/ (演示服务与网址由一位热心用户提供)

演示用户:

  • 开发者:
    • 用户名: dev ,密码: dev
  • 访客:
    • 用户名: guest, 密码: guest

演示内容:

  • 配置中心:接近5千个配置
  • 服务中心:30个服务,每个服务有15个实例,共450个服务实例。

1、用户登录

在新控制台打开一个地址时,如果检测到未登录,会自动跳转到登录页面。 一个用户连续登录失败5次,会被锁定1个小时。这个次数可以通过启动参数配置。

<img style="width: 400px;" width="400" src="https://yellow-cdn.veclightyear.com/835a84d5/b0825c71-19c8-4ea2-9e23-e6c02481df8d.png" />

2、用户管理

系统会默认创建一个名为admin的用户,密码为admin(也可以通过环境变量 RNACOS_INIT_ADMIN_USERNAME 和 RNACOS_INIT_ADMIN_PASSWORD 修改默认账号的用户名和密码)。

进入控制台后可按需管理用户。

用户角色权限说明:

  1. 管理员: 拥有所有控制台权限
  2. 开发者:除了用户管理外的所有控制台权限
  3. 访客:只能查询配置中心与注册中心的数据,没有编辑权限。

注意: 对外暴露nacos控制台端口前,建议增加一个自定义管理员,并将admin用户删除或禁用。

3、配置管理

配置列表管理

新建、编辑配置

4、服务列表管理

5、服务实例管理

6、命名空间管理

7、系统监控

功能说明

这里将nacos服务的功能分为三块: 1、面向SDK的功能 2、面向控制台的功能 3、面向部署、集群的功能

以下对每一块进行nacos服务的对比说明。

一、面向SDK的功能

访问认证:

  1. 提供获取认证token的接口

配置中心:

  1. 支持配置中心的基础功能、支持维护配置历史记录
  2. 兼容配置中心的SDK协议
  3. 暂不支持灰度发布、暂不支持tag隔离

注册中心:

  1. 支持注册中心的基础功能
  2. 兼容配置中心的SDK协议
  3. 暂不支持1.x版本的UDP实例变更实时通知,只支持2.x版本gRPC实例变更实时通知。最初版本曾支持过UDP实例变更通知,后来因为支持gRPC导致两者不统一,暂时移除,后续可考虑重新添加。

二、面向开发、管理员的控制台功能

控制台:

  1. 支持使用独立的控制台端口提供对外网服务。

用户管理:

  1. 支持管理用户列表
  2. 支持用户角色权限管理
  3. 支持用户密码重置

命名空间:

  1. 支持管理命名空间列表
  2. 支持切换命名空间查询配置、服务数据。

配置中心:

  1. 支持配置中心信息管理
  2. 支持配置导入、导出,其文件格式与nacos兼容
  3. 支持配置历史记录查看与恢复
  4. 暂不支持tag的高级查询
  5. 暂不支持查询配置监听记录

服务中心:

  1. 支持注册中心的服务、服务实例管理
  2. 暂不支持查询监听记录

三、面向部署、集群的功能

  1. 支持单机部署
  2. 支持集群部署。集群部署配置中心数据使用raft+节点本地存储组成的分布式存储,不需要依赖MySQL。具体参考集群部署说明

性能

模块场景单节点qps/tps集群qps/tps总结/备注
配置中心配置写入,HTTP协议1.76万7.6千集群写入压测是在同一台电脑运行3个节点,如果换成多个机器部署,tps应该还能有所提升。
配置中心配置查询,HTTP协议8万n*8万集群的查询总qps是节点的倍数
注册中心服务实例注册,HTTP协议4.8万2.4万集群写入压测是在同一台电脑运行3个节点,如果换成多个机器部署,tps应该还能有所提升。
注册中心服务实例注册,gRPC协议4.8万2.4万gRPC协议压测工具未支持,目前没有实际压测,理论上不会比HTTP协议低
注册中心服务实例心跳,HTTP协议4.8万2.4万心跳按实例计算,与服务实例注册一致共享qps
注册中心服务实例心跳,gRPC协议8万以上n*8万心跳按请求链接计算,且不经过注册中心处理线程,每个节点只需管理当前节点的心跳,集群总心跳qps是节点的倍数
注册中心查询服务实例5.4万n*5.4万集群的查询总qps是节点的倍数

注: 具体结果与压测环境有关

详细信息可以参考 性能与容量说明

r-nacos架构图

架构图

说明:

  • r-nacos默认支持集群部署,单机部署相当于一个节点的集群,后续可以根据需要添加新节点;
  • 数据持久化使用raft协议分布式数据库(raft协议+节点文件存储),类似etcd;
  • 只需对RNACOS_CONFIG_DB_DIR:nacos_db目录下的文件进行备份和恢复,即可实现数据的备份和恢复;
  • r-nacos控制台采用前后端分离架构;由于前端应用依赖nodejs,因此单独放在另一个项目 r-nacos-console-web 中,然后通过cargo将打包好的前端资源引入本项目,避免在开发rust时还需依赖nodejs。

r-nacos架构设计参考: 架构

使用登记

使用r-nacos的朋友,欢迎在登记地址进行登记,登记仅用于便于产品推广。

联系方式

R-NACOS微信交流群:请先添加微信(添加好友时请注明'r-nacos'),然后会将您拉入群。

<img style="width: 200px;" width="200" src="https://yellow-cdn.veclightyear.com/835a84d5/c2a16635-a277-4f55-87a4-5826bb78fe54.jpg" alt="qingpan2014" />

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多