Apollo

配置中心:統(tǒng)一管理各種應(yīng)用配置的基礎(chǔ)服務(wù)組件。

Apollo工作原理

工作示意圖
  • 統(tǒng)一管理不同環(huán)境惹谐、不同集群的配置
  • 配置修改實時生效(熱發(fā)布)
  • 版本發(fā)布管理
  • 灰度發(fā)布(Nacos不支持)
  • 權(quán)限管理驼卖、發(fā)布審核
底層原理
  • 【Config Service】提供配置的讀取、推送等功能怎囚,服務(wù)對象是Apollo 客戶端
  • 【Admin Service】提供配置的修改桥胞、發(fā)布等功能考婴,服務(wù)對象是Apollo Portal(管理界面)
  • Eureka提供服務(wù)注冊和發(fā)現(xiàn)沥阱,Config Service和Admin Service都是多實例伊群、無狀態(tài)部署,所以**需要將自己注冊到 Eureka并保持心跳
  • 在Eureka之上架了一層Meta Server用于封裝Eureka的服務(wù)發(fā)現(xiàn)接口
  • Client通過域名訪問Meta Server獲取【Config Service】服務(wù)列表(IP+Port),而后直接通過IP+Port訪問服務(wù)蛮寂,同時在Client側(cè)會做load balance
  • Portal通過域名訪問Meta Server獲取【Admin Service】服務(wù)列表(IP+Port)酬蹋,而后直接通過IP+Port訪問服務(wù),同時在Portal側(cè)會做load balance
  • 為了簡化部署范抓,我們實際上會把Config Service匕垫、Eureka和Meta Server三個邏輯角色部署在同一個JVM進程

核心概念

  • 獲取層級:應(yīng)用app > 環(huán)境env > 集群 cluster > 命名空間namespace(可繼承公共命名空間,一個namespace相當于一個配置文件)
  • 配置層級:環(huán)境env > 其他... 【env】只能從 {OS_ENV, JVM_FIELD} 中獲取寞秃,其他的可以在配置文件配置偶惠。

使用

  1. 創(chuàng)建數(shù)據(jù)庫表。在數(shù)據(jù)庫運行指定SQL文件即可忽孽。
  2. 啟動服務(wù)

github下載(找加速下載)三個文件:adminservice厘线、configservice出革、portal,取出xxx-2.0.1.jar放入同一目錄费薄。隨后創(chuàng)建bat文件并啟動:

echo

set url="118.190.134.156:3306"
set username="root"
set password="dingyuanseu123456"
set charEnco="characterEncoding=utf8&serverTimezone=UTC"
set configHost="http://localhost"
set configPort="8080"

start "configService" java -Xms256m -Xmx256m -Dapollo_profile=github -Dspring.datasource.url=jdbc:mysql://%url%/ApolloConfigDB?%charEnco% -Dspring.datasource.username=%username% -Dspring.datasource.password=%password% -jar apollo-configservice-2.0.1.jar -Dserver.port=%configPort%

start "adminService" java -Xms256m -Xmx256m -Dapollo_profile=github -Dspring.datasource.url=jdbc:mysql://%url%/ApolloConfigDB?%charEnco% -Dspring.datasource.username=%username% -Dspring.datasource.password=%password% -jar apollo-adminservice-2.0.1.jar -Dserver.port=8090

java -Xms256m -Xmx256m -Dapollo_profile=github,auth -Ddev_meta=%configHost%:%configPort%/ -Dspring.datasource.url=jdbc:mysql://%url%/apolloPortalDB?%charEnco% -Dspring.datasource.username=%username% -Dspring.datasource.password=%password% -Dapollo_profile=github,auth -Ddev_meta=%configHost%:%configPort%/ -Dsever.port=8070 -jar apollo-portal-2.0.1.jar

訪問控制臺【localhost:8070/】即可楞抡,默認賬密【apollo/admin】,打開的網(wǎng)頁召廷,即是【Apollo 配置中心】的web頁面。

  1. 根據(jù)要求【創(chuàng)建應(yīng)用】【新增配置】【發(fā)布】先紫。
  2. Maven 項目中獲取配置信息遮精。

首先配置依賴败潦,有了該依賴即可調(diào)用 Apollo Service。

<dependency>
  <groupId>com.ctrip.framework.apollo</groupId>
  <artifactId>apollo-client</artifactId>
  <version>2.0.1</version>
</dependency>

