阿里趙林:阿里企業(yè)級(jí)分布式應(yīng)用服務(wù)EDAS產(chǎn)品解密
本文根據(jù)阿里高級(jí)技術(shù)專家趙林(花名:丹臣)的演講整理。趙林在演講中主要為大家詳細(xì)介紹了阿里企業(yè)級(jí)分布式應(yīng)用服務(wù)器EDAS產(chǎn)品和背后技術(shù)實(shí)踐。
企業(yè)級(jí)分布式應(yīng)用服務(wù)(EDAS,Enterprise Distributed Application Service)是一個(gè)以阿里中間件團(tuán)隊(duì)多款久經(jīng)歷練的組件產(chǎn)品作為核心基礎(chǔ),所組建的企業(yè)云計(jì)算解決方案。其充分利用阿里云現(xiàn)有的資源管理和服務(wù)體系,引入中間件整套成熟的分布式計(jì)算框架——包括分布式應(yīng)用核心框架,分布式數(shù)據(jù)化運(yùn)營(yíng),大型應(yīng)用全生命周期管理等,以應(yīng)用為中心,集成到EDAS平臺(tái)上,幫助企業(yè)級(jí)客戶輕松構(gòu)建并托管分布式應(yīng)用服務(wù)體系。
企業(yè)級(jí)分布式應(yīng)用服務(wù)與傳統(tǒng)IOE架構(gòu)的區(qū)別
傳統(tǒng)IOE架構(gòu)
傳統(tǒng)IOE架構(gòu)
隨著時(shí)間推移,在出現(xiàn)新業(yè)務(wù)時(shí),開發(fā)人員有兩種應(yīng)對(duì)辦法。
- 在原應(yīng)用上增加新業(yè)務(wù),將原本較小的應(yīng)用慢慢擴(kuò)充成很大的應(yīng)用;
- 另起爐灶,重新創(chuàng)建針對(duì)新業(yè)務(wù)的新應(yīng)用。
第一種只適用于業(yè)務(wù)較少的情況,而在新業(yè)務(wù)不斷增加的情況下,增加新應(yīng)用也就成了必須。而在這種傳統(tǒng)架構(gòu)中,新增的應(yīng)用需要一一與原有的底層數(shù)據(jù)庫(kù)相連,導(dǎo)致每個(gè)應(yīng)用都需要連接多個(gè)數(shù)據(jù)庫(kù)。
此外,在傳統(tǒng)IOE架構(gòu)中:
- 每個(gè)應(yīng)用彼此沒(méi)有太大關(guān)系,按煙囪式排列,唯一的共通點(diǎn)在于都與底層的數(shù)據(jù)庫(kù)相連;
- 所能處理的應(yīng)用個(gè)數(shù)通常比較少,從幾個(gè)到幾十個(gè)不等。
總結(jié):在傳統(tǒng)IOE架構(gòu)中,每個(gè)應(yīng)用都比較龐大,同時(shí)需要連接多個(gè)數(shù)據(jù)庫(kù);架構(gòu)中的應(yīng)用數(shù)量較少,應(yīng)用與應(yīng)用之間的關(guān)系簡(jiǎn)單。
大型分布式應(yīng)用
大型分布式應(yīng)用
- 應(yīng)用彼此間存在復(fù)雜的調(diào)用關(guān)系;
- 架構(gòu)中可管理的應(yīng)用多,可能達(dá)到成百上千個(gè)應(yīng)用。
其優(yōu)點(diǎn)在于:這種架構(gòu)具有良好的可擴(kuò)展性;而缺點(diǎn)在于管理與運(yùn)維比較困難,另外由于應(yīng)用數(shù)量多,隨著業(yè)務(wù)增長(zhǎng),應(yīng)用服務(wù)器從十臺(tái)增加到上百臺(tái)上千臺(tái),這時(shí)業(yè)務(wù)系統(tǒng)故障與機(jī)器故障就一定會(huì)成為常態(tài)。
傳統(tǒng)“中心化”系統(tǒng)與阿里的“去中心化”系統(tǒng)架構(gòu)的區(qū)別
傳統(tǒng)“中心化”(ESB)系統(tǒng)架構(gòu)
傳統(tǒng)中心化系統(tǒng)架構(gòu)
- 服務(wù)調(diào)用者與服務(wù)提供者通過(guò)企業(yè)服務(wù)總線相連接;
- ESB成為瓶頸:無(wú)論在性能上還是成本消耗上,ESB都會(huì)導(dǎo)致瓶頸出現(xiàn)。
阿里“去中心化”系統(tǒng)架構(gòu)
阿里“去中心化”系統(tǒng)架構(gòu)
開發(fā)這個(gè)架構(gòu)的初衷是為了支撐分布式應(yīng)用,為了讓整個(gè)業(yè)務(wù)系統(tǒng)的擴(kuò)展沒(méi)有瓶頸,只需按照業(yè)務(wù)發(fā)展需要進(jìn)行擴(kuò)展;上圖是最早的雛形。后面為了完善該架構(gòu),又做了很多工作,下面將詳細(xì)說(shuō)明。
EDAS服務(wù)調(diào)用
服務(wù)接口可視化:讓分布式應(yīng)用不再是黑盒
在最初的架構(gòu)中,由于看不到任何的數(shù)據(jù)或者發(fā)布了什么服務(wù),開發(fā)人員也并不明確每個(gè)應(yīng)用具體包含什么服務(wù),這就像一個(gè)黑盒子,所有內(nèi)容都是一團(tuán)迷霧。
EDAS在線平臺(tái)
將服務(wù)接口可視化之后,在應(yīng)用啟動(dòng)時(shí)將自動(dòng)完成服務(wù)注冊(cè),所發(fā)布和消費(fèi)的服務(wù)可以在EDAS平臺(tái)在線查看,所有內(nèi)容一目了然。
EDAS服務(wù)調(diào)用的安全性
EDAS服務(wù)調(diào)用結(jié)構(gòu)
普通框架是沒(méi)有安全性可言的,任何人只要知道地址就可以通過(guò)服務(wù)接口隨意進(jìn)行調(diào)用。為此我們針對(duì)三種維度的安全性做出了控制:在發(fā)布、訂閱和調(diào)用服務(wù)時(shí)必須使用合法的安全令牌(access key/secret key)。
- 服務(wù)提供者在服務(wù)注冊(cè)中心發(fā)布,需要權(quán)限AK;
- 服務(wù)調(diào)用者獲得服務(wù)提供者的IP,需要授權(quán);
- 服務(wù)調(diào)用者知道IP,需要調(diào)用時(shí),需要正確的AK。
此外,授權(quán)數(shù)據(jù)會(huì)下發(fā)到服務(wù)機(jī)器中,避免造成性能瓶頸。
EDAS應(yīng)用發(fā)布
傳統(tǒng)集中式模式:
傳統(tǒng)的應(yīng)用包下載模式
l 應(yīng)用包通過(guò)中間文件服務(wù)器下載,需受限于其網(wǎng)絡(luò)帶寬;
l 能夠發(fā)布的機(jī)器數(shù)量較少
P2P流式應(yīng)用包分發(fā)模式:
P2P應(yīng)用包分發(fā)模式
- 通過(guò)EDAS發(fā)布控制中心下載;
- 類似P2P下載模式,可快速提供任何一個(gè)下載點(diǎn);
- 支持大規(guī)模應(yīng)用集群發(fā)布。
效率對(duì)比
隨著所發(fā)布的應(yīng)用實(shí)例增多,兩種發(fā)布方式的效率對(duì)比如下:
兩種發(fā)布方式的效率對(duì)比
傳統(tǒng)集中式(黃色):隨著發(fā)布集群規(guī)模擴(kuò)大,耗時(shí)急劇增長(zhǎng);P2P流式:采用EDAS燎原發(fā)布系統(tǒng),隨著應(yīng)用實(shí)例的增加,發(fā)布的時(shí)間幾乎保持不變。
EDAS擴(kuò)容
EDAS提供簡(jiǎn)單方便高效的應(yīng)用擴(kuò)容服務(wù)。在傳統(tǒng)模式中,擴(kuò)容需運(yùn)維或開發(fā)人員手動(dòng)布置環(huán)境、安裝GDP等等;而在P2P流式中,一鍵即可擴(kuò)容,只要機(jī)器資源足夠,在EDAS平臺(tái)點(diǎn)擊“應(yīng)用擴(kuò)容”即可完成。
一鍵擴(kuò)容界面
EDAS數(shù)據(jù)化運(yùn)營(yíng)
立體監(jiān)控服務(wù)
立體監(jiān)控服務(wù)
EDAS監(jiān)控服務(wù)三個(gè)層面的監(jiān)控?cái)?shù)據(jù):資源、容器和應(yīng)用。
- 系統(tǒng)資源:負(fù)載、CPU、內(nèi)存、 磁盤、網(wǎng)絡(luò)
- 容器:堆內(nèi)存、類加載情況、線程池、連接器
- 應(yīng)用:響應(yīng)時(shí)間、吞吐率、關(guān)鍵鏈路分析
其中:
系統(tǒng)資源監(jiān)控
系統(tǒng)資源監(jiān)控界面
以應(yīng)用/單機(jī)的視角來(lái)對(duì)基礎(chǔ)資源消耗進(jìn)行監(jiān)控:
- 可以看到應(yīng)用下所有節(jié)點(diǎn)的平均負(fù)載
- 通過(guò)技術(shù)監(jiān)控,及時(shí)發(fā)現(xiàn)問(wèn)題
- 可以配置報(bào)警規(guī)則,有異常時(shí)快速報(bào)警
容器監(jiān)控
容器監(jiān)控界面
實(shí)時(shí)采集容器運(yùn)行的監(jiān)控指標(biāo),為應(yīng)用運(yùn)行環(huán)境問(wèn)題診斷提供依據(jù):
- 堆內(nèi)存與非堆內(nèi)存使用情況
- 類加載情況
- 線程運(yùn)行情況
- 連接器情況
應(yīng)用實(shí)時(shí)監(jiān)控
應(yīng)用監(jiān)控界面
監(jiān)控服務(wù)接口的調(diào)用量,分布式系統(tǒng)服務(wù)的承載能力等,并將其數(shù)據(jù)化:
- 監(jiān)控所有服務(wù)接口、方法的實(shí)時(shí)調(diào)用情況,調(diào)用鏈的實(shí)時(shí)查詢
- 快速感知系統(tǒng)流量變化,找出系統(tǒng)瓶頸
- 執(zhí)行實(shí)時(shí)鏈路分析
服務(wù)綜合治理
分布式應(yīng)用的難點(diǎn)在于集成分布式應(yīng)用一體化監(jiān)控、數(shù)據(jù)化運(yùn)營(yíng)以及高效的服務(wù)治理。其中,服務(wù)有兩種角色,服務(wù)提供者以及鏈路負(fù)責(zé)人。
服務(wù)提供者關(guān)心:
誰(shuí)調(diào)用了我的服務(wù)? 在什么鏈路下調(diào)用,調(diào)用是否合理?調(diào)用趨勢(shì)怎樣?產(chǎn)生的瞬間峰值有多少?我的系統(tǒng)是否能支撐,是否需要擴(kuò)容。
所能采取的應(yīng)對(duì)措施:分組、限流、鑒權(quán)、壓測(cè)。
鏈路負(fù)責(zé)人關(guān)心:
我依賴了哪些應(yīng)用、哪些服務(wù)? 整個(gè)鏈路的依賴路徑是怎樣的?哪些容易出錯(cuò),哪些是鏈路的處理瓶頸? 這些依賴如果出錯(cuò),會(huì)有什么影響?
所能采取的應(yīng)對(duì)措施:捕獲異常;降級(jí):對(duì)于不穩(wěn)定的服務(wù),是否需要降級(jí);開關(guān):系統(tǒng)壓力很大的話,需要關(guān)閉不必要的操作;優(yōu)化:利用服務(wù)治理,對(duì)瓶頸進(jìn)行優(yōu)化。
鷹眼監(jiān)控
鷹眼監(jiān)控界面
阿里鷹眼監(jiān)控平臺(tái)能夠提供應(yīng)用的響應(yīng)時(shí)間和吞吐量信息,并提供全鏈路分析功能,從而找出系統(tǒng)熱點(diǎn)和瓶頸:
- 完整記錄所有故障
- 準(zhǔn)確定位故障源
所解決的問(wèn)題:在開發(fā)者參差不齊的情況下,快速完成上層業(yè)務(wù)目標(biāo),完成開發(fā)任務(wù);提供透明化的觀察方式:快速找出對(duì)依賴的壓力、易故障點(diǎn)與瓶頸點(diǎn)。
快速找出對(duì)依賴的壓力、易故障點(diǎn)與瓶頸點(diǎn)
容量壓測(cè)
容量壓測(cè)界面
自動(dòng)計(jì)算前端的關(guān)鍵請(qǐng)求與后端機(jī)器數(shù)量的對(duì)應(yīng)關(guān)系,針對(duì)機(jī)器是否需要加減進(jìn)行預(yù)測(cè):
- 在真實(shí)線上的環(huán)境基礎(chǔ)上,通過(guò)調(diào)整服務(wù)器權(quán)重,真實(shí)模擬壓測(cè)情況,評(píng)估單機(jī)的最大服務(wù)能力,從而提供吞吐能力數(shù)據(jù)以供性能優(yōu)化參考;
- 用自動(dòng)化平臺(tái),相對(duì)科學(xué)的精確手段將服務(wù)能力數(shù)據(jù)化;
限流降級(jí)
容量是任何一個(gè)系統(tǒng)天然存在的上限??陀^上講,不管性能如何,都有可能在業(yè)務(wù)上超出預(yù)期容量。
限流是服務(wù)接口提供方對(duì)消費(fèi)方的設(shè)置,降級(jí)則是服務(wù)消費(fèi)方對(duì)服務(wù)提供方的設(shè)置。通過(guò)降級(jí)設(shè)置,對(duì)服務(wù)消費(fèi)方進(jìn)行保護(hù),一旦超過(guò)某個(gè)時(shí)間,便允許強(qiáng)行斷開。通過(guò)現(xiàn)有的能量對(duì)服務(wù)提供方進(jìn)行保護(hù),在出現(xiàn)超過(guò)流量最大能力的時(shí)候斷開,避免將系統(tǒng)整個(gè)拖垮。
彈性伸縮
擴(kuò)容界面
應(yīng)用擴(kuò)容規(guī)則和縮容規(guī)則一站式設(shè)置:根據(jù)CPU、LOAD、RT三個(gè)指標(biāo)設(shè)置應(yīng)用的自動(dòng)擴(kuò)容或縮容。
EDAS配置推送
大型分布式系統(tǒng)應(yīng)用配置推送
- 對(duì)大型分布式應(yīng)用配置進(jìn)行集中管理:修改更容易,通知更及時(shí),配置變更也更安全;
- 對(duì)應(yīng)用配置變更進(jìn)行歷史記錄:讓應(yīng)用配置可以輕松回退到前一版本;
- 追蹤應(yīng)用配置推送軌跡:讓配置推送所到達(dá)機(jī)器變得可視化;
- 應(yīng)用集群推送的規(guī)模更大、效率更高。
EDAS灰度系統(tǒng)
EDAS灰度系統(tǒng)
能夠允許一部分用戶使用新功能,一部分用戶使用原有功能,再通過(guò)實(shí)際測(cè)試作出最正確的決定。在業(yè)務(wù)系統(tǒng)層面,讓現(xiàn)有的系統(tǒng)可以平滑升級(jí)。http://click.aliyun.com/m/24591/
EDAS——世界級(jí)優(yōu)秀PAAS平臺(tái)
應(yīng)用客戶案例
- 適用于各行各業(yè);
- 高性能、高彈性、高容錯(cuò);
- 打造以應(yīng)用為中心的平臺(tái)服務(wù),讓開發(fā)人員專注于業(yè)務(wù)邏輯;
- 構(gòu)建360度的應(yīng)用運(yùn)維服務(wù)平臺(tái),集成各種運(yùn)維管控工具。