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文档
控制台演示地址:https://www.bestreven.top/rnacos/ (演示服务和网址由一位热心用户提供)
用户名:dev
,密码:dev
演示内容:
注: 以上演示内容,服务使用的内存约为15MB
【单机部署】
从GitHub发布页下载对应系统的应用包,解压后即可运行。
Linux或macOS:
# 解压 tar -xvf rnacos-x86_64-apple-darwin.tar.gz # 运行 ./rnacos
Windows解压后直接运行rnacos.exe即可。
#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镜像,格式为qingpan/rnacos:$tag。
每个版本会打包两类Docker镜像:
Docker镜像类型 | 标签格式 | 示例 | 说明 |
---|---|---|---|
GNU Debian包 | $version | qingpan/rnacos:v0.4.0 | 基于debian-slim,体积较大(压缩包36MB,解压后102MB),运行性能相对较高 |
MUSL Alpine包 | $version-alpine | qingpan/rnacos:v0.4.0-alpine | 基于Alpine,体积较小(压缩包11MB,解压后34MB),运行性能相对较低 |
如果不关注具体版本,可以使用最新正式版本标签:
qingpan/rnacos:stable
qingpan/rnacos:stable-alpine
单机部署示例:
# 单机部署示例,数据目录:./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
# 安装
cargo install rnacos
# 运行
rnacos
git clone https://github.com/r-nacos/r-nacos.git
cd r-nacos
cargo build --release
cargo run --release
# 将r-nacos添加到taps brew tap r-nacos/r-nacos # 使用Homebrew安装r-nacos brew install r-nacos # 运行 rnacos # 后续可以通过以下命令更新到最新版本 # brew upgrade r-nacos
Kubernetes支持使用Helm部署。
对于测试和试用,推荐使用第1、第2或第3种方式,直接下载运行即可使用。 在Linux系统下,第1种方式默认使用musl版本(性能比GNU版本略差)。对于生产环境中对性能有要求的服务,可以考虑使用第2、第3、第4、第5种方法在相应环境下编译GNU版本进行部署。
参数KEY | 内容描述 | 默认值 | 示例 | 开始支持的版本 |
---|---|---|---|---|
RNACOS_HTTP_PORT | r-nacos监听的HTTP端口 | 8848 | 8848 | 0.1.x |
RNACOS_GRPC_PORT | r-nacos监听的gRPC端口 | 默认为HTTP端口+1000 | 9848 | 0.1.x |
RNACOS_HTTP_CONSOLE_PORT | r-nacos独立控制台端口 | 默认为HTTP端口+2000;设置为0可不开启独立控制台 | 10848 | 0.4.x |
RNACOS_CONSOLE_LOGIN_ONE_HOUR_LIMIT | r-nacos控制台1小时内登录失败次数限制 | 默认为5,同一用户连续登录失败5次将被锁定1小时 | 5 | 0.4.x |
RNACOS_HTTP_WORKERS | HTTP工作线程数 | CPU核心数 | 8 | 0.1.x |
RNACOS_CONFIG_DB_FILE | 配置中心本地数据库文件地址【0.2.x版本后不再使用】 | config.db | config.db | 0.1.x |
RNACOS_CONFIG_DB_DIR | 配置中心本地数据库sled文件夹,系统运行时自动创建 | nacos_db | nacos_db | 0.2.x |
RNACOS_RAFT_NODE_ID | 节点ID | 1 | 1 | 0.3.0 |
RNACOS_RAFT_NODE_ADDR | 节点地址(IP:gRPC端口),单节点运行时每次启动均生效;多节点集群部署时,仅取加入集群时配置的值 | 127.0.0.1:gRPC端口 | 127.0.0.1:9848 | 0.3.0 |
RNACOS_RAFT_AUTO_INIT | 是否作为主节点初始化(仅在每次启动时生效) | 节点ID为1时默认为true,非1时为false | true | 0.3.0 |
RNACOS_RAFT_JOIN_ADDR | 是否作为节点加入指定的主节点(领导者IP:gRPC端口);仅在首次启动时生效 | 空 | 127.0.0.1:9848 | 0.3.0 |
RNACOS_RAFT_SNAPSHOT_LOG_SIZE | Raft打包快照镜像的日志数量;变更日志超过此值将触发一次打包镜像 | 默认值10000 | 10000 | 0.5.0 |
RUST_LOG | 日志级别:debug、info、warn、error;所有HTTP、gRPC请求都会记录info日志,如不关注可设置为error以减少日志量 | info | error | 0.3.0 |
RNACOS_ENABLE_NO_AUTH_CONSOLE | 是否启用无鉴权控制台 | false | false | 0.5.2 |
RNACOS_CONSOLE_LOGIN_TIMEOUT | 控制台登录有效期(单位:秒) | 一天,86400秒 | 86400 | 0.5.0 |
RNACOS_GMT_OFFSET_HOURS | 日志时间的时区,单位为小时;默认为本机时区,在Docker中运行时需指定 | local | 8(东八区),-5(西五区) | 0.5.7 |
RNACOS_ENABLE_OPEN_API_AUTH | 是否对开放API启用鉴权(注:从Nacos切换到r-nacos过程中不要开启鉴权) | false | true | 0.5.8 |
RNACOS_API_LOGIN_TIMEOUT | 开放API鉴权有效期,单位为秒(注:从不鉴权到开启鉴权,需间隔相应时长以确保客户端token能更新生效) | 一小时,3600秒 | 3600 | 0.5.8 |
RNACOS_CLUSTER_TOKEN | 集群间通信请求验证token,空表示不开启验证,设置后仅相同token的节点间可通信 | 空字符串 | 1234567890abcdefg | 0.5.8 |
RNACOS_INIT_ADMIN_USERNAME | 初始化管理员用户名,仅在主节点首次启动时生效 | admin | rnacos | 0.5.11 |
RNACOS_INIT_ADMIN_PASSWORD | 初始化管理员密码,仅在主节点首次启动时生效 | admin | rnacos123456 | 0.5.11 |
RNACOS_ENABLE_METRICS | 是否启用监控指标功能 | true | true | 0.5.13 |
RNACOS_METRICS_COLLECT_INTERVAL_SECOND | 监控指标采集间隔,单位秒,最小间隔为1秒,不能小于RNACOS_METRICS_LOG_INTERVAL_SECOND | 15 | 5 | 0.5.14 |
RNACOS_METRICS_LOG_INTERVAL_SECOND | 监控指标采集打印到日志的间隔,单位秒,最小间隔为5秒 | 60 | 30 | 0.5.13 |
RNACOS_CONSOLE_ENABLE_CAPTCHA | 验证码开关 | true | true | 0.5.14 |
启动配置方式可参考:运行参数说明
【集群部署】
集群部署参考文档:
服务启动后,即可运行原有的Nacos应用。
# 设置配置
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'
# 注册服务实例
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-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 |
nacos-sdk-go
nacos-sdk-go/v2 v2.2.5
协议 | 验证过版本 | 推荐版本 |
---|---|---|
gRPC协议(2.x) | 2.2.5 | >=2.2.5 |
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 |
从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
演示内容:
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 修改默认账号的用户名和密码)。
进入控制台后可按需管理用户。
用户角色权限说明:
注意: 对外暴露nacos控制台端口前,建议增加一个自定义管理员,并将admin用户删除或禁用。
3、配置管理
配置列表管理
新建、编辑配置
4、服务列表管理
5、服务实例管理
6、命名空间管理
7、系统监控
这里将nacos服务的功能分为三块: 1、面向SDK的功能 2、面向控制台的功能 3、面向部署、集群的功能
以下对每一块进行nacos服务的对比说明。
访问认证:
配置中心:
注册中心:
控制台:
用户管理:
命名空间:
配置中心:
服务中心:
模块 | 场景 | 单节点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是节点的倍数 |
注: 具体结果与压测环境有关
详细信息可以参考 性能与容量说明
说明:
RNACOS_CONFIG_DB_DIR:nacos_db
目录下的文件进行备份和恢复,即可实现数据的备份和恢复;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" />R-NACOS微信交流群:请先添加微信(添加好友时请注明'r-nacos'),然后会将您拉入群。
AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号