SpringBoot 集成 Apollo

  • 啟動類 XxxApplication】:添加注解【@EnableApolloConfig】開啟Apollo檬洞,并添加【env】系統(tǒng)變量沟饥。env本身可以配置在 { 環(huán)境變量,VMoptions澎灸,JVM屬性 }遮晚,配置方式分別為:

  • 環(huán)境變量:在系統(tǒng)環(huán)境變量,或者用戶環(huán)境變量中配置糜颠,獲取方式:System.getenv("env")

  • VMoptions:在IDEA的configurations中配置:-Denv=DEV

  • JVM屬性:在啟動類中前面添加:System.*setProperty*("env", "DEV");

  • application.yml】:配置【app.id】【cluster】【namespace】【meta】【cache-url】以及其他一些屬性萧求,方式如下:


app:
  id: spring-cloud-config

apollo:
  bootstrap:
  enabled: true **#****開啟****apollo**
namespaces: application, TEST2.apollo-settings1, log4j-config **#application****是默認命名空間**
  eagerLoad:
  enabled: false
 cluster: DEFAULT
  meta: [http://localhost:8080](http://localhost:8080)
  cache-dir: d:/cache/apolloCache
  • Question:為什么不在application.yml中配置【env】屬性呢?

主觀上元旬,往往開發(fā)在一臺機器,測試坑资、上線在其他機器穆端,【env】值由機器決定,因此【env】作為系統(tǒng)環(huán)境變量更合適攒巍;

客觀上荒勇,apollo-client 未顯式提供【env】配置,只支持從【os環(huán)境變量】和【JVM屬性】中獲裙料琛;配置文件配置了也獲取不到。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哨颂,一起剝皮案震驚了整個濱河市相种,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌箫措,老刑警劉巖衬潦,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異弦牡,居然都是意外死亡漂羊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門椭豫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赏酥,“玉大人,你說我怎么就攤上這事算柳。” “怎么了瞬项?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵囱淋,是天一觀的道長。 經(jīng)常有香客問我妥衣,道長戒傻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任芦倒,我火速辦了婚禮兵扬,結(jié)果婚禮上口蝠,老公的妹妹穿的比我還像新娘。我一直安慰自己妙蔗,他們只是感情好,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布狞谱。 她就那樣靜靜地躺著跟衅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伶跷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天蹈集,我揣著相機與錄音雇初,去河邊找鬼。 笑死靖诗,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的刊橘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼攒庵,長吁一口氣:“原來是場噩夢啊……” “哼败晴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起稳懒,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤僚祷,失蹤者是張志新(化名)和其女友劉穎佛致,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體感昼,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡罐脊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年萍桌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恃逻。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖寇损,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芙沥,我是刑警寧澤浊吏,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布卿捎,位于F島的核電站配紫,受9級特大地震影響躺孝,放射性物質(zhì)發(fā)生泄漏底桂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一于个、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧暮顺,春花似錦、人聲如沸羽氮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腕窥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間簇爆,已是汗流浹背倾贰。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工匆浙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人首尼。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓软能,卻偏偏與公主長得像举畸,于是被迫代替她去往敵國和親查排。 傳聞我的和親對象是個殘疾皇子抄沮,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 傳統(tǒng)應(yīng)用配置問題 靜態(tài)配置傳統(tǒng)應(yīng)用的配置砂代,都是靜態(tài)配置,寫在配置文件中率挣,運行時無法動態(tài)修改,如果修改之后捶箱,就需要重...
    一生逍遙一生閱讀 3,431評論 0 1
  • 微服務(wù)配置中心 Apollo 使用指南丁屎,以下文檔根據(jù) apollo wiki 整理而來谦炬,部分最佳實踐說明和代碼改造...
    hiColors閱讀 3,120評論 0 1
  • Apollo(阿波羅)是攜程開源的分布式配置中心节沦,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置甫贯,支持配置熱發(fā)布并實時...
    云時代的運維開發(fā)閱讀 1,144評論 0 1
  • Apollo(阿波羅)是攜程框架部門研發(fā)的分布式配置中心叫搁,能夠集中化管理應(yīng)用不同環(huán)境供炎、不同集群的配置,配置修改后能...
    BeckJin閱讀 3,756評論 0 1
  • 前言 眾所周知Apollo是攜程開源的配置中心音诫,所以中文文檔也比較完善竭钝,因此這里就不過多贅述細節(jié)了雹洗。本文的主要目的...
    端碗吹水閱讀 705評論 0 3