头图

大家好,我是 Java陈序员

在开发中,Nacos 作为一款非常流行的微服务配置中心、注册中心,在构建微服务项目时往往会使用到它。

但是对于个人开发者而言,云服务器资源有限,往往无法撑起 Nacos 服务的高内存使用!

今天,给大家介绍一款轻量级的 Nacos 服务,功能平替,占用资源极低!

关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。

项目简介

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

架构图

对比 Nacos

r-nacos 相较于 Java Nacos 来说,提供相同功能,设计上完全兼容最新版本 Nacos 面向 Client SDK 的协议,Nacos 服务应用可以无缝平迁到 r-nacos. 但是 r-nacos 启动更快、占用系统资源更小、性能更高

由于 r-nacos资源占用率低: 包 10M 出头不依赖、JDK、运行时 CPU 小于 0.5%、小于 5M(具体和实例有关),十分适合用于替换个人资源云服务部署的 Nacos.

性能压测

r-nacos 的性能还是非常好的,如下是官方提供的性能压测结果表,可以参考下。

项目截图

配置列表

服务列表

用户管理

命名空间

数据迁移

系统监控

快速上手

安装运行

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

    # 解压
    tar -xvf rnacos-x86_64-apple-darwin.tar.gz
    # 运行
    ./rnacos
  • 方式 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
  • 方式 3: 通过 docker-compose 运行

    # 集群部署样例,数据目录: ./data
    version: '3.8'
    
    services:
    nacos:
      image: qingpan/rnacos:stable
      container_name: nacos
      ports:
        - "8848:8848"
        - "9848:9848"
        - "10848:10848"
      volumes:
        - /data/software/rnacos:/io:rw
      environment:
        - RNACOS_INIT_ADMIN_USERNAME=admin
        - RNACOS_INIT_ADMIN_PASSWORD=admin
        - RNACOS_HTTP_PORT=8848
      restart: always
    
  • 方式 4: 下载源码编译运行

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

启动服务后可以在浏览器通过 http://127.0.0.1:10848/rnacos/ 访问 r-nacos 控制台。

初始用户名/密码:admin/admin.

除了以上几种部署安装方式外,官方还提供了 cargo 编译安装MacOS 支持通过 brew 安装K8s安装 等方式,以及集群部署,对应的安装可参考官方文档。

客户端使用

r-nacos 安装运行好后,Java 服务客户端仍可使用 Nacos 原来的集成方式,只需将配置中心、注册中心的地址指向为 r-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.

从功能上来说 r-nacos 是可以平替 Nacos 的,而且它占用内存资源非常低,十分适用于个人开发者使用,感兴趣的可以尝试体验下~

项目地址:https://github.com/nacos-group/r-nacos

最后

推荐的开源项目已经收录到 GitHub 项目,欢迎 Star

https://github.com/chenyl8848/great-open-source-project

或者访问网站,进行在线浏览:

https://chencoding.top:8090/#/

大家的点赞、收藏和评论都是对作者的支持,如文章对你有帮助还请点赞转发支持下,谢谢!


Java陈序员
61 声望8 粉丝