<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SpringCloud+Nacos實(shí)現(xiàn)服務(wù)配置中心(Hoxton版本)

          共 6219字,需瀏覽 13分鐘

           ·

          2021-04-19 16:01

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

          優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

            作者 |  懸鈴木pp

          來(lái)源 |  urlify.cn/7BJV3a


          關(guān)于 Nacos Spring Cloud 的詳細(xì)文檔請(qǐng)參看:Nacos Config和Nacos Discovery。

          通過(guò) Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 實(shí)現(xiàn)配置的動(dòng)態(tài)變更。

          通過(guò) Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 實(shí)現(xiàn)服務(wù)的注冊(cè)與發(fā)現(xiàn)。

           

          前提條件

          首先下載安裝一個(gè)nacos server,然后啟動(dòng)nacos server。下載和安裝流程查看https://www.cnblogs.com/ying-z/p/14630738.html

           

          新建配置

          可以通過(guò)兩種方式新建配置。

          方式一:訪問(wèn)Nacos Server頁(yè)面手動(dòng)創(chuàng)建。

          首先登錄Nacos Server,地址一般為http://127.0.0.1:8848/nacos/index.html。

          然后進(jìn)入配置列表,點(diǎn)擊新增配置按鈕,進(jìn)入新增配置頁(yè)面。

           

           

           

           

           注意:

          這里我創(chuàng)建Data Id為nacos-config.properties的配置文件,其中Group為默認(rèn)的DEFAULT_GROUP,配置文件的格式也相應(yīng)的選擇Properties,配置內(nèi)容中添加配置nacos.config=hello_nacos,如圖所示。

           

           

           方式二:通過(guò)調(diào)用Nacos Open API向Nacos Server發(fā)布配置:dataId為nacos-config.properties,內(nèi)容為nacos.config=hello_nacos

          curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos-config.properties&group=DEFAULT_GROUP&content=nacos.config=hello_nacos"


          創(chuàng)建服務(wù)應(yīng)用 

          (1)使用SpringBoot,創(chuàng)建一個(gè)名為nacos-config的子工程。

          (2)pom.xml文件添加如下依賴。

          <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>2.2.5.RELEASE</version>
              <relativePath/> <!-- lookup parent from repository -->
          </parent>
          <dependencyManagement>
              <dependencies>
                <!-- 聲明Spring cloud的版本為Hoxton.SR3-->
                <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-dependencies</artifactId>
                  <version>Hoxton.SR3</version>
                  <type>pom</type>
                  <scope>import</scope>
                </dependency>
                <!-- 聲明Spring cloud alibaba版本為2.1.0.RELEASE -->
                <dependency>
                  <groupId>com.alibaba.cloud</groupId>
                  <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                  <version>2.2.1.RELEASE</version>
                  <type>pom</type>
                  <scope>import</scope>
                </dependency>
              </dependencies>
          </dependencyManagement>
          <dependencies>
              <!-- 聲明nacos-discovery依賴 -->
              <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
              </dependency>
              <!-- 聲明nacos-config依賴 -->
              <dependency>
                  <groupId>com.alibaba.cloud</groupId>
                  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
              </dependency>
          </dependencies>

          備注:如果不需要注冊(cè)該服務(wù),也可以去掉nacos-discovery依賴。

          注意:版本2.1.x.RELEASE 對(duì)應(yīng)的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 對(duì)應(yīng)的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 對(duì)應(yīng)的是 Spring Boot 1.5.x 版本。

          更多版本對(duì)應(yīng)關(guān)系參考:版本說(shuō)明 Wiki

          (3)修改application.properties添加相關(guān)配置

          server.port=9002
          spring.application.name=nacos-config
          spring.application.cloud.nacos.discovery.server-addr=127.0.0.1:8848

          (4)創(chuàng)建配置文件,文件名為bootstrap.properties。并在bootstrap.properties中配置Nacos server的地址和應(yīng)用名。

          注意:文件名是bootstrap.xxx,而不是application或者其他。因?yàn)镹acos同Spring Cloud Config一樣,在項(xiàng)目初始化時(shí),要保證先從配置中心進(jìn)行配置拉取,拉取配置之后,才能保證項(xiàng)目的正常啟動(dòng)。SpringBoot中配置文件的加載是存在優(yōu)先級(jí)順序的,bootstrap優(yōu)先級(jí)高于application。

          這里的配置文件類型可以根據(jù)個(gè)人習(xí)慣選擇,我這里用的時(shí)properties類型,配置內(nèi)容如下:

          #服務(wù)名稱
          spring.application.name=nacos-config
          #指定注冊(cè)中心的地址。如果你不需要注冊(cè)該服務(wù),也可以去掉該項(xiàng),并刪除discovery依賴。
          spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
          #指定配置中心的地址。
          spring.cloud.nacos.config.server-addr=127.0.0.1:8848
          #指定配置中心中配置文件的格式。
          #spring.cloud.nacos.config.file-extension=properties

          之所以需要配置spring.application.name,是因?yàn)樗菢?gòu)成Nacos配置管理dataId字段的一部分。 

          在Nacos-Server配置管理,其中Data ID它的定義規(guī)則是: 

          ${prefix}-${spring.profile.active}.${file-extension}

          prefix:默認(rèn)為spring.application.name的值,也可以通過(guò)配置項(xiàng)spring.cloud.nacos.config.prefix來(lái)配置。

          spring.profile.active:即為當(dāng)前環(huán)境對(duì)應(yīng)的profile,詳情可以參考 Spring Boot文檔??梢酝ㄟ^(guò)配置項(xiàng)spring.profile.active來(lái)配置。當(dāng)spring.profile.active為空時(shí),對(duì)應(yīng)的連接符 - 也將不存在,dataId的拼接格式變成 ${prefix}.${file-extension}。

          file-exetension:為配置內(nèi)容的數(shù)據(jù)格式,可以通過(guò)配置項(xiàng)spring.cloud.nacos.config.file-extension來(lái)配置。目前只支持properties和yaml類型。

          (5)創(chuàng)建對(duì)外接口ConfigController,從nacos中讀取配置。

          @RefreshScope
          @RestController
          public class ConfigController {
              @Value("${nacos.config}")
              private String configValue;

              @RequestMapping("/config/get")
              public String get() {
                  return configValue;
              }
          }

          @RefreshScope:Spring Cloud的原生注解,可以使當(dāng)前類下的配置支持動(dòng)態(tài)更新。

          @Value:通過(guò)@Value注解,去讀取key為nacos.config的配置的值,并通過(guò)/config/get接口返回。

          到此代碼部分的工作已經(jīng)完成。

           

          啟動(dòng)服務(wù)進(jìn)行測(cè)試

          (1)保證Nacos-Server已經(jīng)啟動(dòng)。

          (2)檢查Nacos-Server中配置列表中是否已經(jīng)添加相應(yīng)的配置文件。

          (3)啟動(dòng)nacos-config項(xiàng)目。

          (4)啟動(dòng)成功后在Nacos控制臺(tái)中可以看到我們注冊(cè)的服務(wù)。

          (5)此時(shí)調(diào)用接口進(jìn)行測(cè)試http://127.0.0.1:9002/config/get,可以看到返回結(jié)果。

           

           此時(shí)說(shuō)明已經(jīng)成功讀取到配置。

          (6)下面我將Nacos-Server上的配置修改為hello_lars,看看能否動(dòng)態(tài)更新。修改Nacos-Server上的配置后,刷新http://127.0.0.1:9002/config/get頁(yè)面,結(jié)果更新為新的配置了。

           

          可以看到我通過(guò)Nacos-server的控制臺(tái)進(jìn)行配置的修改,客戶端服務(wù)nacos-config也相應(yīng)的進(jìn)行熱更新。



          我是【程序員二胡,熱愛(ài)技術(shù)分享,信仰終身學(xué)習(xí),愛(ài)運(yùn)動(dòng)旅游,也是一個(gè)萌新up主,我們下期再見(jiàn)!

          感謝點(diǎn)贊支持下哈 

          瀏覽 47
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲精品一级二级 | 天天操夜夜视频 | 亚洲在线视频 | 日韩AV手机版 | 操逼com|