Nacos是阿里發布的注冊中心及配置中心組件,提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。本文主要介紹Nacos結合Spring Cloud的使用,文中使用到的軟件版本:Nacos 1.3.2、Spring Boot 2.2.5.RELEASE、Spring Cloud Hoxton.SR3、Java 1.8.0_191。
1、簡介
官網地址為:https://nacos.io/zh-cn/docs/what-is-nacos.html,可以查看詳細介紹。
1.1、特性
a、服務發現和服務健康監測
b、動態配置服務
c、動態DNS服務
d、服務及其元數據管理
1.2、架構
2、安裝
2.1、單機模式
2.1.1、使用嵌入式數據庫
下載nacos的安裝包(https://github.com/alibaba/nacos/releases),解壓,運行
startup.sh -m standalone
2.1.2、使用mysql
單機模式默認使用嵌入式數據庫實現數據的存儲,不方便觀察數據存儲的基本情況;可以使用mysql來保存數據:
a、創建nacos的數據庫,並執行nacos-mysql.sql腳本
b、修改conf/application.properties文件,增加支持mysql數據源配置
spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=admin db.password=Root_123!
再以單機模式啟動nacos,nacos所有寫嵌入式數據庫的數據都寫到了mysql
2.2、集群模式
2.2.1、部署架構圖
http://ip1:port/openAPI 直連ip模式,機器掛則需要修改ip才可以使用。
http://VIP:port/openAPI 掛載VIP模式,直連vip即可,下面掛server真實ip,可讀性不好。
http://nacos.com:port/openAPI 域名 + VIP模式,可讀性好,而且換ip方便,推薦模式。
2.2.2、配置集群地址
復制conf/cluster.conf.example為conf/cluster.conf,修改其內容為:
10.49.196.10:8848
10.49.196.11:8848
10.49.196.12:8848
2.2.3、配置數據源
2.2.3.1、使用內置數據源
無需進行任何配置
2.2.3.2、使用外置數據源
修改conf/application.properties文件,增加MySQL配置:
spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://10.49.196.10:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=admin db.password=Root_123!
2.2.4、啟動
2.2.4.1、使用內置數據源
./startup.sh -p embedded
2.2.4.2、使用外置數據源
./startup.sh
2.3、控制台
http://localhost:8848/nacos
用戶名/密碼默認為:nacos/nacos
3、SpringCloud中使用Nacos
3.1、作為注冊中心
3.1.1、引入依賴
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.3.RELEASE</version> </dependency>
3.1.2、增加配置
spring:
cloud:
nacos:
discovery:
server-addr: 10.49.196.10:8848
如果是集群的話可以用nginx來負載,這邊配置代理地址。
3.1.3、啟動類增加@EnableDiscoveryClient
啟動服務后就可以進行服務的注冊和發現,在控制台可以看到已注冊的服務:
3.2、作為注冊中心
3.2.1、引入依賴
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.3.RELEASE</version> </dependency>
3.2.2、增加配置
在resources目錄下新建bootstrap.yml文件:
spring: cloud: nacos: config: server-addr: 10.49.196.10:8848 prefix: scdemo-server file-extension: yaml #group: DEFAULT_GROUP #namespace: public
3.2.3、在控制台新建配置
scdemo-server內容如下:
3.2.4、啟動服務
在服務可以獲取到在nacos中定義的配置項。