日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

20 图|Nacos 手摸手教程

發(fā)布時間:2025/3/11 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20 图|Nacos 手摸手教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


Nacos 作為服務(wù)注冊中心、配置中心,已經(jīng)非常成熟了,業(yè)界的標桿,在講解 Nacos 的架構(gòu)原理之前,我先給大家來一篇開胃菜:講解 Nacos 如何使用。

涉及到如下兩個話題:

  • 用 Nacos 作為注冊中心。

  • 用 Nacos 作為配置中心。

由于本篇是針對 Nacos 的使用和配置教程,可能會略顯枯燥,建議大家快速瀏覽一遍,然后收藏轉(zhuǎn)發(fā)下,以后說不定就會用上了~~

本篇主要內(nèi)容如下:

Nacos 是阿里巴巴開源的一個更易于構(gòu)建云原生應用的動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺。

一、Nacos 作為注冊中心

1.1 引入 Nacos 服務(wù)發(fā)現(xiàn)組件

passjava-common模塊的pom.xml文件引入Nacos 服務(wù)發(fā)現(xiàn)組件

<!--?nacos?discovery?服務(wù)發(fā)現(xiàn)組件--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>

1.2 下載 Nacos Server 工具包并啟動

注意:我在 Windows 和 Mac 上都測試過,都可以正常使用。

  • 下載Nacos Server 壓縮包

https://github.com/alibaba/nacos/releases

