Spring Cloud Alibaba Nacos 入門詳解
概覽
阿里巴巴在2018年7月份發(fā)布Nacos, Nacos是一個(gè)更易于構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái)。并表示在6-8個(gè)月完成到生產(chǎn)可用的0.8版本,目前版本是0.9版本。
Nacos提供四大功能
服務(wù)發(fā)現(xiàn)和服務(wù)健康檢查
Nacos使服務(wù)更容易注冊(cè)自己并通過DNS或HTTP接口發(fā)現(xiàn)其他服務(wù)。Nacos還提供服務(wù)的實(shí)時(shí)健康檢查,以防止向不健康的主機(jī)或服務(wù)實(shí)例發(fā)送請(qǐng)求。
動(dòng)態(tài)配置管理
動(dòng)態(tài)配置服務(wù)允許您在所有環(huán)境中以集中和動(dòng)態(tài)的方式管理所有服務(wù)的配置。Nacos消除了在更新配置時(shí)重新部署應(yīng)用程序和服務(wù)的需要,這使配置更改更加高效和靈活。
動(dòng)態(tài)DNS服務(wù)
動(dòng)態(tài) DNS 服務(wù)支持權(quán)重路由,讓您更容易地實(shí)現(xiàn)中間層負(fù)載均衡、更靈活的路由策略、流量控制以及數(shù)據(jù)中心內(nèi)網(wǎng)的簡(jiǎn)單DNS解析服務(wù)。動(dòng)態(tài)DNS服務(wù)還能讓您更容易地實(shí)現(xiàn)以 DNS 協(xié)議為基礎(chǔ)的服務(wù)發(fā)現(xiàn),以幫助您消除耦合到廠商私有服務(wù)發(fā)現(xiàn) API 上的風(fēng)險(xiǎn)。
服務(wù)和元數(shù)據(jù)管理
Nacos提供易于使用的服務(wù)儀表板,可幫助您管理服務(wù)元數(shù)據(jù),配置,kubernetes DNS,服務(wù)運(yùn)行狀況和指標(biāo)統(tǒng)計(jì)。
安裝
Nacos安裝可以采用如下兩種方式:
1.官網(wǎng)下載穩(wěn)定版本解壓使用。
2.下載源代碼編譯使用,目前最新的版本是0.9.0版本。
本文使用第一種方式,到Nacos的穩(wěn)定版本下載地址https://github.com/alibaba/nacos/releases,下載最新版,下載后解壓即安裝完成,然后進(jìn)入解壓目錄后的bin目錄。
unzip nacos-server-0.9.0.zip 或者 tar -xvf nacos-server-0.9.0.tar.gz
進(jìn)入解壓目錄后的bin目錄執(zhí)行如下命令啟動(dòng)Nacos。
#Linux/Unix/Mac 下 sh startup.sh -m standalone #Windows 下 cmd startup.cmd
啟動(dòng)成功后,訪問Nacos服務(wù),http://localhost:8848/nacos/#/login,默認(rèn)情況用戶名密碼都是nacos,登錄頁(yè)如圖所示。

登錄后如圖所示。

SpringBoot 使用 Nacos 配置管理
創(chuàng)建一個(gè)springboot項(xiàng)目,主要代碼如下。
pom.xml
<dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> <version>0.2.1</version> </dependency>
application.yml
spring: application: name: springcloud-nacos-hello nacos: config: server-addr: 127.0.0.1:8848
配置說明:
- spring.application.name:配置應(yīng)用名。
- nacos.config.server-addr:Nacos server 的地址。
啟動(dòng)類
在啟動(dòng)類,加入 @NacosPropertySource 注解其中包含兩個(gè)屬性,如下:
- dataId:這個(gè)屬性是需要在Nacos中配置的Data Id。
- autoRefreshed:為true的話開啟自動(dòng)更新。
在使用Nacos做配置中心后,需要使用@NacosValue注解獲取配置,使用方式與@Value一樣,完整啟動(dòng)類代碼如下所示。
@SpringBootApplication
@NacosPropertySource(dataId = "springcloud-nacos-hello", autoRefreshed = true)
@RestController
public class SpringcloudNacosHelloApplication {
public static void main(String[] args) {
SpringApplication.run( SpringcloudNacosHelloApplication.class, args );
}
@NacosValue(value = "${test.properties.useLocalCache:false}", autoRefreshed = true)
private boolean useLocalCache;
@GetMapping("/get")
public boolean get(){
return useLocalCache;
}
}
啟動(dòng)應(yīng)用,訪問http://localhost:8080/get ,返回配置的默認(rèn)值 “false”
使用Nacos修改配置
添加剛剛創(chuàng)建的data id 的服務(wù),并將配置由 false 修改為 true,如圖所示。

