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