網上關於 Nacos 的使用介紹已經很多了,尤其是與 SpringBoot 的整合使用。怎麼安裝也跳過了,主要就講 Nacos 在 Solon 裡的使用,這個網上幾乎是沒有的。
Solon 一個高效的應用開發框架:更快、更小、更簡單,也是個新起的 Java 生態。
啟動快 5 ~ 10 倍;qps 高 2~ 3 倍;執行時記憶體節省 1/3 ~ 1/2;打包可以縮到 1/2 ~ 1/10;同時支援 jdk8, jdk11, jdk17, jdk19。
Solon 專案官網:https://solon.noear.org
Solon Cloud 是一套分散式(或微服務)開發的介面與設定規範。其中 Solon Cloud Config 為雲端設定服務,主要提供分散式設定服務的介面並與相關的中介軟體使用者端進行適配:
其中 nacos-solon-cloud-plugin,是 nacos 關於 solon cloud config 的適配。也是本文的主角。
安裝好 Nacos設定後,需要準備下設定資料。新建個「test」名稱空間;然後,準備 DataId 為 「demoapp.yml」 設定(這個設定,用於匯入到應用屬性):
demo.user.name: "1"
再準備 DataId 為 「demo-ds」 設定(這個設定,將直接使用):
demo.ds:
url: ""
username: ""
password: ""
藉助 Solon Initializr( https://solon.noear.org/start/ ) 生成一個 maven + java 的專案模組(這樣方便些)。用開發工具開啟專案(比如 IDEA)。在 pom.xml 裡面新增依賴:
<dependencies>
<dependency>
<groupId>org.noear</groupId>
<artifactId>nacos-solon-cloud-plugin</artifactId>
</dependency>
</dependencies>
然後,在應用屬性組態檔「app.yml」,新增 nacos 的連線資訊:
solon.app:
name: "demoapp"
group: "demo"
namespace: "test"
solon.cloud.nacos:
server: "localhost:8848" #nacos 服務地址
config:
load: "demoapp.yml" #載入設定到應用屬性(多個以","隔開)
「...config.load」 會匯入設定到應用屬性。之後可用「@Inject」注入,也可用「Solon.cfg().get(...)」獲取。
在模板專案裡,新增 "Config" 類:
@Configuration
public class Config {
//注入使用者名稱 //來自 config.load 匯入到應用屬性的
@Inject("${demo.user.name}")
String userName;
//注入並轉為資料來源 //直接來自 DataId = demo-ds
@Bean
public DataSource ds(@CloudConfig("demo-ds") HikariDataSource ds){
return ds;
}
}
直接獲取 nacos 設定,可以通過"@CloudConfig"註解,或者 "CloudClient.config().pull(group, name)" 手動獲取。
很多情況下,公司會有相同的程式碼,但是不同的運營專案。這個場景下,自然是希望程式碼都不用改。
在 Nacos 裡,新增 「test2」 名稱空間。然後把剛才的設定 DataId 複製一份。
solon.app:
name: "demoapp"
group: "demo"
namespace: "test2"
solon.cloud.nacos:
server: "localhost:8848" #nacos 服務地址
config:
load: "demoapp.yml" #載入設定到應用屬性(多個以","隔開)
java -Dsolon.app.namespace=test2 -jar demoapp.jar
services:
demoapp:
image: demo/demoapp:1.0.0
container_name: demoapp
environment:
- solon.app.namespace=test2
- TZ=Asia/Shanghai
ports:
- 8080:8080
方式二、方式三。什麼都不用改,只需要在部署執行時指定一下,推薦!