![服務(wù)集成平臺解決10_第1頁](http://file4.renrendoc.com/view/9afc061785a9e31b15cf151b88ddce8a/9afc061785a9e31b15cf151b88ddce8a1.gif)
![服務(wù)集成平臺解決10_第2頁](http://file4.renrendoc.com/view/9afc061785a9e31b15cf151b88ddce8a/9afc061785a9e31b15cf151b88ddce8a2.gif)
![服務(wù)集成平臺解決10_第3頁](http://file4.renrendoc.com/view/9afc061785a9e31b15cf151b88ddce8a/9afc061785a9e31b15cf151b88ddce8a3.gif)
![服務(wù)集成平臺解決10_第4頁](http://file4.renrendoc.com/view/9afc061785a9e31b15cf151b88ddce8a/9afc061785a9e31b15cf151b88ddce8a4.gif)
![服務(wù)集成平臺解決10_第5頁](http://file4.renrendoc.com/view/9afc061785a9e31b15cf151b88ddce8a/9afc061785a9e31b15cf151b88ddce8a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
服務(wù)集成平臺解決方案V1.02016年4月北京天禾元創(chuàng)股份有限公司
目錄TOC\o"1-2"\h\z\u1 引言 41.1 概述 41.2 服務(wù)化架構(gòu)演進 42 微服務(wù)架構(gòu) 52.1 帶來的變革 52.2 架構(gòu)風(fēng)格 72.3 架構(gòu)解析 73 架構(gòu)設(shè)計 83.1 設(shè)計原則 83.2 架構(gòu)原理 93.3 功能特性 103.4 性能特性 113.5 可靠性 114 架構(gòu)組成 124.1 架構(gòu)圖 124.2 服務(wù)路由 134.3 注冊中心 154.4 發(fā)布和引用 174.5 優(yōu)先級調(diào)度 204.6 服務(wù)治理 204.7 中間聚合層 265 集成ESB 276 提供的服務(wù) 286.1 用戶和組織機構(gòu) 286.2 權(quán)限管理 286.3 單點登錄 286.4 通信服務(wù) 286.5 業(yè)務(wù)提醒 286.6 待辦工作 296.7 工作流服務(wù) 29
引言概述本文檔的編寫目的是為xxx煙草信息中心提供服務(wù)集成平臺的解決方案,隨著企業(yè)內(nèi)部業(yè)務(wù)的發(fā)展和應(yīng)用規(guī)模的不斷擴大,系統(tǒng)內(nèi)部的應(yīng)用越來越多,常規(guī)的垂直應(yīng)用架構(gòu)已經(jīng)無法應(yīng)對復(fù)雜業(yè)務(wù)帶來的各種挑戰(zhàn)。通過將業(yè)務(wù)公共能力抽象成原子服務(wù),對復(fù)雜應(yīng)用進行水平拆分和服務(wù)化,實現(xiàn)服務(wù)消費者和提供者的解耦。服務(wù)化架構(gòu)演進傳統(tǒng)軟件的垂直架構(gòu)改造的核心就是要對應(yīng)用做服務(wù)化的改造,服務(wù)化改造使用到的核心技術(shù)架構(gòu)就是服務(wù)集成平臺。服務(wù)化架構(gòu)演進圖如下圖所示:圖SEQ圖\*ARABIC1服務(wù)化架構(gòu)演化圖單一應(yīng)用架構(gòu):當(dāng)網(wǎng)站流量很小時,只需一個應(yīng)用,將所有功能都部署在一起,以減少部署節(jié)點和成本;此時,用于簡化增刪改查工作量的數(shù)據(jù)訪問框架(ORM)是關(guān)鍵。垂直應(yīng)用架構(gòu):當(dāng)訪問量逐漸增大,單一應(yīng)用增加機器帶來的加速度越來越小,將應(yīng)用拆成互不相干的幾個應(yīng)用,以提升效率;此時,用于加速前端頁面開發(fā)的Web框架(MVC)是關(guān)鍵。服務(wù)集成平臺:當(dāng)垂直應(yīng)用越來越多,應(yīng)用之間交互不可避免,將核心業(yè)務(wù)抽取出來,作為獨立的服務(wù),逐漸形成穩(wěn)定的服務(wù)中心,使前端應(yīng)用能更快速的響應(yīng)多變的市場需求;此時,用于提高業(yè)務(wù)復(fù)用及整合的服務(wù)集成平臺(RPC)是關(guān)鍵。流動計算架構(gòu):當(dāng)服務(wù)越來越多,容量的評估,小服務(wù)資源的浪費等問題逐漸顯現(xiàn),此時需增加一個調(diào)度中心基于訪問壓力實時管理集群容量,提高集群利用率,此時,用于提高機器利用率的資源調(diào)度和治理中心(SOA)是關(guān)鍵。微服務(wù)架構(gòu):隨著云計算、移動互聯(lián)網(wǎng)、Docker容器等技術(shù)的快速發(fā)展和應(yīng)用,微服務(wù)架構(gòu)(MicroServiceArchitecture)這一全新的架構(gòu)風(fēng)格越來越受到大家的關(guān)注,也有越來越多的企業(yè)和平臺服務(wù)提供商在實踐中嘗試并使用它來解決具體業(yè)務(wù)問題,微服務(wù)架構(gòu)的流行已經(jīng)成為未來技術(shù)發(fā)展的趨勢之一。微服務(wù)架構(gòu)帶來的變革應(yīng)用解耦服務(wù)化之前,一個大型的應(yīng)用系統(tǒng)通常會包含很多個子應(yīng)用,不同子應(yīng)用存在很多重復(fù)的公共代碼,所有應(yīng)用公用一套數(shù)據(jù)庫。架構(gòu)圖如下圖所示:圖SEQ圖\*ARABIC2傳統(tǒng)應(yīng)用架構(gòu)圖微服務(wù)架構(gòu)出現(xiàn)將功能服務(wù)化,應(yīng)用作為消費者直接調(diào)用服務(wù),這樣就實現(xiàn)了對原因重復(fù)代碼的收編,同時系統(tǒng)之間的調(diào)用關(guān)系也更加清晰。架構(gòu)圖如下所示:圖SEQ圖\*ARABIC3傳統(tǒng)應(yīng)用架構(gòu)圖分而治之當(dāng)垂直應(yīng)用越來越多時,應(yīng)用之間的交互不可避免,將核心業(yè)務(wù)抽取出來,作為獨立的服務(wù),逐漸形成穩(wěn)定的底層微服務(wù),使得前端應(yīng)用能更快速的響應(yīng)多變的市場需求。敏捷交付軟件解決方案的敏捷性,指的是它能夠快速進行變更的能力。敏捷性是微服務(wù)架構(gòu)特性中最顯著的一點:敏捷性的產(chǎn)生,是將運行中的系統(tǒng)解耦為一些列功能單一服務(wù)的結(jié)果。微服務(wù)架構(gòu)能夠?qū)ο到y(tǒng)中其他部分的依賴加以限制,這種特性能夠讓基于微服務(wù)架構(gòu)的應(yīng)用在應(yīng)對Bug或是對新特性需求時,能夠快速的進行變更。架構(gòu)風(fēng)格服務(wù)框架的采用REST(RepresentationalStateTransfer,簡稱REST,表述性狀態(tài)傳遞)風(fēng)格的設(shè)計和實現(xiàn),目前在三種主流的Web服務(wù)實現(xiàn)方案中,因為REST模式的Web服務(wù)與復(fù)雜的SOAP和XML-RPC對比來講明顯的更加簡潔,越來越多的web服務(wù)開始采用REST風(fēng)格設(shè)計和實現(xiàn)。例如,A提供接近REST風(fēng)格的Web服務(wù)進行圖書查找;雅虎提供的Web服務(wù)也是REST風(fēng)格的。架構(gòu)解析微服務(wù)架構(gòu)是一種架構(gòu)風(fēng)格,旨在通過將功能分解到各個離散的服務(wù)中以實現(xiàn)對解決方案的解耦。傳統(tǒng)架構(gòu)和微服務(wù)架構(gòu)對比圖如下圖所示:圖SEQ圖\*ARABIC4傳統(tǒng)架構(gòu)和微服務(wù)架構(gòu)對比圖架構(gòu)設(shè)計設(shè)計原則面向服務(wù)的架構(gòu)設(shè)計原則主要包括如下內(nèi)容。服務(wù)可復(fù)用:不管是否存在即時的復(fù)用機會,服務(wù)均被設(shè)計為支持潛在的可復(fù)用性。服務(wù)共享一個標(biāo)準(zhǔn)契約:為了與服務(wù)提供者交互,消費者需要導(dǎo)入服務(wù)提供者的服務(wù)契約,這個契約可以是一個IDL文件、Java接口定義、WSDL文件,甚至是一個接口文檔。服務(wù)是松耦合的:服務(wù)被設(shè)計為功能相對獨立、盡量不依賴其他服務(wù)的獨立提供者。服務(wù)是底層邏輯的抽象:只有經(jīng)服務(wù)契約所暴露的服務(wù)對外部世界可見,契約之外底層的實現(xiàn)邏輯是不可見的。服務(wù)是可組合、可編排的:多個服務(wù)可能被編排組合成一個新的服務(wù),這允許不同邏輯抽象的自由組合,促進服務(wù)的復(fù)用。服務(wù)是自治的:邏輯由服務(wù)所控制,并位于一個清晰的邊界內(nèi),服務(wù)已經(jīng)在邊界內(nèi)被控制,不依賴于其他服務(wù)。服務(wù)是無狀態(tài)的:服務(wù)應(yīng)當(dāng)不需要管理狀態(tài)信息,因此能夠維持松耦合性。服務(wù)應(yīng)當(dāng)被設(shè)計成無狀態(tài),即便這意味著要將狀態(tài)管理移至他處。服務(wù)是可以被自動發(fā)現(xiàn)的:服務(wù)發(fā)布上線后,允許被其他消費者自動發(fā)現(xiàn);當(dāng)服務(wù)提供者下線后,允許消費者接收服務(wù)下線通知。架構(gòu)原理服務(wù)集成平臺核心邏輯架構(gòu)圖如下圖所示:圖SEQ圖\*ARABIC5服務(wù)集成平臺的邏輯架構(gòu)圖 通常服務(wù)集成平臺可以抽線為三層:RPC層:包括底層通信框架(例如NIO框架的封裝、公有協(xié)議的封裝等)、序列化和發(fā)序列化框架、用于屏蔽底層通信協(xié)議細(xì)節(jié)和序列化方式的差異的Remoting框架。FilterChain層:服務(wù)調(diào)用職責(zé)鏈,提供多種服務(wù)調(diào)用切面供框架自身和使用者擴展,例如負(fù)載均衡、服務(wù)調(diào)用性能統(tǒng)計、服務(wù)調(diào)用完成通知機制、失敗重發(fā)等。Service層:主要包括Java動態(tài)代理,消費者使用,主要用于將服務(wù)提供者的接口封裝成遠(yuǎn)程服務(wù)調(diào)用:Java反射,服務(wù)提供者使用,根據(jù)消費者請求消息中的接口名、方法名、參數(shù)列表反射調(diào)用服務(wù)者提供的接口本地實現(xiàn)。再向上就是業(yè)務(wù)的服務(wù)接口定義和實現(xiàn)類,對于使用spring配置化開發(fā)的就是SpringBean,服務(wù)由業(yè)務(wù)來實現(xiàn),平臺負(fù)責(zé)將業(yè)務(wù)接口發(fā)布成遠(yuǎn)程服務(wù)。功能特性服務(wù)集成平臺必須實現(xiàn)一些公共功能,這些公共功能見下表:表SEQ表\*ARABIC1功能特性特性名功能名說明服務(wù)訂閱發(fā)布配置化發(fā)布和引用服務(wù)支持通過XML配置的方式發(fā)布和導(dǎo)入服務(wù),降低對業(yè)務(wù)代碼的侵入服務(wù)自動發(fā)現(xiàn)機制支持服務(wù)實現(xiàn)自動發(fā)現(xiàn),由注冊中心推送服務(wù)地址,消費者不需要配置服務(wù)提供者的地址,服務(wù)地址透明化服務(wù)在線注冊和去注冊支持運行態(tài)注冊新服務(wù),也支持運行態(tài)取消某個服務(wù)的注冊服務(wù)路由默認(rèn)提供隨機路由、輪詢、基于權(quán)重的路由策略等默認(rèn)提供常用的路由策略,避免每個框架使用者都重復(fù)開發(fā)粘滯鏈接總是向同一個提供方發(fā)起請求,除非此提供方掛掉,再切換到另外一臺路由定制支持用戶自定義路由策略,擴展平臺的功能集群容錯Failover失敗自動切換,當(dāng)出現(xiàn)失敗,重試其他服務(wù),通常用于讀操作,也可以用于冪等性的寫操作Failback失敗自動恢復(fù),后臺記錄失敗請求,定時重發(fā),通常用于消息通知操作Failfast快速失敗,只發(fā)起一次調(diào)用,失敗立即報錯,通常用于非冪等性的寫操作服務(wù)調(diào)用同步調(diào)用消費者發(fā)起服務(wù)調(diào)用之后,同步阻塞等待服務(wù)端響應(yīng)異步調(diào)用消費者發(fā)起服務(wù)調(diào)用之后,不阻塞立即返回,由服務(wù)端返回應(yīng)答后異步通知消費者并行調(diào)用消費者同時對多個服務(wù)提供者批量發(fā)起服務(wù)調(diào)用請求,批量發(fā)起請求后,集中等待應(yīng)答多協(xié)議私有協(xié)議支持二進制等私有協(xié)議,支持私有協(xié)議定制和擴展公有協(xié)議提供WebService等公有協(xié)議,用于外部服務(wù)對接序列化方式二進制類序列化支持Thrigt、ProtocolBuffer等二進制協(xié)議,提升序列化性能文本類序列化支持JSON,XML等文本類型的序列化方式,提升通用性和可讀性統(tǒng)一配置本地靜態(tài)配置安裝部署修改一次,運行態(tài)不修改的配置可以本地配置文件中基于配置中心的動態(tài)配置運行態(tài)需要調(diào)整的參數(shù),統(tǒng)一放到配置中心(服務(wù)注冊中心),修改后統(tǒng)一下發(fā),實時生效性能特性應(yīng)用服務(wù)化以后,由原來的本地API調(diào)用變成跨進程的遠(yuǎn)程調(diào)用,網(wǎng)絡(luò)通信、消息序列化和發(fā)序列化、發(fā)射調(diào)用和動態(tài)代理等都會導(dǎo)致性能損耗、時延增加。因此,服務(wù)集成平臺的性能指標(biāo)非常重要,性能特性總結(jié)如表所示:表SEQ表\*ARABIC2性能特性線性特性說明高性能在同等資源占用的情況下,單服務(wù)提供者的TPS要盡量提高低時延在同等資源占用情況下,服務(wù)調(diào)用時延要盡量低性能線性增長擴展服務(wù)提供者,性能要能夠線性增長可靠性應(yīng)用由單機調(diào)用演進到分布式部署之后,由于網(wǎng)絡(luò)故障、服務(wù)提供者故障等因素,會導(dǎo)致業(yè)務(wù)失敗率增加,服務(wù)集成平臺要具備很強的可靠性,來保證業(yè)務(wù)的成功率,可靠性總結(jié)如下表所示:表SEQ表\*ARABIC3可靠性特性名功能名說明服務(wù)注冊中心服務(wù)健康狀態(tài)檢測注冊中心通過心跳檢測服務(wù)提供者的存在,服務(wù)提供者宕機,注冊中心將立即推送事件通知消費者故障切換注冊中心對等集群,任意一臺宕機后,將自動切換到另一臺高HA注冊中心全部宕機后,服務(wù)提供者和服務(wù)消費者仍能通過本地緩存通信消除單點故障服務(wù)無狀態(tài)服務(wù)提供者無狀態(tài),任意一臺宕機后,不影響使用服務(wù)集群容錯只要集群中有一臺機器的服務(wù)提供者可用,業(yè)務(wù)就不會中斷鏈路健壯性心跳檢測鏈路空閑時沒有業(yè)務(wù)消息,通過定時心跳檢測鏈路是否可用斷連重連機制鏈路段連之后,根據(jù)客戶端配置的重連策略定時重連,重連成功之前消息不會路由到段連的服務(wù)提供者上架構(gòu)組成架構(gòu)圖服務(wù)集成平臺的架構(gòu)圖如下圖所示:圖SEQ圖\*ARABIC6服務(wù)集成平臺圖節(jié)點角色說明提供者:暴露服務(wù)的服務(wù)提供方。消費者:調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費方。服務(wù)注冊中心:服務(wù)注冊與發(fā)現(xiàn)的注冊中心。服務(wù)監(jiān)控中心:統(tǒng)計服務(wù)的調(diào)用次調(diào)和調(diào)用時間的監(jiān)控中心。服務(wù)容器:服務(wù)運行容器。調(diào)用關(guān)系說明0.開始:服務(wù)容器負(fù)責(zé)啟動,加載,運行服務(wù)提供者。1.注冊:服務(wù)提供者在啟動時,向注冊中心注冊自己提供的服務(wù)。1.0.審核:管理員對服務(wù)提供者注冊的服務(wù)進行審核。2.訂閱:服務(wù)消費者在啟動時,向注冊中心訂閱自己所需的服務(wù)。3.通報:注冊中心返回服務(wù)提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。4.調(diào)用:服務(wù)消費者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺提供者進行調(diào)用,如果調(diào)用失敗,再選另一臺調(diào)用。5.統(tǒng)計:服務(wù)消費者和提供者,在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心。服務(wù)路由服務(wù)集成平臺上線運行時都是集群組網(wǎng),這意味著集群中存在某個服務(wù)的多實例部署,消費者如何從服務(wù)列表中選擇合適的服務(wù)提供者進行調(diào)用,這就涉及到服務(wù)路由。服務(wù)集成平臺要能夠滿足用戶靈活的路由需求。透明化路由很多開源的RPC框架調(diào)用者需要配置服務(wù)提供者的地址信息,盡管可以通過讀取數(shù)據(jù)庫的服務(wù)地址列表等方式避免硬編碼地址信息,但是消費者依然要感知服務(wù)提供者的地址信息,這就違反了透明化路由的原則。基于服務(wù)注冊中心的訂閱發(fā)布,在服務(wù)集成平臺中,服務(wù)注冊中心用于存儲服務(wù)提供者的地址信息、服務(wù)發(fā)布相關(guān)的屬性信息,消費者通過主動查詢和被動通知的方式獲取服務(wù)提供者的地址信息,而不需要像之前那樣在代碼中硬編碼服務(wù)提供者的地址信息。消費者只需要知道當(dāng)前系統(tǒng)發(fā)布了哪些服務(wù),而不需要知道服務(wù)具體存在什么位置,這就是透明化路由。消費者緩存服務(wù)提供者的地址,消費者調(diào)用服務(wù)提供者時,不需要每次調(diào)用都去服務(wù)注冊中心查詢服務(wù)提供者地址列表。消費者客戶端從本地緩存的服務(wù)提供者路由表中查詢地址信息,根據(jù)路由策略進行路由選擇。負(fù)載均衡負(fù)載均衡策略是服務(wù)重要的屬性,服務(wù)集成平臺通常會提供多種負(fù)載均衡的策略,同時支持用戶擴展負(fù)載均衡的策略。采用隨機算法進行負(fù)載均衡。輪循,按公約后的權(quán)重設(shè)置輪循比率。服務(wù)調(diào)用時延,消費者緩存所有服務(wù)提供者的服務(wù)調(diào)用時延,周期性的計算服務(wù)調(diào)用平均時延,然后計算每個服務(wù)提供者服務(wù)調(diào)用時延于平均時延的差值,根據(jù)差值大小動態(tài)調(diào)整權(quán)重。一致性哈希,相同參數(shù)的請求總是發(fā)到同一個服務(wù)提供者,當(dāng)某臺提供者宕機時,原本發(fā)往該提供者的請求,基于虛擬節(jié)點平攤到其他提供者,不會引起劇烈變動。粘滯鏈接,用于有狀態(tài)的服務(wù),盡可能讓客戶端總是向同一臺提供者發(fā)起服務(wù)調(diào)用,除非該提供者宕機再連接另一臺。本地優(yōu)先策略在一些業(yè)務(wù)場景中,本地JVM內(nèi)部也發(fā)布了需要消費的服務(wù),優(yōu)先調(diào)用本JVM內(nèi)部發(fā)布的服務(wù)提供者,這種模式成為injvm模式。如果物理機或者VM配置比較好,多個應(yīng)用進程往往會選擇合設(shè)。服務(wù)消費者和服務(wù)提供者可能會被部署到同一臺機器上。服務(wù)路由時優(yōu)先選擇本機的服務(wù)提供者,如果找不到再重新發(fā)起遠(yuǎn)程服務(wù)調(diào)用,該模式成為innative模式。路由規(guī)則負(fù)載均衡、本地路由優(yōu)先等路由通常可以滿足大部分業(yè)務(wù)的線上需求,但是在一些場景中需要對路由策略設(shè)置一些過濾條件,比較常用的是基于表達式的條件路由和腳本路由。路由策略定制平臺除了提供默認(rèn)的路由策略之外,在架構(gòu)上還需要支持業(yè)務(wù)擴展路由算法,實現(xiàn)業(yè)務(wù)定義路由。配置化路由路由配置的優(yōu)先級:客戶端配置>服務(wù)端配置>全局配置。配置策略的設(shè)計如下:本地配置:包括服務(wù)提供者和服務(wù)消費者、默認(rèn)全局配置三種。統(tǒng)一注冊管理:無論是服務(wù)提供者還是消費者,本地配置的路由策略統(tǒng)一注冊到服務(wù)注冊中心,進行集中化配置管理。動態(tài)下發(fā):運維人員通過服務(wù)治理Portal修改路由規(guī)則,更新后的路由規(guī)則被持久化到服務(wù)注冊中心。服務(wù)注冊中心將變更后的服務(wù)路由策略或者規(guī)則下發(fā)給服務(wù)提供者和消費者。注冊中心對于服務(wù)提供者,它需要發(fā)布服務(wù);對于服務(wù)消費者,它最關(guān)心的如何獲取它所需要的服務(wù)。對于服務(wù)提供方和服務(wù)消費方來說,它們還有可能兼具這兩種角色。如何有效地管理服務(wù)訂閱/發(fā)布,避免硬編碼地址信息是服務(wù)集成平臺需要解決的問題之一。通過將服務(wù)統(tǒng)一管理起來,可以有效地優(yōu)化內(nèi)部應(yīng)用對服務(wù)發(fā)布/使用的流程和管理,服務(wù)注冊中心就是專門來管理服務(wù)訂閱/發(fā)布的配置管理節(jié)點。特性設(shè)計服務(wù)注冊中心的工作原理圖如下圖所示:圖SEQ圖\*ARABIC7注冊中心工作原理圖服務(wù)提供者在啟動時,根據(jù)服務(wù)發(fā)布文件中配置的服務(wù)發(fā)布信息向注冊中心注冊自己提供的服務(wù)。服務(wù)消費者在啟動時,根據(jù)消費者配置文件中配置的服務(wù)消費信息向注冊中心訂閱自己所需要的服務(wù),消費者刷新本地緩存的路由表。注冊中心返回服務(wù)提供者地址列表給消費者,如果有變更,注冊中心主動推送變更數(shù)據(jù)給消費者,消費者刷新本地緩存的路由表。服務(wù)消費者從本地緩存的服務(wù)提供者地址列表中,基于負(fù)載均衡算法選擇一臺服務(wù)器提供者進行調(diào)用。注冊中心的功能設(shè)計特性主要包括:對等集群:注冊中心某一個或者多個服務(wù)注冊中心進程宕機,不會導(dǎo)致服務(wù)注冊中心集群功能不可用。對于客戶端,無論服務(wù)注冊中心配置多少個進程,客戶端只需要連接其中一個即可。提供CRUD接口。安全加固:主要涉及鏈路的安全性和數(shù)據(jù)的安全性。訂閱發(fā)布機制??煽啃浴0l(fā)布和引用服務(wù)提供者需要支持配置、注解、API調(diào)用等方式,把本地接口發(fā)布成遠(yuǎn)程服務(wù);對于消費者,可以通過對等的方式引用遠(yuǎn)程服務(wù)提供者,實現(xiàn)服務(wù)的發(fā)布和引用。發(fā)布設(shè)計消費者導(dǎo)入服務(wù)提供者的接口API定義,配置服務(wù)引用信息,即可在代碼中直接調(diào)用遠(yuǎn)程服務(wù),流程設(shè)計如下圖所示:圖SEQ圖\*ARABIC8服務(wù)發(fā)布流程圖服務(wù)發(fā)布的方式:XML配置化的方式、注解、API調(diào)用,其中XML配置的方式具有很多優(yōu)點,服務(wù)框架對業(yè)務(wù)代碼零侵入、擴展和修改方便、修改配置不需要重新編譯代碼等。例如:<beanid=”echoService”class=”edu.neu.EchoServiceImpl”/><xxx:serviceinterface=”edu.neu.EchoService”ref=”echoService”/>。代理:本地實現(xiàn)封裝成代理,對于服務(wù)提供者將本地實現(xiàn)類封裝成代理對象不是必須的;也可以利用一系列工具類解析服務(wù)提供者信息,然后將服務(wù)提供者的地址信息注冊到服務(wù)注冊中心。發(fā)布成指定協(xié)議:根據(jù)服務(wù)配置的屬性信息,將服務(wù)發(fā)布成指定協(xié)議。需要指出的是,同一個服務(wù)允許發(fā)布成多種協(xié)議,例如:<beanid=”echoService”class=”edu.neu.EchoServiceImpl”/><xxx:serviceinterface=”edu.neu.EchoService”ref=”echoService”protocol=”HTTP,thrift”/>服務(wù)提供者信息注冊:將服務(wù)按照指定協(xié)議發(fā)布之后,需要將服務(wù)發(fā)布信息注冊到信息中心。初始化服務(wù)注冊中心客戶端SDK,根據(jù)配置的注冊中心地址連接注冊中心,將服務(wù)提供者進行注冊。引用設(shè)計消費者導(dǎo)入服務(wù)提供者的接口API定義,配置服務(wù)引用信息,即可在代碼中直接調(diào)用遠(yuǎn)程服務(wù),流程如下圖所示:圖SEQ圖\*ARABIC9服務(wù)引用流程圖本地接口調(diào)用轉(zhuǎn)換成遠(yuǎn)程服務(wù)調(diào)用:消費者導(dǎo)入服務(wù)提供者的本地API之后,在配置文件中引用遠(yuǎn)程服務(wù)提供者。例如:<xxx:referenceid=”echoService”interface=”edu.neu.EchoService”/><beanclass=”edu.neu.xxxAction”init-method=”start”><propertyname=”echoService”ref=”echoService”/></bean>服務(wù)地址本地緩存:消費者根據(jù)引用的服務(wù)名等信息,連接服務(wù)注冊中心,獲取已經(jīng)發(fā)布的服務(wù)提供者地址等信息,緩存到本地的服務(wù)路由表中。服務(wù)路由的時候,直接從本地緩存的地址表中獲取服務(wù)的地址信息,按照指定的策略進行服務(wù)路由。遠(yuǎn)程服務(wù)調(diào)用:消費者從本地緩存的服務(wù)列表中按照指定策略路由,將請求消息封裝成協(xié)議消息;調(diào)用相關(guān)協(xié)議的客戶端將請求發(fā)送給服務(wù)提供者,業(yè)務(wù)線程按照服務(wù)調(diào)用方式選擇同步等待或者注冊監(jiān)聽器回調(diào)。協(xié)議客戶端讀取到應(yīng)答消息,將數(shù)據(jù)包解碼成協(xié)議應(yīng)答消息;在根據(jù)序列化格式將消息體反序列化成POJO對象,喚醒業(yè)務(wù)等待的線程(或者回調(diào)注冊的監(jiān)聽器);業(yè)務(wù)線程獲得服務(wù)調(diào)用結(jié)果返回。如果消費者調(diào)用超時,按照集群容錯策略執(zhí)行Failover、Failcache等重試策略,來保證服務(wù)調(diào)用成功?;叶劝l(fā)布灰度發(fā)布是指在黑于白之間,能夠平滑過渡的一種發(fā)布方式。ABtest就是一種灰度發(fā)布方式:讓一部分用戶繼續(xù)用A,一部分用戶開始用B;如果用戶對B沒有反對意見,那么逐步擴大范圍,把所有用戶都遷移到B上來?;叶劝l(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度。優(yōu)先級調(diào)度當(dāng)系統(tǒng)資源非常有限時,為了保證高優(yōu)先級的服務(wù)能夠正常運行,保障服務(wù)SLA,需要降低一些非核心服務(wù)的調(diào)度頻次,釋放部分資源占用,保障系統(tǒng)的整體運行平穩(wěn)。支持服務(wù)發(fā)布時設(shè)置優(yōu)先級策略,并在資源成為瓶頸時按照用戶配置的優(yōu)先級策略調(diào)度執(zhí)行服務(wù)。服務(wù)治理隨著業(yè)務(wù)的發(fā)展,服務(wù)越來越多,如何協(xié)調(diào)線上運行的各個服務(wù),保障服務(wù)的SLA(Service-Level-Agreement服務(wù)等級協(xié)議),對服務(wù)架構(gòu)和運維人員。是一個很大的挑戰(zhàn)。線上業(yè)務(wù)發(fā)生故障時,需要對故障業(yè)務(wù)做服務(wù)降級流量控制、流量遷移等,快速恢復(fù)業(yè)務(wù)。為了規(guī)范服務(wù)的上線和下線,在服務(wù)發(fā)布前,需要走服務(wù)預(yù)發(fā)布流程,由架構(gòu)師或者項目經(jīng)理對需要上線的服務(wù)做發(fā)布審核,審核通過后才能上線。服務(wù)治理框架就是為了滿足用戶以上的需求,對服務(wù)進行有效管控,保障服務(wù)的高效、健康的運行。服務(wù)治理的體系圖如下圖所示:圖SEQ圖\*ARABIC10服務(wù)治理體系圖功能說明服務(wù)治理是服務(wù)集成平臺重要的特性,如下表所示:表SEQ表\*ARABIC4功能說明特性名功能名說明服務(wù)運行態(tài)管控服務(wù)路由業(yè)務(wù)高峰期,通過動態(tài)修改路由策略實現(xiàn)導(dǎo)流服務(wù)限流資源成為瓶頸時,服務(wù)端和消費者的動態(tài)流控服務(wù)遷入遷出實現(xiàn)資源動態(tài)分配服務(wù)降級服務(wù)提供者故障時或者業(yè)務(wù)高峰期,進行服務(wù)強制或者容錯降級,執(zhí)行本地降級邏輯,保證系統(tǒng)平穩(wěn)運行服務(wù)超時控制動態(tài)調(diào)整超時時間,在業(yè)務(wù)高峰期保證業(yè)務(wù)調(diào)用成功率服務(wù)監(jiān)控性能統(tǒng)計統(tǒng)計項包括服務(wù)調(diào)用時延、成功率、調(diào)用次數(shù)等統(tǒng)計報表提供多維度、實時和歷史數(shù)據(jù)報表,同比、環(huán)比等性能對比數(shù)據(jù),供運維、運營等使用告警指標(biāo)異常、根據(jù)告警策略發(fā)送告警,包括但不限于短信,E-mail、記錄日志等服務(wù)生命周期管理上線審批服務(wù)提供者不能隨意線上發(fā)布服務(wù),需要通過正規(guī)的審批流程批準(zhǔn)后才能上線下線通知服務(wù)提供者在下線某個服務(wù)之前一段時間,需要根據(jù)SLA策略,通知消費者服務(wù)灰度發(fā)布灰度環(huán)境劃分原則,接口前向兼容性策略,以及消費者如何路由,都需要灰度發(fā)布引擎負(fù)責(zé)管理故障快速定界定位分布式日志采集支持在大規(guī)模分布式環(huán)境中實時采集容器、中間件和應(yīng)用的各種日志海量日志在線檢索支持分布式環(huán)境海量日志的在線檢索,支持多維度索引和模糊查詢調(diào)用鏈接可視化展示通過分布式消息跟蹤系統(tǒng)輸出調(diào)用鏈,可視化快速地進行故障定界運行日志故障定位通過調(diào)用鏈的故障關(guān)鍵字,在日志檢索界面快速檢索故障日志,用于故障的精確定位服務(wù)安全敏感服務(wù)的授權(quán)策略敏感服務(wù)如何授權(quán),防止惡意調(diào)用鏈路的安全防護消費者和服務(wù)者之間的長連接,需要增加安全防護。例如基于Token的安全認(rèn)證機制治理定位面向物聯(lián)網(wǎng)業(yè)務(wù)的服務(wù)治理,聚焦在對內(nèi)采用統(tǒng)一服務(wù)框架服務(wù)化的業(yè)務(wù)運行態(tài)、細(xì)粒度的敏捷治理體系。治理對象基于統(tǒng)一分布式框架開發(fā)的業(yè)務(wù)服務(wù),于協(xié)議本身無關(guān),治理的可以是SOA服務(wù),也可以是基于內(nèi)部服務(wù)框架私有協(xié)議開發(fā)的各種服務(wù)。治理策略針對互聯(lián)網(wǎng)服務(wù)的特點,例如突發(fā)的流量高峰、網(wǎng)絡(luò)延時、機房故障等,重點對大規(guī)??鐧C房的海量服務(wù)進行運行態(tài)的治理,保障線上服務(wù)的SLA,滿足用戶體驗。常用的治理策略包括服務(wù)的限流降級、服務(wù)遷入遷出、服務(wù)動態(tài)路由和灰度發(fā)布等。治理目標(biāo)防止業(yè)務(wù)服務(wù)架構(gòu)的腐化:通過服務(wù)注冊中心對服務(wù)強弱依賴進行分析,結(jié)合運行時服務(wù)調(diào)用鏈分析,梳理不合理的依賴和調(diào)用路徑,優(yōu)化服務(wù)框架,防止代碼腐化。快速故障定界定位:通過分布式日志采集框架,實時收集服務(wù)調(diào)用鏈日志、服務(wù)性能KPI數(shù)據(jù)、服務(wù)接口日志等,實時匯總和在線分析,集中存儲和展示,實現(xiàn)故障的自動發(fā)現(xiàn)、自動分析和在線條件檢索,方便運維人員、研發(fā)人員進行實時故障診斷。服務(wù)微管控:細(xì)粒度的運行期服務(wù)治理,包括限流降級、服務(wù)遷入遷出、服務(wù)超時控制、智能路由、統(tǒng)一配置、優(yōu)先級調(diào)度和流量遷移等,提供方法級治理和動態(tài)生效功能,通過一些列細(xì)粒度的治理策略,在故障發(fā)生時可以多管齊下,在線調(diào)整,快速恢復(fù)業(yè)務(wù)。服務(wù)生命周期管理:包括服務(wù)的上線審批、下線通知,服務(wù)的在線升級,以及線上線下服務(wù)文檔庫的建設(shè)。架構(gòu)設(shè)計服務(wù)治理是服務(wù)集成平臺的一個可選特性,盡管從服務(wù)開發(fā)和運行角度看它不是必需的,但如果沒有服務(wù)治理功能,服務(wù)集成平臺的服務(wù)SLA很難得到保障,服務(wù)化很難真正實施成功。服務(wù)集成平臺的服務(wù)治理的架構(gòu)圖如下圖所示:圖SEQ圖\*ARABIC11服務(wù)治理邏輯架構(gòu)圖第一層叫做服務(wù)治理展示層,它主要由服務(wù)治理Portal組成,提供可視化的界面,方便服務(wù)運維人員進行治理操作。第二層叫做服務(wù)治理SDK層,它主要包括服務(wù)治理元數(shù)據(jù),服務(wù)治理實體對象,服務(wù)模型、應(yīng)用模型、治理組織模型、用戶權(quán)限模型等;服務(wù)治理接口,服務(wù)治理Portal調(diào)用服務(wù)治理接口實現(xiàn)服務(wù)治理;服務(wù)治理客戶端類庫,服務(wù)治理Portal需要集成服務(wù)集成平臺的客戶端類庫,實現(xiàn)服務(wù)的自動發(fā)現(xiàn)和調(diào)用;調(diào)用示例,客戶端SDK需要提供服務(wù)治理接口的參數(shù)說明、注意事項以及給出常用的調(diào)用示例,方便前端開發(fā)人員使用;集成開發(fā)指南,指導(dǎo)使用者如何在開發(fā)環(huán)境中搭建、集成和使用服務(wù)治理SDK。第三層叫做后臺服務(wù)治理服務(wù)層,由一組服務(wù)治理服務(wù)組成,可以單獨部署,也可以與應(yīng)用組合部署。考慮到健壯性,通常選擇獨立集群部署。運行態(tài)功能設(shè)計運行態(tài)服務(wù)治理首先要能夠做到可視,包括當(dāng)前系統(tǒng)發(fā)布了哪些服務(wù),這些服務(wù)部署在哪些機器上,性能KPI數(shù)據(jù)如何,指標(biāo)是否正常等。除了告警,對服務(wù)健康狀態(tài)和關(guān)鍵指標(biāo)的日常巡檢也非常重要。服務(wù)的發(fā)布情況和運行狀態(tài)是首先需要關(guān)注的。線下治理隨著服務(wù)化的推進,服務(wù)的開發(fā)者越來越多,服務(wù)之間的互相調(diào)用和依賴也日趨復(fù)雜,另外搭建一套線下的全量化境成本非常高。為了解決這個問題,需要建立服務(wù)文檔中心,方便線上運維人員查看和多團隊之間協(xié)作。它的工作原理如圖所示:圖SEQ圖\*ARABIC12服務(wù)治理邏輯架構(gòu)圖 服務(wù)的上線審批、下線通知機制需要建立并完善起來,它的工作原理如下圖所示:圖SEQ圖\*ARABIC13服務(wù)上線審批、下線通知圖 除了以上常用的治理措施,線下服務(wù)治理還包括:業(yè)務(wù)的梳理、服務(wù)劃分原則
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨時合作協(xié)議合同
- 2025年標(biāo)準(zhǔn)企業(yè)自建住宅承包協(xié)議范本
- 人力資源勞動合同示例
- 個人車輛借用合同協(xié)議書
- 個人合同到期終止補償金標(biāo)準(zhǔn)解析
- 個體戶門窗更換合同模板
- 交通賠償合同模板及使用說明
- 個人債權(quán)債務(wù)轉(zhuǎn)讓合同示例
- 專利許可合同:知識產(chǎn)權(quán)的新時代
- 上海市倉儲物流租賃合同
- 2024年資格考試-對外漢語教師資格證筆試參考題庫含答案
- 2024年4月自考02382管理信息系統(tǒng)答案及評分參考
- (蘇版)初三化學(xué)上冊:第2單元課題1空氣
- 2023年12月廣東珠海市軌道交通局公開招聘工作人員1人筆試近6年高頻考題難、易錯點薈萃答案帶詳解附后
- 腹腔鏡腎上腺腫瘤切除術(shù)查房護理課件
- 燃?xì)庹质綘t應(yīng)急預(yù)案
- 專題23平拋運動臨界問題相遇問題類平拋運和斜拋運動
- 超聲科醫(yī)德醫(yī)風(fēng)制度內(nèi)容
- 高三開學(xué)收心班會課件
- 蒸汽換算計算表
- 四年級計算題大全(列豎式計算,可打印)
評論
0/150
提交評論