佔用資源極低!這款輕量級 Nacos 效能炸裂!

Java陈序员發表於2024-11-14

大家好,我是 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/#/

大家的點贊、收藏和評論都是對作者的支援,如文章對你有幫助還請點贊轉發支援下,謝謝!


相關文章