啟動 Server,進入解壓后文件夾或編譯打包好的文件夾,找到如下相對文件夾 nacos/bin,并對照操作系統(tǒng)實際情況之下如下命令。

  • Linux/Unix/Mac 操作系統(tǒng),執(zhí)行命令 sh startup.sh -m standalone

  • Windows 操作系統(tǒng),執(zhí)行命令 cmd startup.cmd

  • windows執(zhí)行startupm.cmd遇到問題:

    λ?startup.cmd??????????????????????????????????????????????????????Please?set?the?JAVA_HOME?variable?in?your?environment,?We?need?java(x64)!?jdk8?or?later?is?better!

    解決方案:

    修改startup.cmd文件中的 %JAVA_HOME%

    %JAVA_HOME%?替換為?C:\Program?Files\Java\jdk1.8.0_131

    啟動成功:

    1.3 每個微服務(wù)都配置 Nacos Server 地址

    • 配置Nacos Server 地址

    在passjava-question、passjava-channel、passjava-content、passjava-member、passjava-study 應用的 /src/main/resources/application.yml配置文件中配置 Nacos Server 地址

    spring:cloud:nacos:discovery:server-addr:?127.0.0.1:8848

    1.4 添加注解

    為每個服務(wù)使用 @EnableDiscoveryClient 注解開啟服務(wù)注冊與發(fā)現(xiàn)功能

    @EnableDiscoveryClient @MapperScan("com.jackson0714.passjava.question.dao") @SpringBootApplication public?class?PassjavaQuestionApplication?{public?static?void?main(String[]?args)?{SpringApplication.run(PassjavaQuestionApplication.class,?args);}}

    1.5 配置微服務(wù)的名稱

    spring:application:name:?passjava-question

    1.6 訪問nacos server后臺

    • 登錄后臺

    http://localhost:8848/nacos/index.html#/login

    用戶名:nacos

    密碼:nacos

    • 查看已注冊的服務(wù)

      passjava-channel?渠道微服務(wù) passjava-member?用戶微服務(wù) passjava-study?學習微服務(wù) passjava-question?問題微服務(wù) passjava-content?內(nèi)容微服務(wù)

    二、Nacos 作為配置中心

    2.1 傳統(tǒng)配置方式

    • application.properties文件中定義兩個配置:

    member.nickname = "悟空聊架構(gòu)" member.age = "18"
    • 示例控制器中定義私有變量nickname和age,@value代表從配置中取值

    @Value("${member.nickname}") private??String?nickname;@Value("$member.age") private??Integer?age;
    • 示例控制器中定義方法:獲取nick和age的值

    @RequestMapping("/test-local-config") public?R?testLocalConfig()?{return?R.ok().put("nickname",?nickname).put("age",?age); }
    • 測試結(jié)果

    mark

    總結(jié):從配置文件中獲取配置。

    這種方式的缺點是什么呢?如果要修改配置參數(shù),則需要重新啟動服務(wù)。如果服務(wù)很多,則需要重啟所有服務(wù),非常不方便。

    有沒有什么辦法不停服務(wù)修改配置而且使其生效呢?

    答案:有的,用Spring Cloud Alibaba的Nacos 組件就可以完成。

    2.2 引入Nacos依賴

    PassJava-Common項目的pom.xml文件引入Spring Cloud Alibaba Nacos Config依賴

    <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>

    2.3 配置Nacos元數(shù)據(jù)

    • passjava-member 添加 /src/main/resources/bootstrap.properties 配置文件(注意:bootstrap.properties 優(yōu)先級高于其他配置文件)

    • 配置 Nacos Config 元數(shù)據(jù)

    bootstrap.propertiesspring.application.name=passjava-member spring.cloud.nacos.config.server-addr=127.0.0.1:8848

    2.4 Nacos后臺新增配置

    Data ID: passjava-member.properties

    Group: DEFAULT_GROUP

    配置格式:

    member.nick="悟空" member.age=10Nacos后臺新增配置

    2.5 開啟動態(tài)刷新配置功能

    添加注解@RefreshScope開啟動態(tài)刷新配置功能

    @RefreshScope @RestController @RequestMapping("member/sample") public?class?SampleController?{}

    可以從控制臺看到日志信息:

    Refresh keys changed: [member.age] 2020-04-19 23:34:07.154 INFO 8796 --- [-127.0.0.1_8848] c.a.nacos.client.config.impl.CacheData : [fixed-127.0.0.1_8848] [notify-ok] dataId=passjava-member.properties, group=DEFAULT_GROUP, md5=df136e146c83cbf857567e75acb11e2b, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@4f49b78b 2020-04-19 23:34:07.154 INFO 8796 --- [-127.0.0.1_8848] c.a.nacos.client.config.impl.CacheData : [fixed-127.0.0.1_8848] [notify-listener] time cost=529ms in ClientWorker, dataId=passjava-member.properties, group=DEFAULT_GROUP, md5=df136e146c83cbf857567e75acb11e2b, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@4f49b78b

    member.age 更新了,通知了member服務(wù),刷新了配置。對應的配置id為passjava-member.properties,分組為DEFAULT_GROUP。監(jiān)聽器為com.alibaba.cloud.nacos.refresh.NacosContextRefresher

    2.6 測試結(jié)果

    訪問:http://localhost:10000/member/sample/test-local-config

    結(jié)果:nickname和age和Nacos后臺配置一致

    結(jié)論:只用在Nacos后臺改配置即可實時修改配置。

    注意:Nacos的配置項優(yōu)先級高于application.propertite里面的配置。

    測試結(jié)果

    2.7 命名空間

    我們現(xiàn)在有5個微服務(wù),每個微服務(wù)用到的配置可能都不一樣,那不同微服務(wù)怎么樣獲取自己微服務(wù)的配置呢?

    這里可以用到命名空間,我們針對每個微服務(wù),都創(chuàng)建一個命名空間。

    • 創(chuàng)建命名空間

      創(chuàng)建命名空間
    #?創(chuàng)建5個命名空間 passjava-channel passjava-content passjava-member passjava-question passjava-study命名空間
    • 命名空間下創(chuàng)建配置

      我們打開配置列表菜單,可以看到有五個命名空間。

      命名空間下創(chuàng)建配置

    選中passjava-channel命名空間,然后新增配置項,與之前新增配置的步驟一致,也可以通過克隆命名空間來克隆配置。

    克隆配置
    • 修改指定的命名空間

      bootstrap.properties配置命名空間

      spring.cloud.nacos.config.namespace=passjava-member
    • 測試配置是否生效

      修改passjava-member.properties的配置內(nèi)容

      passjava-member.properties

      重啟member服務(wù)

      訪問方法:/member/sample/test-local-config

      執(zhí)行結(jié)果:

      {"msg":?"success","code":?0,"nickname":?"\"悟空member\"","age":?30 }

      說明獲取的是passjava-member命名空間的配置

    2.8 分組

    如果我們有多套環(huán)境,比如開發(fā)環(huán)境,測試環(huán)境,生產(chǎn)環(huán)境,每一套環(huán)境的配置參數(shù)不一樣,那配置中心該如何配置呢?

    我們可以使用配置中心的分組功能。每一套環(huán)境都是一套分組。

    • 首先創(chuàng)建一套dev環(huán)境配置項,然后克隆配置到test和prod環(huán)境

    dev環(huán)境dev、test、prod分組
    • bootstrap.properties配置當前使用的分組:prod

    spring.cloud.nacos.config.group=prod
    • 測試獲取生產(chǎn)環(huán)境配置

      {"msg":?"success","code":?0,"nickname":?"\"悟空-prod\"","age":?10 }

      可以看到獲取到的是prod分組的配置

    2.9 多配置集

    我們可以將application.yml文件中的datasource、mybatis-plus等配置進行拆解,放到配置中心。group可以創(chuàng)建3套,dev/test/prod。

    2.9.1 配置中心新建datasource.yml 配置

    datasource.yml 配置

    2.9.2 配置中心新建mybatis.yml 配置

    mybatis.yml配置

    2.9.3 配置中心新建more.yml 配置

    more.yml配置

    2.9.4 克隆dev環(huán)境配置到test和prod環(huán)境

    mark

    2.9.5 bootstrap.properties增加nacos配置,application.yml注釋配置

    spring.application.name=passjava-member spring.cloud.nacos.config.server-addr=127.0.0.1:8848spring.cloud.nacos.config.namespace=passjava-member spring.cloud.nacos.config.group=prodspring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml spring.cloud.nacos.config.extension-configs[0].group=dev spring.cloud.nacos.config.extension-configs[0].refresh=truespring.cloud.nacos.config.extension-configs[1].data-id=mybatis.yml spring.cloud.nacos.config.extension-configs[1].group=dev spring.cloud.nacos.config.extension-configs[1].refresh=truespring.cloud.nacos.config.extension-configs[2].data-id=more.yml spring.cloud.nacos.config.extension-configs[2].group=dev spring.cloud.nacos.config.extension-configs[2].refresh=true

    2.9.6 測試配置是否生效

    • 測試passjava-member.properties和more.yml配置是否生效

    請求url:http://localhost:10000/member/sample/test-local-config

    返回配置的nick和age,且端口是10000,且member服務(wù)注冊到注冊中心

    {"msg":?"success","code":?0,"nickname":?"\"悟空-prod1\"","age":?22 }
    • 測試datasource.yml和mybatis.yml配置是否生效

    請求url:http://localhost:10000/member/member/list

    返回數(shù)據(jù)庫查詢結(jié)果

    {"msg":?"success","code":?0,"page":?{"totalCount":?0,"pageSize":?10,"totalPage":?0,"currPage":?1,"list":?[]j} }

    說明以上配置都生效了。

    更多配置項

    2.9.10 使用Nacos總結(jié)

    • 1.引入Nacos依賴

    • 2.配置Nacos數(shù)據(jù)源

    • 3.配置中心配置數(shù)據(jù)集DataId和配置內(nèi)容

    • 4.開啟動態(tài)刷新配置@RefreshScope

    • 5.獲取配置項的值@value

    • 6.優(yōu)先使用配置中心的配置

    • 7.使用命名空間namespace來創(chuàng)建各服務(wù)的配置

    • 8.使用分組group來區(qū)分不同環(huán)境

    • 9.使用多配置集extension-configs區(qū)分不同類型的配置

    往期推薦

    SpringCloud Ribbon中的7種負載均衡策略!


    SpringCloud Nacos + Ribbon 調(diào)用服務(wù)的 2 種方法!


    Spring Cloud Alibaba Nacos 的 2 種健康檢查機制!


    總結(jié)

    以上是生活随笔為你收集整理的20 图|Nacos 手摸手教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。