spring cloud alibaba nacos 入門
官網
https://nacos.io/zh-cn/index.html下載地址
https://github.com/alibaba/nacos/releases什麼是 Nacos
Nacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元資料及流量管理。
Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平臺。 Nacos 是構建以“服務”為中心的現代應用架構 (例如微服務正規化、雲原生正規化) 的服務基礎設施。
服務(Service)是 Nacos 世界的一等公民。Nacos 支援幾乎所有主流型別的“服務”的發現、配置和管理:
Nacos 的關鍵特性包括:
服務發現和服務健康監測
- Nacos 支援基於 DNS 和基於 RPC 的服務發現。服務提供者使用原生SDK、OpenAPI、或一個獨立的Agent TODO註冊 Service 後,服務消費者可以使用DNS TODO或HTTP&API查詢和發現服務。
- Nacos 提供對服務的實時的健康檢查,阻止向不健康的主機或服務例項傳送請求。Nacos 支援傳輸層 (PING 或 TCP)和應用層 (如 HTTP、MySQL、使用者自定義)的健康檢查。 對於複雜的雲環境和網路拓撲環境中(如 VPC、邊緣網路等)服務的健康檢查,Nacos 提供了 agent 上報模式和服務端主動檢測2種健康檢查模式。Nacos 還提供了統一的健康檢查儀表盤,幫助您根據健康狀態管理服務的可用性及流量。
動態配置服務
- 動態配置服務可以讓您以中心化、外部化和動態化的方式管理所有環境的應用配置和服務配置。
- 動態配置消除了配置變更時重新部署應用和服務的需要,讓配置管理變得更加高效和敏捷。
- 配置中心化管理讓實現無狀態服務變得更簡單,讓服務按需彈性擴充套件變得更容易。
- Nacos 提供了一個簡潔易用的UI (控制檯樣例 Demo) 幫助您管理所有的服務和應用的配置。Nacos 還提供包括配置版本跟蹤、金絲雀釋出、一鍵回滾配置以及客戶端配置更新狀態跟蹤在內的一系列開箱即用的配置管理特性,幫助您更安全地在生產環境中管理配置變更和降低配置變更帶來的風險。
動態 DNS 服務
- 動態 DNS 服務支援權重路由,讓您更容易地實現中間層負載均衡、更靈活的路由策略、流量控制以及資料中心內網的簡單DNS解析服務。動態DNS服務還能讓您更容易地實現以 DNS 協議為基礎的服務發現,以幫助您消除耦合到廠商私有服務發現 API 上的風險。
- Nacos 提供了一些簡單的DNS APIs TODO幫助您管理服務的關聯域名和可用的 IP:PORT 列表.
服務及其元資料管理
Nacos 能讓您從微服務平臺建設的視角管理資料中心的所有服務及元資料,包括管理服務的描述、生命週期、服務的靜態依賴分析、服務的健康狀態、服務的流量管理、路由及安全策略、服務的 SLA 以及最首要的 metrics 統計資料。
啟動
window環境 執行 startup.cmd訪問 http://localhost:8848/nacos 初始賬號密碼 皆為 nacos註冊中心
1.匯入依賴
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
server:
port: 8001
spring:
application:
name: cloud-pay
cloud:
nacos:
discovery:
server-addr: localhost:8848
<段落>3.修改主啟動類
management:
endpoints:
web:
exposure:
include: '*'
@SpringBootApplication<段落>
@EnableDiscoveryClient
public class PayApplication {
public static void main(String [] arg){
SpringApplication.run(PayApplication.class, arg);
}
}
4.啟動專案檢視 nacos 服務列表
配置中心與訊息匯流排
啟動了 Nacos server 後,您就可以參考以下示例程式碼,為您的 Spring Cloud 應用啟動 Nacos 配置管理服務了。完整示例程式碼請參考:nacos-spring-cloud-config-example
- 新增依賴:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>
注意:版本2.1.x.RELEASE對應的是 Spring Boot 2.1.x 版本。版本2.0.x.RELEASE對應的是 Spring Boot 2.0.x 版本,版本1.5.x.RELEASE對應的是 Spring Boot 1.5.x 版本。
更多版本對應關係參考:版本說明 Wiki
- 在
bootstrap.properties
中配置 Nacos server 的地址和應用名
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=example
說明:之所以需要配置spring.application.name
,是因為它是構成 Nacos 配置管理dataId
欄位的一部分。
在 Nacos Spring Cloud 中,dataId
的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
prefix
預設為spring.application.name
的值,也可以通過配置項spring.cloud.nacos.config.prefix
來配置。spring.profiles.active
即為當前環境對應的 profile,詳情可以參考Spring Boot文件。注意:當spring.profiles.active
為空時,對應的連線符-
也將不存在,dataId 的拼接格式變成${prefix}.${file-extension}
file-exetension
為配置內容的資料格式,可以通過配置項spring.cloud.nacos.config.file-extension
來配置。目前只支援properties
和yaml
型別。
1.匯入依賴
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.修改yml
server:
port: 80
spring:
profiles:
active: dev
application:
name: cloud-pay-consume
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
file-extension: yaml
namespace: c51daa21-02fc-4593-b4f6-734d48553d71
group: wuxi
namespace 與group 為自定義名稱空間與組,不設定 預設使用public 與 defalut_group
3.新建配置表
4.測試
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${config.info}")
private String info;
@RequestMapping("/get")
public String get() {
return info;
}
}
@refreshScope 當遠端配置修改並觸發重新整理請求後,修改引用配置的值
可以正確拿到遠端配置的值,遠端修改配置,再次訪問 資料變化 nacos 自動集成了訊息匯流排的功能
叢集部署與 nacos 持久化
叢集模式部署
這個快速開始手冊是幫忙您快速在你的電腦上,下載安裝並使用Nacos,部署生產使用的叢集模式。
叢集部署架構圖
因此開源的時候推薦使用者把所有服務列表放到一個vip下面,然後掛到一個域名下面
http://ip1:port/openAPI 直連ip模式,機器掛則需要修改ip才可以使用。
http://VIP:port/openAPI 掛載VIP模式,直連vip即可,下面掛server真實ip,可讀性不好。
http://nacos.com:port/openAPI 域名 + VIP模式,可讀性好,而且換ip方便,推薦模式
上圖的VIP 可以理解為nginx
1. 預備環境準備
請確保是在環境中安裝使用:
2. 下載原始碼或者安裝包
你可以通過兩種方式來獲取 Nacos。
從 Github 上下載原始碼方式
unzip nacos-source.zip
cd nacos/
mvn -Prelease-nacos clean install -U
cd nacos/distribution/target/nacos-server-1.3.0/nacos/bin
下載編譯後壓縮包方式
下載地址
unzip nacos-server-1.3.0.zip 或者 tar -xvf nacos-server-1.3.0.tar.gz
cd nacos/bin
3. 配置叢集配置檔案
在nacos的解壓目錄nacos/的conf目錄下,有配置檔案cluster.conf,請每行配置成ip:port。(請配置3個或3個以上節點)
# ip:port
200.8.9.16:8848
200.8.9.17:8848
200.8.9.18:8848
4. 確定資料來源
使用內建資料來源
無需進行任何配置
使用外接資料來源
Nacos預設自帶的是嵌入式資料庫derby,切換至mysql資料庫完成持久化,以便後面的叢集部署找到conf 下的mysql 資料庫指令碼並執行
生產使用建議至少主備模式,或者採用高可用資料庫。
初始化 MySQL 資料庫
application.properties 配置
5. 啟動伺服器
Linux/Unix/Mac
Stand-alone mode
sh startup.sh -m standalone
叢集模式
使用內建資料來源
sh startup.sh -p embedded
使用外接資料來源
sh startup.sh
6. 服務註冊&發現和配置管理
服務註冊
curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
服務發現
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instances?serviceName=nacos.naming.serviceName'
釋出配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld"
獲取配置
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
來自為知筆記(Wiz)