1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        推薦:Spring Cloud 整合 Nacos 實(shí)現(xiàn)服務(wù)配置中心

        共 6142字,需瀏覽 13分鐘

         ·

        2021-12-14 23:05

        不點(diǎn)藍(lán)字關(guān)注,我們哪來(lái)故事?




        ?正文如下?

        在之前的文章 《Nacos 本地單機(jī)版部署步驟和使用》 中,大家應(yīng)該了解了 Nacos 是什么?其中 Nacos 提供了動(dòng)態(tài)配置服務(wù)功能

        一、Nacos 動(dòng)態(tài)配置服務(wù)是什么?

        官方是這么說(shuō)的:

        Nacos 動(dòng)態(tài)配置服務(wù)是什么?

        動(dòng)態(tài)配置服務(wù)可以以中心化、外部化和動(dòng)態(tài)化的方式管理所有環(huán)境的應(yīng)用配置和服務(wù)配置。

        動(dòng)態(tài)配置消除了配置變更時(shí)重新部署應(yīng)用和服務(wù)的需要,讓配置管理變得更加高效和敏捷。

        配置中心化管理讓實(shí)現(xiàn)無(wú)狀態(tài)服務(wù)變得更簡(jiǎn)單,讓服務(wù)按需彈性擴(kuò)展變得更容易。

        Nacos 控制臺(tái)的功能

        Nacos 提供了一個(gè)簡(jiǎn)潔易用的 UI (控制臺(tái)樣例 Demo) 用來(lái)管理所有的服務(wù)和應(yīng)用的配置。Nacos 還提供包括配置版本跟蹤、金絲雀發(fā)布、一鍵回滾配置以及客戶(hù)端配置更新?tīng)顟B(tài)跟蹤在內(nèi)的一系列開(kāi)箱即用的配置管理特性,更安全地在生產(chǎn)環(huán)境中管理配置變更和降低配置變更帶來(lái)的風(fēng)險(xiǎn)。

        二、實(shí)戰(zhàn):Nacos 實(shí)現(xiàn)服務(wù)配置中心

        下面通過(guò)兩個(gè)大模塊實(shí)現(xiàn):

        • 在 Nacos 中新建或修改配置
        • 在 Spring Cloud 應(yīng)用中加載 Nacos 配置

        2.1 在 Nacos 新建配置

        根據(jù)上篇文章?Nacos 本地單機(jī)版部署步驟和使用?,部署運(yùn)行 Nacos ,然后打開(kāi)配置管理 - 配置列表頁(yè)面。地址:http://localhost:8848/nacos/index.html#/configurationManagement

        點(diǎn)擊右上角創(chuàng)建按鈕,進(jìn)入新建配置頁(yè)面,新建配置如圖所示:

        配置詳解:

        • Data ID :配置為 config-service.yml 。Data ID 是指定配置且保證全局唯一性。
        • Group :默認(rèn)配置為 DEFAULT_GROUP,不需要修改。
        • 配置格式 :選擇 YAML 配置文件格式
        • 配置內(nèi)容 :具體配置的內(nèi)容。這里簡(jiǎn)單配置了個(gè)鍵值對(duì),其實(shí)實(shí)際應(yīng)用場(chǎng)景,會(huì)配置包括存儲(chǔ)配置、端口配置和各種中間件配置等

        Nacos Data ID 標(biāo)準(zhǔn)格式如下:

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

        其中:

        • prefix :默認(rèn)為 spring.application.name 的值
        • spring.profiles.active:該案例為空,一般指定 dev test 等環(huán)境配置
        • file-extension:配置內(nèi)容格式

        2.2 創(chuàng)建 Spring Cloud 應(yīng)用

        1、創(chuàng)建應(yīng)用

        新建工程,工程名為:springcloud-nacos-config-sample

        工程項(xiàng)目地址在:

        • Github:https://github.com/JeffLi1993/springcloud-learning-example/tree/master/springcloud-nacos-config-sample
        • Gitee:https://gitee.com/jeff1993/springcloud-learning-example/tree/master/springcloud-nacos-config-sample

        2、配置 pom 依賴(lài)

        pom.xml 代碼如下:

        "1.0"?encoding="UTF-8"?>
        "http://maven.apache.org/POM/4.0.0"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        ?????????xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd">
        ????4.0.0

        ????springcloud
        ????springcloud-nacos-config-sample
        ????0.0.1-SNAPSHOT
        ????springcloud-nacos-config-sample?::?Nacos?服務(wù)配置中心案例

        ????
        ????
        ????????org.springframework.boot
        ????????spring-boot-starter-parent
        ????????2.3.2.RELEASE
        ????


        ????

        ????????
        ????????
        ????????????org.springframework.cloud
        ????????????spring-cloud-starter-alibaba-nacos-config
        ????????


        ????????
        ????????
        ????????????org.springframework.boot
        ????????????spring-boot-starter-web
        ????????


        ????????
        ????????
        ????????????org.springframework.boot
        ????????????spring-boot-starter-test
        ????????????test
        ????????


        ????????
        ????????????org.projectlombok
        ????????????lombok
        ????????????1.18.10
        ????????????true
        ????????


        ????


        ????
        ????????
        ????????????
        ????????????
        ????????????????org.springframework.cloud
        ????????????????spring-cloud-starter-alibaba-nacos-config
        ????????????????0.2.2.RELEASE
        ????????????

        ????????????
        ????????????
        ????????????
        ????????????????org.springframework.cloud
        ????????????????spring-cloud-dependencies
        ????????????????Hoxton.SR7
        ????????????????pom
        ????????????????import
        ????????????


        ????????

        ????


        ????
        ????????
        ????????????
        ????????????????org.apache.maven.plugins
        ????????????????maven-compiler-plugin
        ????????????????
        ????????????????????1.8
        ????????????????????1.8
        ????????????????

        ????????????

        ????????

        ????



        其中依賴(lài)了:

        • Spring Cloud Alibaba Nacos Config 依賴(lài)
        • Spring Cloud Hoxton.SR12 版本依賴(lài)

        3、創(chuàng)建配置文件

        在應(yīng)用工程的 resources 目錄下,創(chuàng)建 application.yml 文件,填入如下信息:

        server:
        ??port:?8083?#?服務(wù)端口

        spring:
        ??application:
        ????name:?config-service?#?服務(wù)名稱(chēng)

        其中:

        • server.port 指定了服務(wù)端口 8083
        • spring.application.name 指定了服務(wù)名稱(chēng) config-service ,要跟 Nacos 后臺(tái)新建配置的 Data ID 值保持一致。

        為啥呢?因?yàn)榭匆幌?Nacos Config 源碼 org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceLocator#locate 。源碼如下:

        if?(StringUtils.isEmpty(dataIdPrefix))?{
        ????dataIdPrefix?=?env.getProperty("spring.application.name");
        }

        如果 Data ID 沒(méi)有配置,則讀取 spring.application.name 服務(wù)名稱(chēng)配置。

        繼續(xù)創(chuàng)建 bootstrap.yml 文件,填入以下信息:

        spring:
        ??cloud:
        ????nacos:
        ??????config:
        ????????server-addr:?127.0.0.1:8848?#?Nacos?配置中心地址
        ????????file-extension:?yml?#?配置文件格式

        其中:

        • nacos.config.server-addr 指定了 Nacos 地址和端口
        • nacos.config.file-extension 指定了配置文件格式為 yml

        4、創(chuàng)建測(cè)試類(lèi)和啟動(dòng)類(lèi)

        新建 Spring Cloud 應(yīng)用啟動(dòng)類(lèi) ConfigApplication,代碼如下:

        /**
        ?*?Spring?Boot?服務(wù)啟動(dòng)類(lèi)
        ?*
        ?*?Created?by?bysocket.com?on?21/12/06.
        ?*/

        @SpringBootApplication??//?Spring?Boot?應(yīng)用標(biāo)識(shí)
        public?class?ProviderApplication?{

        ????public?static?void?main(String[]?args)?{
        ????????//?程序啟動(dòng)入口
        ????????//?啟動(dòng)嵌入式的?Tomcat?并初始化?Spring?環(huán)境及其各?Spring?組件
        ????????SpringApplication.run(ProviderApplication.class,args);
        ????}
        }

        然后新建測(cè)試控制類(lèi) ConfigController,代碼如下:

        /**
        ?*?Config?案例
        ?*?


        ?*?Created?by?bysocket.com?on?21/12/07.
        ?*/
        @RestController
        @Slf4j
        @RefreshScope
        @Data
        public?class?ConfigController?{

        ????@Value("${blog.name}")
        ????private?String?blogName;

        ????@GetMapping("/get")
        ????public?String?get()?{
        ????????return?"ConfigController#get?blog?name?=?"?+?getBlogName();
        ????}
        }

        代碼詳解如下:

        • @Value 注解 :@Value 對(duì) Bean 的字段或者方法參數(shù)進(jìn)行標(biāo)注,職責(zé)是基于表達(dá)式給字段或方法參數(shù)設(shè)置默認(rèn)屬性值。通常格式是注解 + SpEL 表達(dá)式,如 @Value("SpEL 表達(dá)式")。
        • @RefreshScope 注解 :允許在運(yùn)行時(shí)動(dòng)態(tài)刷新 Bean 的 Scope 實(shí)現(xiàn)。如果 Bean 被刷新,則在下次訪問(wèn) Bean 即執(zhí)行方法時(shí),會(huì)創(chuàng)建一個(gè)新實(shí)例。這說(shuō)明在應(yīng)用運(yùn)行時(shí),在 Nacos 控制臺(tái)修改了對(duì)應(yīng)配置的值后,會(huì)同時(shí)修改和生效該 Bean 這個(gè)值,達(dá)到動(dòng)態(tài)配置的效果。

        5、運(yùn)行測(cè)試

        啟動(dòng)上面的應(yīng)用,會(huì)在控制臺(tái)看到如下信息:

        2021-12-09?20:11:43.399??INFO?13909?---?[-127.0.0.1_8848]?o.s.c.a.n.c.NacosPropertySourceBuilder???:?Loading?nacos?data,?dataId:?'config-service.yml',?group:?'DEFAULT_GROUP'
        2021-12-09?20:11:43.400??INFO?13909?---?[-127.0.0.1_8848]?b.c.PropertySourceBootstrapConfiguration?:?Located?property?source:?[BootstrapPropertySource?{name='bootstrapProperties-config-service.yml'}]

        這里可以看出,已經(jīng)加載了 Nacos 配置信息 dataId: 'config-service.yml'group: 'DEFAULT_GROUP' 。

        最后在瀏覽器打開(kāi)地址 http://localhost:8083/get ,響應(yīng)如圖所示:

        動(dòng)態(tài)配置測(cè)試

        然后去 Nacos 控制臺(tái),配置列表點(diǎn)擊修改 config-service.yml 配置。將 www.bysocekt.com 改成 bysocket.com,然后確認(rèn)發(fā)布。如圖所示:

        可以從控制臺(tái)看到如下日志:

        2021-12-09?20:31:30.747??INFO?13909?---?[-127.0.0.1_8848]?o.s.c.e.event.RefreshEventListener???????:?Refresh?keys?changed:?[blog.name]

        重新訪問(wèn)下瀏覽器該地址 http://localhost:8083/get ,響應(yīng)如圖所示:

        說(shuō)明動(dòng)態(tài)刷新配置成功。

        三、Nacos 實(shí)現(xiàn)分布式配置小結(jié)

        本文詳細(xì)介紹了Spring Cloud 整合 Nacos 實(shí)現(xiàn)服務(wù)分布配置。關(guān)鍵兩點(diǎn):

        • 如何在 Nacos 設(shè)置對(duì)應(yīng)的配置
        • 如何在工程中通過(guò)依賴(lài)和注解關(guān)聯(lián)上對(duì)應(yīng)的外化配置

        參考資料

        • 官方案例:https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example
        • 官方文檔:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
        • https://blog.didispace.com/spring-cloud-alibaba-nacos-config-2/

        代碼示例地址

        本文案例,可以查看開(kāi)源項(xiàng)目 springcloud-learning-example 中的 springcloud-nacos-config-sample 模塊:

        • Github:https://github.com/JeffLi1993/springcloud-learning-example
        • Gitee:https://gitee.com/jeff1993/springcloud-learning-example

        以下系列教程推薦

        • 《Spring Cloud 系列教程》https://www.bysocket.com/spring-cloud
        • 《Spring Boot 2.x 系列教程》https://www.bysocket.com/springboot
        • 《Elasticsearch 入門(mén)系列教程》


        往期推薦

        你好,來(lái)交個(gè)朋友 ~

        二十年老程序員的二十條心得:警惕很久沒(méi)寫(xiě)過(guò)代碼的“大牛”

        “永遠(yuǎn)的神 YYDS”,其創(chuàng)造者被判刑 3 年

        冥想,你認(rèn)為有什么用?001#成長(zhǎng)

        Cache 工作原理和一致性策略

        圖解聊聊分庫(kù)分表:如何做到永不遷移數(shù)據(jù)和避免熱點(diǎn)?

        //////?END?//////
        ↓ 點(diǎn)擊下方關(guān)注,看更多架構(gòu)分享?↓

        ↓ 或加泥瓦匠微信,交流更多技術(shù)?↓

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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产黄片观看 | 日本熟妇视频 | 一区二区三区日韩精品 | 四虎永久影院 | 我撕校花衣服揉她胸好爽 | 国产一级a免一级a免费 | 扒开腿躁狂女人爽出白浆 | 国产无码乱伦视频 | 精品人妻无码一区二区三区不卡 | 丁香五月天天 |