發(fā)布后,返回配置列表,出現(xiàn)新添加的配置,如圖所示。

再次訪問 http://localhost:8080/get ,返回值為 “true”。
數(shù)據(jù)源
經(jīng)過了上邊的一些簡(jiǎn)單操作,我們已經(jīng)可以正常使用 Nacos 配置中心了。
但是不知道你有沒有想過:配置數(shù)據(jù)是存在哪里呢?
我們沒有對(duì) Nacos Server 做任何配置,那么數(shù)據(jù)只有兩個(gè)位置可以存儲(chǔ):
- 內(nèi)存
- 本地?cái)?shù)據(jù)庫(kù)
重啟了 Nacos server ,你會(huì)發(fā)現(xiàn)原先創(chuàng)建的配置依然,這說明不是內(nèi)存存儲(chǔ)的。
這時(shí)候我們打開NACOS_PATH/data,會(huì)發(fā)現(xiàn)里邊有個(gè)derby-data目錄,Derby 是 Java 編寫的數(shù)據(jù)庫(kù),屬于 Apache 的一個(gè)開源項(xiàng)目。我們的配置數(shù)據(jù)現(xiàn)在就存儲(chǔ)在這個(gè)庫(kù)中。
Derby 我們并不是很熟悉,但是數(shù)據(jù)源可以改為我們熟悉的 MySQL。具體的操作步驟如下。
創(chuàng)建一個(gè)名為nacos_config的 database。
將NACOS_PATH/conf/nacos-mysql.sql中的表結(jié)構(gòu)導(dǎo)入剛才創(chuàng)建的庫(kù)中。
修改NACOS_PATH/conf/application.properties文件,增加支持mysql數(shù)據(jù)源配置(目前只支持mysql),添加mysql數(shù)據(jù)源的url、用戶名和密碼。
spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=root
再以單機(jī)模式啟動(dòng)nacos,nacos所有寫嵌入式數(shù)據(jù)庫(kù)的數(shù)據(jù)都寫到了mysql了。
到這里SpringBoot使用Nacos配置中心就完成了,關(guān)于Nacos更多功能及詳細(xì)使用,可以參看官方文檔。
源碼下載
https://github.com/gf-huanchupk/SpringCloudAlibabaLearning
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于spring事務(wù)傳播行為非事務(wù)方式的理解
這篇文章主要介紹了對(duì)spring事務(wù)傳播行為非事務(wù)方式的全面理解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
簡(jiǎn)介Java的Hibernate框架中的Session和持久化類
這篇文章主要介紹了Java的Hibernate框架中的Session和持久化類,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-12-12
spring?boot之使用spring?data?jpa的自定義sql方式
這篇文章主要介紹了spring?boot之使用spring?data?jpa的自定義sql方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
解決Mybatis-Plus操作分頁(yè)后數(shù)據(jù)失效問題
這篇文章主要介紹了解決Mybatis-Plus操作分頁(yè)后數(shù)據(jù)失效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11
RocketMQ消息隊(duì)列實(shí)現(xiàn)隨機(jī)消息發(fā)送當(dāng)做七夕禮物
這篇文章主要為大家介紹了RocketMQ消息隊(duì)列實(shí)現(xiàn)隨機(jī)消息發(fā)送當(dāng)做七夕禮物,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

