微服务-Nacos动态配置中心
前言
回想之前的項目,尤其是項目分多模塊的時候,一般就會有一個公共包大多是相關工具類,因為比較獨立使得其他模塊調用方便,現在出來個需求為工具類參數進行動態控制,比如Redis工具類動態設定過期時間,除了這類在項目運行過程中需要動態修改,還有一類是在項目啟動時候需要動態加載,一個常見的例子就是在項目啟動時候讀取數據源信息…還要很多尤其是分布式的大環境下,使用微服務的公共配置中心組件來進行配置和管理。
配置選型
微服務中配置中心有很多,但是 Spring Cloud Config 業界標配是以下三個組件:
| 組織/活躍度 | 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
動態刷新
添加基本變量如下:
@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动态配置中心的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序登陆凭证校验出现{errcod
- 下一篇: Qualcomm msm8996 调试A