




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)施微服務(wù),我們需要哪些基礎(chǔ)框架?微服務(wù)(MicroServices)架構(gòu)是當(dāng)前互聯(lián)網(wǎng)業(yè)界的一個(gè)技術(shù)熱點(diǎn),圈里有不少同行朋友當(dāng)前有計(jì)劃在各自公司開(kāi)展微服務(wù)化體系建設(shè),他們都有相同的疑問(wèn):一個(gè)微服務(wù)架構(gòu)有哪些技術(shù)關(guān)注點(diǎn)(technical concerns)?需要哪些基礎(chǔ)框架或組件來(lái)支持微服務(wù)架構(gòu)?這些框架或組件該如何選型?筆者之前在兩家大型互聯(lián)網(wǎng)公司參與和主導(dǎo)過(guò)大型服務(wù)化體系和框架建設(shè),同時(shí)在這塊也投入了很多時(shí)間去學(xué)習(xí)和研究,有一些經(jīng)驗(yàn)和學(xué)習(xí)心得,可以和大家一起分享。服務(wù)注冊(cè)、發(fā)現(xiàn)、負(fù)載均衡和健康檢查和單塊(Monolithic)架構(gòu)不同,微服務(wù)架構(gòu)是由一系列職責(zé)單一的細(xì)粒度服務(wù)構(gòu)成的分布式網(wǎng)
2、狀結(jié)構(gòu),服務(wù)之間通過(guò)輕量機(jī)制進(jìn)行通信,這時(shí)候必然引入一個(gè)服務(wù)注冊(cè)發(fā)現(xiàn)問(wèn)題,也就是說(shuō)服務(wù)提供方要注冊(cè)通告服務(wù)地址,服務(wù)的調(diào)用方要能發(fā)現(xiàn)目標(biāo)服務(wù),同時(shí)服務(wù)提供方一般以集群方式提供服務(wù),也就引入了負(fù)載均衡和健康檢查問(wèn)題。根據(jù)負(fù)載均衡LB所在位置的不同,目前主要的服務(wù)注冊(cè)、發(fā)現(xiàn)和負(fù)載均衡方案有三種:第一種是集中式LB方案,如下圖Fig 1,在服務(wù)消費(fèi)者和服務(wù)提供者之間有一個(gè)獨(dú)立的LB,LB通常是專門的硬件設(shè)備如F5,或者基于軟件如LVS,HAproxy等實(shí)現(xiàn)。LB上有所有服務(wù)的地址映射表,通常由運(yùn)維配置注冊(cè),當(dāng)服務(wù)消費(fèi)方調(diào)用某個(gè)目標(biāo)服務(wù)時(shí),它向LB發(fā)起請(qǐng)求,由LB以某種策略(比如Round-Robin
3、)做負(fù)載均衡后將請(qǐng)求轉(zhuǎn)發(fā)到目標(biāo)服務(wù)。LB一般具備健康檢查能力,能自動(dòng)摘除不健康的服務(wù)實(shí)例。服務(wù)消費(fèi)方如何發(fā)現(xiàn)LB呢?通常的做法是通過(guò)DNS,運(yùn)維人員為服務(wù)配置一個(gè)DNS域名,這個(gè)域名指向LB。Fig 1, 集中式LB方案集中式LB方案實(shí)現(xiàn)簡(jiǎn)單,在LB上也容易做集中式的訪問(wèn)控制,這一方案目前還是業(yè)界主流。集中式LB的主要問(wèn)題是單點(diǎn)問(wèn)題,所有服務(wù)調(diào)用流量都經(jīng)過(guò)LB,當(dāng)服務(wù)數(shù)量和調(diào)用量大的時(shí)候,LB容易成為瓶頸,且一旦LB發(fā)生故障對(duì)整個(gè)系統(tǒng)的影響是災(zāi)難性的。另外,LB在服務(wù)消費(fèi)方和服務(wù)提供方之間增加了一跳(hop),有一定性能開(kāi)銷。相關(guān)廠商內(nèi)容手機(jī)百度APS深度剖析手淘如何從無(wú)到有的Hybrid A
4、pp框架創(chuàng)建歷程。萬(wàn)人在線直播教室如何搭建?公司高速發(fā)展,研發(fā)團(tuán)隊(duì)如何調(diào)優(yōu)支付寶紅包瞬時(shí)支付量挑戰(zhàn)雙十一零點(diǎn)峰值!相關(guān)贊助商全球架構(gòu)師峰會(huì),12月18-19日,北京·國(guó)際會(huì)議中心,精彩內(nèi)容邀您參與!第二種是進(jìn)程內(nèi)LB方案,針對(duì)集中式LB的不足,進(jìn)程內(nèi)LB方案將LB的功能以庫(kù)的形式集成到服務(wù)消費(fèi)方進(jìn)程里頭,該方案也被稱為軟負(fù)載(Soft Load Balancing)或者客戶端負(fù)載方案,下圖Fig 2展示了這種方案的工作原理。這一方案需要一個(gè)服務(wù)注冊(cè)表(Service Registry)配合支持服務(wù)自注冊(cè)和自發(fā)現(xiàn),服務(wù)提供方啟動(dòng)時(shí),首先將服務(wù)地址注冊(cè)到服務(wù)注冊(cè)表(同時(shí)定期報(bào)心跳到服務(wù)注
5、冊(cè)表以表明服務(wù)的存活狀態(tài),相當(dāng)于健康檢查),服務(wù)消費(fèi)方要訪問(wèn)某個(gè)服務(wù)時(shí),它通過(guò)內(nèi)置的LB組件向服務(wù)注冊(cè)表查詢(同時(shí)緩存并定期刷新)目標(biāo)服務(wù)地址列表,然后以某種負(fù)載均衡策略選擇一個(gè)目標(biāo)服務(wù)地址,最后向目標(biāo)服務(wù)發(fā)起請(qǐng)求。這一方案對(duì)服務(wù)注冊(cè)表的可用性(Availability)要求很高,一般采用能滿足高可用分布式一致的組件(例如Zookeeper, Consul, Etcd等)來(lái)實(shí)現(xiàn)。Fig 2, 進(jìn)程內(nèi)LB方案進(jìn)程內(nèi)LB方案是一種分布式方案,LB和服務(wù)發(fā)現(xiàn)能力被分散到每一個(gè)服務(wù)消費(fèi)者的進(jìn)程內(nèi)部,同時(shí)服務(wù)消費(fèi)方和服務(wù)提供方之間是直接調(diào)用,沒(méi)有額外開(kāi)銷,性能比較好。但是,該方案以客戶庫(kù)(Client
6、Library)的方式集成到服務(wù)調(diào)用方進(jìn)程里頭,如果企業(yè)內(nèi)有多種不同的語(yǔ)言棧,就要配合開(kāi)發(fā)多種不同的客戶端,有一定的研發(fā)和維護(hù)成本。另外,一旦客戶端跟隨服務(wù)調(diào)用方發(fā)布到生產(chǎn)環(huán)境中,后續(xù)如果要對(duì)客戶庫(kù)進(jìn)行升級(jí),勢(shì)必要求服務(wù)調(diào)用方修改代碼并重新發(fā)布,所以該方案的升級(jí)推廣有不小的阻力。進(jìn)程內(nèi)LB的案例是Netflix的開(kāi)源服務(wù)框架,對(duì)應(yīng)的組件分別是:Eureka服務(wù)注冊(cè)表,Karyon服務(wù)端框架支持服務(wù)自注冊(cè)和健康檢查,Ribbon客戶端框架支持服務(wù)自發(fā)現(xiàn)和軟路由。另外,阿里開(kāi)源的服務(wù)框架Dubbo也是采用類似機(jī)制。第三種是主機(jī)獨(dú)立LB進(jìn)程方案,該方案是針對(duì)第二種方案的不足而提出的一種折中方案,原理
7、和第二種方案基本類似,不同之處是,他將LB和服務(wù)發(fā)現(xiàn)功能從進(jìn)程內(nèi)移出來(lái),變成主機(jī)上的一個(gè)獨(dú)立進(jìn)程,主機(jī)上的一個(gè)或者多個(gè)服務(wù)要訪問(wèn)目標(biāo)服務(wù)時(shí),他們都通過(guò)同一主機(jī)上的獨(dú)立LB進(jìn)程做服務(wù)發(fā)現(xiàn)和負(fù)載均衡,見(jiàn)下圖Fig 3。Fig 3 主機(jī)獨(dú)立LB進(jìn)程方案該方案也是一種分布式方案,沒(méi)有單點(diǎn)問(wèn)題,一個(gè)LB進(jìn)程掛了只影響該主機(jī)上的服務(wù)調(diào)用方,服務(wù)調(diào)用方和LB之間是進(jìn)程內(nèi)調(diào)用,性能好,同時(shí),該方案還簡(jiǎn)化了服務(wù)調(diào)用方,不需要為不同語(yǔ)言開(kāi)發(fā)客戶庫(kù),LB的升級(jí)不需要服務(wù)調(diào)用方改代碼。該方案的不足是部署較復(fù)雜,環(huán)節(jié)多,出錯(cuò)調(diào)試排查問(wèn)題不方便。該方案的典型案例是Airbnb的SmartStack服務(wù)發(fā)現(xiàn)框架,對(duì)應(yīng)組件分
8、別是:Zookeeper作為服務(wù)注冊(cè)表,Nerve獨(dú)立進(jìn)程負(fù)責(zé)服務(wù)注冊(cè)和健康檢查,Synapse/HAproxy獨(dú)立進(jìn)程負(fù)責(zé)服務(wù)發(fā)現(xiàn)和負(fù)載均衡。Google最新推出的基于容器的PaaS平臺(tái)Kubernetes,其內(nèi)部服務(wù)發(fā)現(xiàn)采用類似的機(jī)制。服務(wù)前端路由微服務(wù)除了內(nèi)部相互之間調(diào)用和通信之外,最終要以某種方式暴露出去,才能讓外界系統(tǒng)(例如客戶的瀏覽器、移動(dòng)設(shè)備等等)訪問(wèn)到,這就涉及服務(wù)的前端路由,對(duì)應(yīng)的組件是服務(wù)網(wǎng)關(guān)(Service Gateway),見(jiàn)圖Fig 4,網(wǎng)關(guān)是連接企業(yè)內(nèi)部和外部系統(tǒng)的一道門,有如下關(guān)鍵作用:1. 服務(wù)反向路由,網(wǎng)關(guān)要負(fù)責(zé)將外部請(qǐng)求反向路由到內(nèi)部具體的微服務(wù),這樣雖然企
9、業(yè)內(nèi)部是復(fù)雜的分布式微服務(wù)結(jié)構(gòu),但是外部系統(tǒng)從網(wǎng)關(guān)上看到的就像是一個(gè)統(tǒng)一的完整服務(wù),網(wǎng)關(guān)屏蔽了后臺(tái)服務(wù)的復(fù)雜性,同時(shí)也屏蔽了后臺(tái)服務(wù)的升級(jí)和變化。2. 安全認(rèn)證和防爬蟲,所有外部請(qǐng)求必須經(jīng)過(guò)網(wǎng)關(guān),網(wǎng)關(guān)可以集中對(duì)訪問(wèn)進(jìn)行安全控制,比如用戶認(rèn)證和授權(quán),同時(shí)還可以分析訪問(wèn)模式實(shí)現(xiàn)防爬蟲功能,網(wǎng)關(guān)是連接企業(yè)內(nèi)外系統(tǒng)的安全之門。3. 限流和容錯(cuò),在流量高峰期,網(wǎng)關(guān)可以限制流量,保護(hù)后臺(tái)系統(tǒng)不被大流量沖垮,在內(nèi)部系統(tǒng)出現(xiàn)故障時(shí),網(wǎng)關(guān)可以集中做容錯(cuò),保持外部良好的用戶體驗(yàn)。4. 監(jiān)控,網(wǎng)關(guān)可以集中監(jiān)控訪問(wèn)量,調(diào)用延遲,錯(cuò)誤計(jì)數(shù)和訪問(wèn)模式,為后端的性能優(yōu)化或者擴(kuò)容提供數(shù)據(jù)支持。5. 日志,網(wǎng)關(guān)可以收集所有的訪
10、問(wèn)日志,進(jìn)入后臺(tái)系統(tǒng)做進(jìn)一步分析。Fig 4, 服務(wù)網(wǎng)關(guān)除以上基本能力外,網(wǎng)關(guān)還可以實(shí)現(xiàn)線上引流,線上壓測(cè),線上調(diào)試(Surgical debugging),金絲雀測(cè)試(Canary Testing),數(shù)據(jù)中心雙活(Active-Active HA)等高級(jí)功能。網(wǎng)關(guān)通常工作在7層,有一定的計(jì)算邏輯,一般以集群方式部署,前置LB進(jìn)行負(fù)載均衡。開(kāi)源的網(wǎng)關(guān)組件有Netflix的Zuul,特點(diǎn)是動(dòng)態(tài)可熱部署的過(guò)濾器(filter)機(jī)制,其它如HAproxy,Nginx等都可以擴(kuò)展作為網(wǎng)關(guān)使用。在介紹過(guò)服務(wù)注冊(cè)表和網(wǎng)關(guān)等組件之后,我們可以通過(guò)一個(gè)簡(jiǎn)化的微服務(wù)架構(gòu)圖(Fig 5)來(lái)更加直觀地展示整個(gè)微服務(wù)
11、體系內(nèi)的服務(wù)注冊(cè)發(fā)現(xiàn)和路由機(jī)制,該圖假定采用進(jìn)程內(nèi)LB服務(wù)發(fā)現(xiàn)和負(fù)載均衡機(jī)制。在下圖Fig 5的微服務(wù)架構(gòu)中,服務(wù)簡(jiǎn)化為兩層,后端通用服務(wù)(也稱中間層服務(wù)Middle Tier Service)和前端服務(wù)(也稱邊緣服務(wù)Edge Service,前端服務(wù)的作用是對(duì)后端服務(wù)做必要的聚合和裁剪后暴露給外部不同的設(shè)備,如PC,Pad或者Phone)。后端服務(wù)啟動(dòng)時(shí)會(huì)將地址信息注冊(cè)到服務(wù)注冊(cè)表,前端服務(wù)通過(guò)查詢服務(wù)注冊(cè)表就可以發(fā)現(xiàn)然后調(diào)用后端服務(wù);前端服務(wù)啟動(dòng)時(shí)也會(huì)將地址信息注冊(cè)到服務(wù)注冊(cè)表,這樣網(wǎng)關(guān)通過(guò)查詢服務(wù)注冊(cè)表就可以將請(qǐng)求路由到目標(biāo)前端服務(wù),這樣整個(gè)微服務(wù)體系的服務(wù)自注冊(cè)自發(fā)現(xiàn)和軟路由就通過(guò)服務(wù)
12、注冊(cè)表和網(wǎng)關(guān)串聯(lián)起來(lái)了。如果以面向?qū)ο笤O(shè)計(jì)模式的視角來(lái)看,網(wǎng)關(guān)類似Proxy代理或者Façade門面模式,而服務(wù)注冊(cè)表和服務(wù)自注冊(cè)自發(fā)現(xiàn)類似IoC依賴注入模式,微服務(wù)可以理解為基于網(wǎng)關(guān)代理和注冊(cè)表IoC構(gòu)建的分布式系統(tǒng)。Fig 5, 簡(jiǎn)化的微服務(wù)架構(gòu)圖服務(wù)容錯(cuò)當(dāng)企業(yè)微服務(wù)化以后,服務(wù)之間會(huì)有錯(cuò)綜復(fù)雜的依賴關(guān)系,例如,一個(gè)前端請(qǐng)求一般會(huì)依賴于多個(gè)后端服務(wù),技術(shù)上稱為1 -> N扇出(見(jiàn)圖Fig 6)。在實(shí)際生產(chǎn)環(huán)境中,服務(wù)往往不是百分百可靠,服務(wù)可能會(huì)出錯(cuò)或者產(chǎn)生延遲,如果一個(gè)應(yīng)用不能對(duì)其依賴的故障進(jìn)行容錯(cuò)和隔離,那么該應(yīng)用本身就處在被拖垮的風(fēng)險(xiǎn)中。在一個(gè)高流量的網(wǎng)站中,某個(gè)單一
13、后端一旦發(fā)生延遲,可能在數(shù)秒內(nèi)導(dǎo)致所有應(yīng)用資源(線程,隊(duì)列等)被耗盡,造成所謂的雪崩效應(yīng)(Cascading Failure,見(jiàn)圖Fig 7),嚴(yán)重時(shí)可致整個(gè)網(wǎng)站癱瘓。Fig 6, 服務(wù)依賴Fig 7, 高峰期單個(gè)服務(wù)延遲致雪崩效應(yīng)經(jīng)過(guò)多年的探索和實(shí)踐,業(yè)界在分布式服務(wù)容錯(cuò)一塊探索出了一套有效的容錯(cuò)模式和最佳實(shí)踐,主要包括:1. 電路熔斷器模式(Circuit Breaker Patten), 該模式的原理類似于家里的電路熔斷器,如果家里的電路發(fā)生短路,熔斷器能夠主動(dòng)熔斷電路,以避免災(zāi)難性損失。在分布式系統(tǒng)中應(yīng)用電路熔斷器模式后,當(dāng)目標(biāo)服務(wù)慢或者大量超時(shí),調(diào)用方能夠主動(dòng)熔斷,以防止服務(wù)被進(jìn)一步
14、拖垮;如果情況又好轉(zhuǎn)了,電路又能自動(dòng)恢復(fù),這就是所謂的彈性容錯(cuò),系統(tǒng)有自恢復(fù)能力。下圖Fig 8是一個(gè)典型的具備彈性恢復(fù)能力的電路保護(hù)器狀態(tài)圖,正常狀態(tài)下,電路處于關(guān)閉狀態(tài)(Closed),如果調(diào)用持續(xù)出錯(cuò)或者超時(shí),電路被打開(kāi)進(jìn)入熔斷狀態(tài)(Open),后續(xù)一段時(shí)間內(nèi)的所有調(diào)用都會(huì)被拒絕(Fail Fast),一段時(shí)間以后,保護(hù)器會(huì)嘗試進(jìn)入半熔斷狀態(tài)(Half-Open),允許少量請(qǐng)求進(jìn)來(lái)嘗試,如果調(diào)用仍然失敗,則回到熔斷狀態(tài),如果調(diào)用成功,則回到電路閉合狀態(tài)。Fig 8, 彈性電路保護(hù)狀態(tài)圖2. 艙壁隔離模式(Bulkhead Isolation Pattern),顧名思義,該模式像艙壁一樣對(duì)
15、資源或失敗單元進(jìn)行隔離,如果一個(gè)船艙破了進(jìn)水,只損失一個(gè)船艙,其它船艙可以不受影響 。線程隔離(Thread Isolation)就是艙壁隔離模式的一個(gè)例子,假定一個(gè)應(yīng)用程序A調(diào)用了Svc1/Svc2/Svc3三個(gè)服務(wù),且部署A的容器一共有120個(gè)工作線程,采用線程隔離機(jī)制,可以給對(duì)Svc1/Svc2/Svc3的調(diào)用各分配40個(gè)線程,當(dāng)Svc2慢了,給Svc2分配的40個(gè)線程因慢而阻塞并最終耗盡,線程隔離可以保證給Svc1/Svc3分配的80個(gè)線程可以不受影響,如果沒(méi)有這種隔離機(jī)制,當(dāng)Svc2慢的時(shí)候,120個(gè)工作線程會(huì)很快全部被對(duì)Svc2的調(diào)用吃光,整個(gè)應(yīng)用程序會(huì)全部慢下來(lái)。3. 限流(Ra
16、te Limiting/Load Shedder),服務(wù)總有容量限制,沒(méi)有限流機(jī)制的服務(wù)很容易在突發(fā)流量(秒殺,雙十一)時(shí)被沖垮。限流通常指對(duì)服務(wù)限定并發(fā)訪問(wèn)量,比如單位時(shí)間只允許100個(gè)并發(fā)調(diào)用,對(duì)超過(guò)這個(gè)限制的請(qǐng)求要拒絕并回退。4. 回退(fallback),在熔斷或者限流發(fā)生的時(shí)候,應(yīng)用程序的后續(xù)處理邏輯是什么?回退是系統(tǒng)的彈性恢復(fù)能力,常見(jiàn)的處理策略有,直接拋出異常,也稱快速失敗(Fail Fast),也可以返回空值或缺省值,還可以返回備份數(shù)據(jù),如果主服務(wù)熔斷了,可以從備份服務(wù)獲取數(shù)據(jù)。Netflix將上述容錯(cuò)模式和最佳實(shí)踐集成到一個(gè)稱為Hystrix的開(kāi)源組件中,凡是需要容錯(cuò)的依賴點(diǎn)
17、(服務(wù),緩存,數(shù)據(jù)庫(kù)訪問(wèn)等),開(kāi)發(fā)人員只需要將調(diào)用封裝在Hystrix Command里頭,則相關(guān)調(diào)用就自動(dòng)置于Hystrix的彈性容錯(cuò)保護(hù)之下。Hystrix組件已經(jīng)在Netflix經(jīng)過(guò)多年運(yùn)維驗(yàn)證,是Netflix微服務(wù)平臺(tái)穩(wěn)定性和彈性的基石,正逐漸被社區(qū)接受為標(biāo)準(zhǔn)容錯(cuò)組件。服務(wù)框架微服務(wù)化以后,為了讓業(yè)務(wù)開(kāi)發(fā)人員專注于業(yè)務(wù)邏輯實(shí)現(xiàn),避免冗余和重復(fù)勞動(dòng),規(guī)范研發(fā)提升效率,必然要將一些公共關(guān)注點(diǎn)推到框架層面。服務(wù)框架(Fig 9)主要封裝公共關(guān)注點(diǎn)邏輯,包括:Fig 9, 服務(wù)框架1. 服務(wù)注冊(cè)、發(fā)現(xiàn)、負(fù)載均衡和健康檢查,假定采用進(jìn)程內(nèi)LB方案,那么服務(wù)自注冊(cè)一般統(tǒng)一做在服務(wù)器端框架中,健康
18、檢查邏輯由具體業(yè)務(wù)服務(wù)定制,框架層提供調(diào)用健康檢查邏輯的機(jī)制,服務(wù)發(fā)現(xiàn)和負(fù)載均衡則集成在服務(wù)客戶端框架中。2. 監(jiān)控日志,框架一方面要記錄重要的框架層日志、metrics和調(diào)用鏈數(shù)據(jù),還要將日志、metrics等接口暴露出來(lái),讓業(yè)務(wù)層能根據(jù)需要記錄業(yè)務(wù)日志數(shù)據(jù)。在運(yùn)行環(huán)境中,所有日志數(shù)據(jù)一般集中落地到企業(yè)后臺(tái)日志系統(tǒng),做進(jìn)一步分析和處理。3. REST/RPC和序列化,框架層要支持將業(yè)務(wù)邏輯以HTTP/REST或者RPC方式暴露出來(lái),HTTP/REST是當(dāng)前主流API暴露方式,在性能要求高的場(chǎng)合則可采用Binary/RPC方式。針對(duì)當(dāng)前多樣化的設(shè)備類型(瀏覽器、普通PC、無(wú)線設(shè)備等),框架層要
19、支持可定制的序列化機(jī)制,例如,對(duì)瀏覽器,框架支持輸出Ajax友好的JSON消息格式,而對(duì)無(wú)線設(shè)備上的Native App,框架支持輸出性能高的Binary消息格式。4. 配置,除了支持普通配置文件方式的配置,框架層還可集成動(dòng)態(tài)運(yùn)行時(shí)配置,能夠在運(yùn)行時(shí)針對(duì)不同環(huán)境動(dòng)態(tài)調(diào)整服務(wù)的參數(shù)和配置。5. 限流和容錯(cuò),框架集成限流容錯(cuò)組件,能夠在運(yùn)行時(shí)自動(dòng)限流和容錯(cuò),保護(hù)服務(wù),如果進(jìn)一步和動(dòng)態(tài)配置相結(jié)合,還可以實(shí)現(xiàn)動(dòng)態(tài)限流和熔斷。6. 管理接口,框架集成管理接口,一方面可以在線查看框架和服務(wù)內(nèi)部狀態(tài),同時(shí)還可以動(dòng)態(tài)調(diào)整內(nèi)部狀態(tài),對(duì)調(diào)試、監(jiān)控和管理能提供快速反饋。Spring Boot微框架的Actuator
20、模塊就是一個(gè)強(qiáng)大的管理接口。7. 統(tǒng)一錯(cuò)誤處理,對(duì)于框架層和服務(wù)的內(nèi)部異常,如果框架層能夠統(tǒng)一處理并記錄日志,對(duì)服務(wù)監(jiān)控和快速問(wèn)題定位有很大幫助。8. 安全,安全和訪問(wèn)控制邏輯可以在框架層統(tǒng)一進(jìn)行封裝,可做成插件形式,具體業(yè)務(wù)服務(wù)根據(jù)需要加載相關(guān)安全插件。9. 文檔自動(dòng)生成,文檔的書寫和同步一直是一個(gè)痛點(diǎn),框架層如果能支持文檔的自動(dòng)生成和同步,會(huì)給使用API的開(kāi)發(fā)和測(cè)試人員帶來(lái)極大便利。Swagger是一種流行Restful API的文檔方案。當(dāng)前業(yè)界比較成熟的微服務(wù)框架有Netflix的Karyon/Ribbon,Spring的Spring Boot/Cloud,阿里的Dubbo等。運(yùn)行期配
21、置管理服務(wù)一般有很多依賴配置,例如訪問(wèn)數(shù)據(jù)庫(kù)有連接字符串配置,連接池大小和連接超時(shí)配置,這些配置在不同環(huán)境(開(kāi)發(fā)/測(cè)試/生產(chǎn))一般不同,比如生產(chǎn)環(huán)境需要配連接池,而開(kāi)發(fā)測(cè)試環(huán)境可能不配,另外有些參數(shù)配置在運(yùn)行期可能還要?jiǎng)討B(tài)調(diào)整,例如,運(yùn)行時(shí)根據(jù)流量狀況動(dòng)態(tài)調(diào)整限流和熔斷閥值。目前比較常見(jiàn)的做法是搭建一個(gè)運(yùn)行時(shí)配置中心支持微服務(wù)的動(dòng)態(tài)配置,簡(jiǎn)化架構(gòu)如下圖(Fig 10):Fig 10, 服務(wù)配置中心動(dòng)態(tài)配置存放在集中的配置服務(wù)器上,用戶通過(guò)管理界面配置和調(diào)整服務(wù)配置,具體服務(wù)通過(guò)定期拉(Scheduled Pull)的方式或者服務(wù)器推(Server-side Push)的方式更新動(dòng)態(tài)配置,拉方式比較可靠,但會(huì)有延遲同時(shí)有無(wú)效網(wǎng)絡(luò)開(kāi)銷(假設(shè)配
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 80369-2:2024 FR Small-bore connectors for liquids and gases in healthcare applications - Part 2: Connectors for respiratory applications
- 2025至2030中國(guó)電腦鼠標(biāo)行業(yè)深度研究及發(fā)展前景投資評(píng)估分析
- 2025至2030中國(guó)電機(jī)控制中心行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030中國(guó)現(xiàn)場(chǎng)服務(wù)管理(FSM)行業(yè)市場(chǎng)深度研究及發(fā)展前景投資可行性分析報(bào)告
- 教育文化傳承與實(shí)踐成效研究
- 牛類養(yǎng)殖培訓(xùn)課件
- 智慧城市背景下智能家居化學(xué)品的環(huán)境影響分析
- 新時(shí)代的情感智能培養(yǎng)策略研究
- 醫(yī)療教育中基于大數(shù)據(jù)的個(gè)性化培訓(xùn)模式研究
- 智慧醫(yī)療的崛起線上醫(yī)療咨詢的新趨勢(shì)
- 康復(fù)醫(yī)學(xué)科關(guān)于無(wú)效中止康復(fù)訓(xùn)練的制度與流程
- 甘肅省建筑安全員A證考試題庫(kù)及答案
- DB36-T 2037-2024 地質(zhì)災(zāi)害治理工程施工監(jiān)理規(guī)范
- 腰麻課件教學(xué)課件
- 2024年《治安管理處罰法》多項(xiàng)選擇題題庫(kù)及答案(共193題)
- 2025屆單一概念材料作文“被討厭的勇氣”審題指導(dǎo)高考語(yǔ)文寫作技巧實(shí)戰(zhàn)分析與素材運(yùn)用
- 工程債權(quán)轉(zhuǎn)讓合同模板
- 人教版初三化學(xué)必考知識(shí)點(diǎn)總結(jié)
- 歷史人教部編版八年級(jí)(上冊(cè))第13課五四運(yùn)動(dòng)課件(23張)2024版新教材
- 美國(guó)技術(shù)服務(wù)合同英文翻譯
- 企業(yè)數(shù)字化生存指南
評(píng)論
0/150
提交評(píng)論