配置中⼼,讓微服務更『智能』
宋順
攜程架構架構研發部技術專家
攜程架構架構研發部技術專家
2016年初加⼊攜程,負責中間件産品的研發⼯作
開源配置中⼼Apollo主要作者
/ctripcorp/apollo
畢業于複旦⼤學軟體⼯程系,曾就職于⼤衆點評,
擔任背景系統技術負責⼈
1. 為什麼需要配置中⼼?
2. 配置中⼼的⼀般模樣
3. 如何讓微服務更『智能』?
4. 配置中⼼的最佳實踐
1. 為什麼需要配置中⼼?
2. 配置中⼼的⼀般模樣
3. 如何讓微服務更『智能』?
4. 配置中⼼的最佳實踐
配置即『控制』
程式的釋出其實和衛星的發射有⼀些相似之處
衛星發射升天後
• 處于⾃主駕駛狀态,按照預設的軌道運⾏
• 間歇可收到地⾯的『控制』信号對運⾏姿态進⾏調整
程式釋出到⽣産環境後
• 按照預設的邏輯運⾏
• 通過調整配置參數來動态調整程式的⾏為
• 這些配置參數就代表着我們對程式的『控制』信号
圖⽚來源:/space/a7194/how-it-works-nasas-experimental-laser-communication-system/
配置需要治理
權限控制、審計⽇志
灰階釋出、配置復原
不同環境、叢集管理
微服務的複雜性
單體應⽤時代
• 應⽤數量少
• 配置簡單
• 運維可以登機器修改配置⽂件
微服務時代
• 應⽤數量多
• 配置數量也急劇增⻓
• ⼈⼯登機器修改不僅效率低,還容易出錯
圖⽚來源:/blog/introduction-to-microservices/
需要⼀個統⼀的配置中⼼來管理微服務的配置!
1. 為什麼需要配置中⼼?
2. 配置中⼼的⼀般模樣
3. 如何讓微服務更『智能』?
4. 配置中⼼的最佳實踐
1. 為什麼需要配置中⼼?
2. 配置中⼼的⼀般模樣(以開源配置中⼼Apollo為例)
3. 如何讓微服務更『智能』?
4. 配置中⼼的最佳實踐
治理能⼒
01 統⼀管理不同環境、不同叢集的配置
⽀持灰階釋出 02
03 ⽀持已釋出的配置復原
完善的權限管理、操作審計⽇志 04
可⽤性
配置即『控制』
• 是以在⼀定程度上,配置中⼼已經成為了微服務的⼤腦
• 作為⼤腦,可⽤性要求顯然是⾮常⾼的
Apollo at a glance
服務端⾼可⽤
用戶端⾼可⽤
可⽤性場景舉例
實時性
配置即『控制』,是以我們希望我們的控制指令能迅速、準确地傳達到應⽤程式
圖⽚來源:/toysoxo-shipping-delivery-informaton/
配置釋出的過程
發送ReleaseMessage的實作⽅式
1. 為什麼需要配置中⼼?
2. 配置中⼼的⼀般模樣
3. 如何讓微服務更『智能』?
4. 配置中⼼的最佳實踐
開關
釋出開關
• 釋出開關⼀般⽤于釋出過程中,⽐如:
1. 有些新功能依賴于其它系統的新接⼝,⽽其它系統的釋出周期未必和⾃⼰的系統⼀緻,
可以加個釋出開關,預設把該功能關閉,等依賴系統上線後再打開。
2. 有些新功能有較⼤⻛險,可以加個釋出開關,上線後⼀旦有問題可以迅速關閉
• 需要注意的是,釋出開關應該是短暫存在的(1-2周),⼀旦功能穩定後需要及時清除開關代
碼。
實驗開關
• A/B測試
• 針對特定⽤戶應⽤新的推薦算法
• 針對特定百分⽐的⽤戶使⽤新的下單流程
• 功能驗證
• 有些重⼤功能已經對外宣稱在某年某⽇釋出
• 可以事先發到⽣産環境,隻對内部⽤戶打開,測試沒問題後按時對