大家好,我是 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/#/
大家的點贊、收藏和評論都是對作者的支援,如文章對你有幫助還請點贊轉發支援下,謝謝!