在分布式系統(tǒng), 特別是采用微服務(wù)架構(gòu)中存在諸多服務(wù), 它們之間存在著復(fù)雜的調(diào)用和依賴關(guān)系, 我們需要一個(gè)框架對(duì)如下方面來(lái)進(jìn)行統(tǒng)一管理
服務(wù)注冊(cè)
服務(wù)提供方將服務(wù)注冊(cè)到集中的服務(wù)注冊(cè)中心服務(wù)發(fā)現(xiàn)
管理和更新服務(wù)的狀態(tài)和信息, 以供服務(wù)消費(fèi)方檢索并使用這些服務(wù)服務(wù)診斷
記錄每個(gè)服務(wù)的調(diào)用日志,并自動(dòng)生成調(diào)用鏈, 基于調(diào)用鏈進(jìn)行自動(dòng)的故障分析支持服務(wù)升降級(jí)和擴(kuò)展
在服務(wù)負(fù)載上升自動(dòng)擴(kuò)容, 在負(fù)載過(guò)高自動(dòng)降級(jí)服務(wù)安全管理
對(duì)服務(wù)請(qǐng)求的認(rèn)證, 授權(quán)檢查和安全審查, 以及帳號(hào)的管理服務(wù)監(jiān)控
對(duì)服務(wù)在系統(tǒng)層面,應(yīng)用層面和業(yè)務(wù)層面進(jìn)行全面的監(jiān)控和度量, 并根據(jù)度量數(shù)據(jù)進(jìn)行自動(dòng)的參數(shù)調(diào)整, 觸發(fā)擴(kuò)容, 熔斷及報(bào)警
早在2006年時(shí), IBM對(duì)于服務(wù)治理要點(diǎn)就進(jìn)行了總結(jié):
- 服務(wù)定義(服務(wù)的范圍、接口和邊界)
- 服務(wù)部署生命周期(各個(gè)生命周期階段)
- 服務(wù)版本治理(包括兼容性)
- 服務(wù)遷移(啟用和退役)
- 服務(wù)注冊(cè)中心(依賴關(guān)系)
- 服務(wù)消息模型(規(guī)范數(shù)據(jù)模型)
- 服務(wù)監(jiān)視(進(jìn)行問(wèn)題確定)
- 服務(wù)所有權(quán)(企業(yè)組織)
- 服務(wù)測(cè)試(重復(fù)測(cè)試)
- 服務(wù)安全(包括可接受的保護(hù)范圍)
以當(dāng)前流行的服務(wù)治理框架 Spring Cloud 為例, 它就包含如下機(jī)制來(lái)支持對(duì)服務(wù)的治理
- 分布式和版本控制的配置管理
- 服務(wù)注冊(cè)和發(fā)現(xiàn)
- 服務(wù)路由
- 服務(wù)間調(diào)用
- 負(fù)載均衡
- 熔斷機(jī)制
- 全局鎖
- 領(lǐng)導(dǎo)者選舉和集群狀態(tài)管理
- 分布式消息
我比較關(guān)注的重點(diǎn)是度量 metrics , 在服務(wù)治理中, 基于度量的設(shè)計(jì)和實(shí)現(xiàn)是重中之重
- 服務(wù)注冊(cè)和發(fā)現(xiàn)
服務(wù)活著還是死去,健康狀態(tài)如何
- 微服務(wù)接口管理
既要靈活,又要穩(wěn)定的,要從用量,性能,錯(cuò)誤三方面進(jìn)行度量監(jiān)控
- 微服務(wù)之間的調(diào)用和依賴關(guān)系管理
對(duì)服務(wù)與其依賴服務(wù)繪制出調(diào)用和依賴關(guān)系圖,做好分流,限流和斷流
微服務(wù)的部署和配置管理
微服務(wù)的生死和更改全在一念之間,這個(gè)一念就是度量數(shù)據(jù)所引發(fā)的反應(yīng)微服務(wù)的智能診斷,度量, 審計(jì)和分析
日志,調(diào)用鏈,健康檢查,安全掃描,度量?jī)x表盤和告警系統(tǒng)是為微服務(wù)的保駕護(hù)航的"天眼系統(tǒng)"
讓我們看看這些看微服務(wù)架構(gòu)的演化
1) 原始的負(fù)載均衡器加微服務(wù)方案

2) 增加了 API 網(wǎng)關(guān)和服務(wù)注冊(cè),服務(wù)發(fā)現(xiàn)機(jī)制

3)增加了對(duì) metrics 和 log 的收集,分析,監(jiān)控,并獨(dú)立出 Auth Service 和 Config Service

隨著 sitemesh , k8s 技術(shù)的成熟,基于公有云和企業(yè)內(nèi)部的私有云,還有 v4, v5, ....
架構(gòu)的演化總是隨著客戶需求的改變,技術(shù)的發(fā)展不斷的迭代著,“任重而道遠(yuǎn),吾將上下而求索”.