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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

微服务-Nacos动态配置中心

發布時間:2024/3/12 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微服务-Nacos动态配置中心 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

回想之前的項目,尤其是項目分多模塊的時候,一般就會有一個公共包大多是相關工具類,因為比較獨立使得其他模塊調用方便,現在出來個需求為工具類參數進行動態控制,比如Redis工具類動態設定過期時間,除了這類在項目運行過程中需要動態修改,還有一類是在項目啟動時候需要動態加載,一個常見的例子就是在項目啟動時候讀取數據源信息…還要很多尤其是分布式的大環境下,使用微服務的公共配置中心組件來進行配置和管理。

配置選型

微服務中配置中心有很多,但是 Spring Cloud Config 業界標配是以下三個組件:

Spring Cloud ConfigSpring Cloud ConsulCloud Alibaba Nacos
組織/活躍度Spring社區/活躍Consul/活躍Alibaba/活躍
是否開源開源開源
實現方式git開源開源
性能開源開源開源
刷新頻率開源開源開源
易用程度開源開源開源
支持圖形界面開源開源開源
維護成本開源開源開源
容災機制開源開源開源
(歡迎補充)開源開源開源

前面兩種其實Spring社區推的一套,由于

Spring Cloud Config 是Spring開源社區的默認集成方式,由于下面的組件閉源的閉源像Eureka,不活躍的不活躍,漸漸別Alibaba的服務組件所取代,成為新的主流微服務框架Spring-Cloud-Alibaba,不僅僅活躍度高并且阿里還提供了很多豐富的云產品像ACM可以與云原生應用無縫集成,非常方便。
因為所有微服務系列基于Spring-Cloud-Alibaba,所以這里選用Nacos。

下載安裝

Nacos和其他服務比如Redis一樣,需要安裝Nacos Server提供服務,然后再使用客戶端進行連接.

第一步:

去Github的進行Nacos Server 下載 ,這里下載發布版1.2.1

同樣可以去Github下載Nacos源碼,通過Maven進行編譯打包成jar,然后運行即可,Nacos其實就是Springboot項目基于Tomcat包裝起來的。

第二步:

啟動Nacos服務,查看bin目錄可以知道不通系統平臺均有啟動停止腳本,然后進行啟動即可。

$ ls -lt bin/ -rwxr-xr-x 1 terry 1049089 4730 May 16 14:12 startup.sh -rw-r--r-- 1 terry 1049089 954 May 15 18:35 shutdown.cmd -rwxr-xr-x 1 terry 1049089 949 May 15 18:35 shutdown.sh -rw-r--r-- 1 terry 1049089 2836 May 15 18:35 startup.cmd $ bin/startup.sh,--.,--.'|,--,: : | Nacos 1.2.1 ,`--.'`| ' : ,---. Running in stand alone mode, All function modules | : : | | ' ,'\ .--.--. Port: 8848 : | \ | : ,--.--. ,---. / / | / / ' Pid: 25516 | : ' '; | / \ / \. ; ,. :| : /`./ Console: http://192.168.3.35:8848/nacos/index.html ' ' ;. ;.--. .-. | / / '' | |: :| : ;_ | | | \ | \__\/: . .. ' / ' | .; : \ \ `. https://nacos.io ' : | ; .' ," .--.; |' ; :__| : | `----. \ | | '`--' / / ,. |' | '.'|\ \ / / /`--' / ' : | ; : .' \ : : `----' '--'. / ; |.' | , .-./\ \ / `--'---' '---' `--`---' `----' ... 2020-06-05 17:08:07,895 INFO Nacos started successfully in stand alone mode. 2020-06-05 17:08:08,319 INFO Initializing Servlet 'dispatcherServlet' 2020-06-05 17:08:08,349 INFO Completed initialization in 28 ms

此時Nacos已經啟動成功默認單例模式,默認端口:8848

基本使用

添加依賴

在Maven項目的pom文件中添加Nacos客戶端依賴包

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

配置Nacos

  • 在微服務配置文件bootstrap.properties中添加Nacos Server服務地址

    spring.application.name=nacos-config-example spring.cloud.nacos.config.server-addr=127.0.0.1:8848
  • 動態監聽
    由于監需要啟動一個線程,所以在Spring中實現接口ApplicationRunner的run方法,監聽配置Nacos Serve中的文件nacos-config-example.properties

    @Autowiredprivate NacosConfigManager nacosConfigManager;@Overridepublic void run(ApplicationArguments args) throws Exception {System.out.println(String.format("Initial username=%s, userAge=%d", userName, userAge));nacosConfigManager.getConfigService().addListener("nacos-config-example.properties", "DEFAULT_GROUP", new Listener() {@Overridepublic void receiveConfigInfo(String configInfo) {Properties properties = new Properties();try {properties.load(new StringReader(configInfo));}catch (IOException e) {e.printStackTrace();}System.out.println("config changed: " + properties);}@Overridepublic Executor getExecutor() {return null;}});}
  • 動態刷新

    添加基本變量如下:

    @RestController @RefreshScope class SampleController {@AutowiredUserConfig userConfig;@Autowiredprivate NacosConfigManager nacosConfigManager;@Value("${name}")String userName;@Value("${age:25}")Integer age;@RequestMapping("/user")public String simple() {return "Hello Nacos Config!" + "Hello " + userName + " " + age + " [UserConfig]: "+ userConfig + "!" + nacosConfigManager.getConfigService();} }

    name,age是需要動態改變的變量,注意在類SampleController上有個注解@RefreshScope,動態刷新配置。

  • 測試

    打開終端:

    $ curl http://localhost:18084/user Hello Nacos Config!Hello null 18 # 修改name,age $ curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos-config-example.properties&group=DEFAULT_GROUP&content=user.id=1%0Auser.name=terry%0Auser.age=20" true $ curl http://localhost:18084/user Hello Nacos Config!Hello terry 20

    通過Nacos的API調用,即可實現動態配置,除此以外它也提供了界面來進行管理,這里就不多說了。

    后記

    所以微服務,動態配置和統一管理配置是一個必須要解決的問題,因為隨著項目的橫向縱向擴展,項目數也會越來越多,隨之而來得就是各個服務的配置統一配置和管理,就像一個工廠生產工件的型號,都有一個統一管理的地方,這樣才能更靈活,更輕松地構建,交付和管理分布式環境下微服務平臺。
    Nacos不一定非的是微服務項目才能用的,普通的項目比如:SSH,SSM,甚至Servlet都是可以用來做動態配置中心的,完全可以獨立出來。
    在微服務中除了做配置中心,還能做注冊中心等等,其實自該組件從阿里巴巴誕生而來,一直受到社區的強烈關注,在一定程度上成為了微服務的標準。

    參考文章

    • Nacos官方文檔 https://nacos.io/en-us/docs/what-is-nacos.html

    總結

    以上是生活随笔為你收集整理的微服务-Nacos动态配置中心的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。