摘要:比如使用的時候指定使用哪個環(huán)境的配置在微服務(wù)架構(gòu)下,服務(wù)的數(shù)量會比之前的單體應(yīng)用多,部署的節(jié)點數(shù)量也會很多。今天主要是講下在中如何對接進行配置管理。
問題背景
在實際工作中,我們的開發(fā)環(huán)境,測試環(huán)境,生產(chǎn)環(huán)境對應(yīng)的 Mysql 數(shù)據(jù)庫,Redis 這些信息都不一樣,每個環(huán)境都有對應(yīng)的一套配置,在 Spring Boot 中我們通常會編寫多個配置文件,也就是每個環(huán)境一個配置文件。
比如:
application-dev.properties
spring.datasource.druid.url=jdbc:mysql://192.168.0.111:3306/xxx
application-test.properties
spring.datasource.druid.url=jdbc:mysql://192.168.0.112:4306/xxx
使用的時候指定使用哪個環(huán)境的配置:
java -jar xxx.jar --spring.profiles.active=test
在微服務(wù)架構(gòu)下,服務(wù)的數(shù)量會比之前的單體應(yīng)用多,部署的節(jié)點數(shù)量也會很多。當某些配置發(fā)生修改的時候,我們需要重新修改項目中的代碼,然后重新發(fā)布。當然也可以直接通過上面的 --xxx 方式進行參數(shù)的傳遞,這種方式不好的地方在于項目中的配置跟線上發(fā)布的對應(yīng)不上。
最簡單的一個示例,直接修改項目中的配置,然后重新編譯,發(fā)布,你改一次配置至少得10來分鐘。對于某些活動的應(yīng)用配置,可能在某個時候突然需要進行緊急修改,這樣一來就被時間耽誤了事情。
最好的辦法是使用配置中心來集中管理配置,可以做到配置修改立馬更新到客戶端,只要1秒鐘就可以搞定配置的修改,優(yōu)勢很明顯。
框架推薦今天給大家介紹一款在社區(qū)非常火的配置中心:Apollo
Github : https://github.com/ctripcorp/...
Apollo(阿波羅)是攜程框架部門研發(fā)的分布式配置中心,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性,適用于微服務(wù)配置管理場景。
對Apollo本身就不做過多細致的介紹,感興趣的朋友可以去 Github 詳細了解。
今天主要是講下在 Spring Boot 中如何對接 Apollo 進行配置管理。
首先你得部署好了Apollo,Apollo提供了一個快速體驗包,大家可以下載下來直接啟動,具體操作請參考 Github 。不過官方本身也為我們準備了一個演示的地址,我們可以直接用來學(xué)習(xí):http://106.12.25.204:8070 賬號/密碼:apollo/admin
Spring Boot中使用進入演示地址,找一個應(yīng)用點進去:
我們基于默認的集群的application空間來做演示
準備一個 Spring Boot 項目,加入 Apollo Client 的 Maven 依賴:
com.ctrip.framework.apollo apollo-client 1.1.0
然后配置Apollo的信息,配置放在application.properties中:
app.id=apollo-demo apollo.meta=http://106.12.25.204:8080 apollo.bootstrap.enabled=true apollo.bootstrap.namespaces=application
app.id:身份信息,就是應(yīng)用名稱,跟我們第一張圖點進去的一樣
apollo.meta:Meta Server(Config Service)
apollo.bootstrap.enabled:項目啟動的bootstrap階段,向Spring容器注入配置信息
apollo.bootstrap.namespaces:注入命名空間
環(huán)境我們直接在main方法中指定,演示方便:
@SpringBootApplication public class App { public static void main(String[] args) { // 指定環(huán)境(開發(fā)演示用,不能用于生產(chǎn)環(huán)境)) System.setProperty("env", "DEV"); SpringApplication.run(App.class, args); } }
我們可以準備一個接口進行測試配置的讀取,配置讀取的方式有很多種,我們就用最常用的@Value
@RestController public class DemoController { @Value("${test.username}") private String name; @GetMapping("/callHello") public String callHello() { return name; } }
當配置修改之后,這邊獲取的值也會實時修改,大家可以自己測試下。本文只是簡單的帶大家體驗了一下如何使用,還有很多東西沒有講解,如果大家想學(xué)習(xí)的話可以去我的網(wǎng)站進行學(xué)習(xí),我錄制了一套課程。
課程地址:http://cxytiandi.com/course/23 課程大綱課程介紹
概念介紹
架構(gòu)設(shè)計介紹
Apollo快速部署
后臺介紹
Apollo整合Spring Boot
配置監(jiān)聽
存儲Json數(shù)據(jù)
擴展使用
生產(chǎn)環(huán)境部署講解
歡迎加入我的知識星球,一起交流技術(shù),免費學(xué)習(xí)猿天地的所有課程,包括這套Apollo目前已經(jīng)有20+課程了,后續(xù)還會更新下去。
配置中心Apollo實戰(zhàn)
實戰(zhàn)分庫分表中間件Sharding-JDBC
實戰(zhàn)分布式任務(wù)調(diào)度框架Elastic Job
微服務(wù)架構(gòu)實戰(zhàn)課程-送源碼
API加密框架原理解密
Spring Boot中的Mongodb多數(shù)據(jù)源擴展
Spring Boot + Vue前后端分離實戰(zhàn)
Zookeeper-請了解下
Spring Boot從入門到精通課程
實戰(zhàn)Java爬蟲課程
實戰(zhàn)Mongodb課程
等等..................
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73890.html
摘要:我們是不是很好奇配置中心如何做到實時更新并且通知到客戶端的這也是一個面試中經(jīng)常會問到的題目??蛻舳说玫綘顟B(tài)碼是并且會根據(jù)立即去服務(wù)端拉取最新的配置。引言 記得我們那時候剛開始學(xué)習(xí)Java的時候都只是一個單體項目,項目里面的配置基本都是寫在項目里面的properties文件中,比如數(shù)據(jù)庫配置啥的,各種邏輯開關(guān),一旦這些配置修改了,還需要重啟項目這修改才會生效。隨著各種微服務(wù)的誕生,服務(wù)的...
摘要:我們是不是很好奇配置中心如何做到實時更新并且通知到客戶端的這也是一個面試中經(jīng)常會問到的題目。雖然是攜程開源的,但是攜程內(nèi)部也不用它??蛻舳说玫綘顟B(tài)碼是并且會根據(jù)立即去服務(wù)端拉取最新的配置。通過定時任務(wù)的補充,可以讓配置達到最終的一致性。 引言記得我們那時候剛開始學(xué)習(xí)Java的時候都只是一個單體項目,項目里面的配...
摘要:宋體自年被開源以來,很快便成為了容器編排領(lǐng)域的標準。宋體年月,樂心醫(yī)療的第一個生產(chǎn)用集群正式上線。所以于年推出后,樂心醫(yī)療的運維團隊在開會討論之后一致決定盡快遷移到。Kubernetes 自 2014 年被 Google 開源以來,很快便成為了容器編排領(lǐng)域的標準。因其支持自動化部署、大規(guī)模可伸縮和容器化管理等天然優(yōu)勢,已經(jīng)被廣泛接納。但由于 Kubernetes 本身的復(fù)雜性,也讓很多企業(yè)的...
摘要:零為何要學(xué)源碼簡單,是我現(xiàn)在看起來最簡單的源碼不會像封裝了一層又一層,把人繞暈,而沒有那么多封裝,上手快,我們學(xué)習(xí)就應(yīng)該從簡單的開始憑什么非要去學(xué)封的像粽子一樣的源碼,我們就是要去學(xué)簡簡單單,平時樸素,接地氣的源碼最接近業(yè)務(wù)代碼的源碼。 零 為何要學(xué)apollo源碼 1 簡單,Apollo是我現(xiàn)在看起來最簡單的源碼不會像spring封裝了一層又一層,把人繞暈,而apollo沒有那么多封...
摘要:今天逛了逛,順手精選出了一下近幾個月以來上最熱門的個項目。相關(guān)閱讀正式開源,幫助應(yīng)用快速容器化未來可能會上熱門的項目地址介紹哈哈,皮一下很開心。這是我自己開源的一份文檔,目前仍在完善中,歡迎各位英雄好漢一起完善。 showImg(https://segmentfault.com/img/remote/1460000015766827?w=391&h=220);今天逛了逛Github,順...
閱讀 2879·2021-11-22 11:56
閱讀 3597·2021-11-15 11:39
閱讀 926·2021-09-24 09:48
閱讀 789·2021-08-17 10:14
閱讀 1368·2019-08-30 15:55
閱讀 2780·2019-08-30 15:55
閱讀 1343·2019-08-30 15:44
閱讀 2813·2019-08-30 10:59