分布式服務(wù)架構(gòu)解決方案_第1頁
分布式服務(wù)架構(gòu)解決方案_第2頁
分布式服務(wù)架構(gòu)解決方案_第3頁
分布式服務(wù)架構(gòu)解決方案_第4頁
分布式服務(wù)架構(gòu)解決方案_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

分布式服務(wù)架構(gòu)解決方案V1.02016年4月北京天禾元?jiǎng)?chuàng)股份有限公司

目錄1 引言 51.1 編寫目的 51.2 服務(wù)化架構(gòu)演進(jìn) 52 架構(gòu)設(shè)計(jì) 62.1 設(shè)計(jì)原則 62.2 架構(gòu)原理 72.3 功能特性 82.4 性能特性 92.5 可靠性 92.6 服務(wù)治理 103 架構(gòu)組成 113.1 架構(gòu)圖 113.2 服務(wù)路由 133.2.1 透明化路由 133.2.2 負(fù)載均衡 133.2.3 本地優(yōu)先策略 143.2.4 路由規(guī)則 143.2.5 路由策略定制 143.2.6 配置化路由 143.3 注冊(cè)中心 153.3.1 特性設(shè)計(jì) 153.4 發(fā)布和引用 163.4.1 發(fā)布設(shè)計(jì) 163.4.2 引用設(shè)計(jì) 183.4.3 灰度發(fā)布 193.5 優(yōu)先級(jí)調(diào)度 193.6 服務(wù)治理 193.6.1 治理定位 203.6.2 治理對(duì)象 203.6.3 治理策略 203.6.4 治理目標(biāo) 203.6.5 架構(gòu)設(shè)計(jì) 213.6.6 運(yùn)行態(tài)功能設(shè)計(jì) 223.6.7 線下治理 223.6.8 安全和權(quán)限管理 243.7 中間聚合層 244 微服務(wù)架構(gòu) 254.1 帶來的變革 254.1.1 應(yīng)用解耦 254.1.2 分而治之 264.1.3 敏捷交付 274.2 架構(gòu)解析 275 集成ESB 286 提供的服務(wù) 286.1 用戶和組織機(jī)構(gòu) 286.2 權(quán)限管理 286.3 單點(diǎn)登錄 286.4 通信服務(wù) 296.5 業(yè)務(wù)提醒 296.6 待辦工作 296.7 工作流服務(wù) 296.7.1 流程定義 306.7.2 流程測(cè)試 326.7.3 數(shù)據(jù)清理 326.7.4 流程審批 336.7.5 流程部署 336.7.6 流程升級(jí)/注銷 336.7.7 調(diào)用接口 33

引言編寫目的本文檔的編寫目的是為xxx煙草信息中心提供分布式服務(wù)架構(gòu)的解決方案,隨著企業(yè)內(nèi)部業(yè)務(wù)的發(fā)展和應(yīng)用規(guī)模的不斷擴(kuò)大,系統(tǒng)內(nèi)部的應(yīng)用越來越多,常規(guī)的垂直應(yīng)用架構(gòu)已經(jīng)無法應(yīng)對(duì)復(fù)雜業(yè)務(wù)帶來的各種挑戰(zhàn)。通過將業(yè)務(wù)公共能力抽象成原子服務(wù),對(duì)復(fù)雜應(yīng)用進(jìn)行水平拆分和服務(wù)化,實(shí)現(xiàn)服務(wù)消費(fèi)者和提供者的解耦。服務(wù)化架構(gòu)演進(jìn)傳統(tǒng)軟件的垂直架構(gòu)改造的核心就是要對(duì)應(yīng)用做服務(wù)化的改造,服務(wù)化改造使用到的核心技術(shù)架構(gòu)就是分布式服務(wù)架構(gòu)。服務(wù)化架構(gòu)演進(jìn)圖如下圖所示:圖SEQ圖\*ARABIC1服務(wù)化架構(gòu)演化圖單一應(yīng)用架構(gòu):當(dāng)網(wǎng)站流量很小時(shí),只需一個(gè)應(yīng)用,將所有功能都部署在一起,以減少部署節(jié)點(diǎn)和成本;此時(shí),用于簡化增刪改查工作量的數(shù)據(jù)訪問框架(ORM)是關(guān)鍵。垂直應(yīng)用架構(gòu):當(dāng)訪問量逐漸增大,單一應(yīng)用增加機(jī)器帶來的加速度越來越小,將應(yīng)用拆成互不相干的幾個(gè)應(yīng)用,以提升效率;此時(shí),用于加速前端頁面開發(fā)的Web框架(MVC)是關(guān)鍵。分布式服務(wù)架構(gòu):當(dāng)垂直應(yīng)用越來越多,應(yīng)用之間交互不可避免,將核心業(yè)務(wù)抽取出來,作為獨(dú)立的服務(wù),逐漸形成穩(wěn)定的服務(wù)中心,使前端應(yīng)用能更快速的響應(yīng)多變的市場(chǎng)需求;此時(shí),用于提高業(yè)務(wù)復(fù)用及整合的分布式服務(wù)框架(RPC)是關(guān)鍵。流動(dòng)計(jì)算架構(gòu):當(dāng)服務(wù)越來越多,容量的評(píng)估,小服務(wù)資源的浪費(fèi)等問題逐漸顯現(xiàn),此時(shí)需增加一個(gè)調(diào)度中心基于訪問壓力實(shí)時(shí)管理集群容量,提高集群利用率,此時(shí),用于提高機(jī)器利用率的資源調(diào)度和治理中心(SOA)是關(guān)鍵。微服務(wù)架構(gòu):隨著云計(jì)算、移動(dòng)互聯(lián)網(wǎng)、Docker容器等技術(shù)的快速發(fā)展和應(yīng)用,微服務(wù)架構(gòu)(MicroServiceArchitecture)這一全新的架構(gòu)風(fēng)格越來越受到大家的關(guān)注,也有越來越多的企業(yè)和平臺(tái)服務(wù)提供商在實(shí)踐中嘗試并使用它來解決具體業(yè)務(wù)問題,微服務(wù)架構(gòu)的流行已經(jīng)成為未來技術(shù)發(fā)展的趨勢(shì)之一。架構(gòu)設(shè)計(jì)設(shè)計(jì)原則面向服務(wù)的架構(gòu)設(shè)計(jì)原則主要包括如下內(nèi)容。服務(wù)可復(fù)用:不管是否存在即時(shí)的復(fù)用機(jī)會(huì),服務(wù)均被設(shè)計(jì)為支持潛在的可復(fù)用性。服務(wù)共享一個(gè)標(biāo)準(zhǔn)契約:為了與服務(wù)提供者交互,消費(fèi)者需要導(dǎo)入服務(wù)提供者的服務(wù)契約,這個(gè)契約可以是一個(gè)IDL文件、Java接口定義、WSDL文件,甚至是一個(gè)接口文檔。服務(wù)是松耦合的:服務(wù)被設(shè)計(jì)為功能相對(duì)獨(dú)立、盡量不依賴其他服務(wù)的獨(dú)立提供者。服務(wù)是底層邏輯的抽象:只有經(jīng)服務(wù)契約所暴露的服務(wù)對(duì)外部世界可見,契約之外底層的實(shí)現(xiàn)邏輯是不可見的。服務(wù)是可組合、可編排的:多個(gè)服務(wù)可能被編排組合成一個(gè)新的服務(wù),這允許不同邏輯抽象的自由組合,促進(jìn)服務(wù)的復(fù)用。服務(wù)是自治的:邏輯由服務(wù)所控制,并位于一個(gè)清晰的邊界內(nèi),服務(wù)已經(jīng)在邊界內(nèi)被控制,不依賴于其他服務(wù)。服務(wù)是無狀態(tài)的:服務(wù)應(yīng)當(dāng)不需要管理狀態(tài)信息,因此能夠維持松耦合性。服務(wù)應(yīng)當(dāng)被設(shè)計(jì)成無狀態(tài),即便這意味著要將狀態(tài)管理移至他處。服務(wù)是可以被自動(dòng)發(fā)現(xiàn)的:服務(wù)發(fā)布上線后,允許被其他消費(fèi)者自動(dòng)發(fā)現(xiàn);當(dāng)服務(wù)提供者下線后,允許消費(fèi)者接收服務(wù)下線通知。架構(gòu)原理分布式服務(wù)架構(gòu)核心邏輯架構(gòu)圖如下圖所示:圖SEQ圖\*ARABIC2分布式服務(wù)框架的邏輯架構(gòu)圖 通常分布式服務(wù)架構(gòu)可以抽線為三層:RPC層:包括底層通信框架(例如NIO框架的封裝、公有協(xié)議的封裝等)、序列化和發(fā)序列化框架、用于屏蔽底層通信協(xié)議細(xì)節(jié)和序列化方式的差異的Remoting框架。FilterChain層:服務(wù)調(diào)用職責(zé)鏈,提供多種服務(wù)調(diào)用切面供框架自身和使用者擴(kuò)展,例如負(fù)載均衡、服務(wù)調(diào)用性能統(tǒng)計(jì)、服務(wù)調(diào)用完成通知機(jī)制、失敗重發(fā)等。Service層:主要包括Java動(dòng)態(tài)代理,消費(fèi)者使用,主要用于將服務(wù)提供者的接口封裝成遠(yuǎn)程服務(wù)調(diào)用:Java反射,服務(wù)提供者使用,根據(jù)消費(fèi)者請(qǐng)求消息中的接口名、方法名、參數(shù)列表反射調(diào)用服務(wù)者提供的接口本地實(shí)現(xiàn)。再向上就是業(yè)務(wù)的服務(wù)接口定義和實(shí)現(xiàn)類,對(duì)于使用spring配置化開發(fā)的就是SpringBean,服務(wù)由業(yè)務(wù)來實(shí)現(xiàn),平臺(tái)負(fù)責(zé)將業(yè)務(wù)接口發(fā)布成遠(yuǎn)程服務(wù)。功能特性分布式服務(wù)框架必須實(shí)現(xiàn)一些公共功能,這些公共功能見下表:表SEQ表\*ARABIC1功能特性特性名功能名說明服務(wù)訂閱發(fā)布配置化發(fā)布和引用服務(wù)支持通過XML配置的方式發(fā)布和導(dǎo)入服務(wù),降低對(duì)業(yè)務(wù)代碼的侵入服務(wù)自動(dòng)發(fā)現(xiàn)機(jī)制支持服務(wù)實(shí)現(xiàn)自動(dòng)發(fā)現(xiàn),由注冊(cè)中心推送服務(wù)地址,消費(fèi)者不需要配置服務(wù)提供者的地址,服務(wù)地址透明化服務(wù)在線注冊(cè)和去注冊(cè)支持運(yùn)行態(tài)注冊(cè)新服務(wù),也支持運(yùn)行態(tài)取消某個(gè)服務(wù)的注冊(cè)服務(wù)路由默認(rèn)提供隨機(jī)路由、輪詢、基于權(quán)重的路由策略等默認(rèn)提供常用的路由策略,避免每個(gè)框架使用者都重復(fù)開發(fā)粘滯鏈接總是向同一個(gè)提供方發(fā)起請(qǐng)求,除非此提供方掛掉,再切換到另外一臺(tái)路由定制支持用戶自定義路由策略,擴(kuò)展平臺(tái)的功能集群容錯(cuò)Failover失敗自動(dòng)切換,當(dāng)出現(xiàn)失敗,重試其他服務(wù),通常用于讀操作,也可以用于冪等性的寫操作Failback失敗自動(dòng)恢復(fù),后臺(tái)記錄失敗請(qǐng)求,定時(shí)重發(fā),通常用于消息通知操作Failfast快速失敗,只發(fā)起一次調(diào)用,失敗立即報(bào)錯(cuò),通常用于非冪等性的寫操作服務(wù)調(diào)用同步調(diào)用消費(fèi)者發(fā)起服務(wù)調(diào)用之后,同步阻塞等待服務(wù)端響應(yīng)異步調(diào)用消費(fèi)者發(fā)起服務(wù)調(diào)用之后,不阻塞立即返回,由服務(wù)端返回應(yīng)答后異步通知消費(fèi)者并行調(diào)用消費(fèi)者同時(shí)對(duì)多個(gè)服務(wù)提供者批量發(fā)起服務(wù)調(diào)用請(qǐng)求,批量發(fā)起請(qǐng)求后,集中等待應(yīng)答多協(xié)議私有協(xié)議支持二進(jìn)制等私有協(xié)議,支持私有協(xié)議定制和擴(kuò)展公有協(xié)議提供WebService等公有協(xié)議,用于外部服務(wù)對(duì)接序列化方式二進(jìn)制類序列化支持Thrigt、ProtocolBuffer等二進(jìn)制協(xié)議,提升序列化性能文本類序列化支持JSON,XML等文本類型的序列化方式,提升通用性和可讀性統(tǒng)一配置本地靜態(tài)配置安裝部署修改一次,運(yùn)行態(tài)不修改的配置可以本地配置文件中基于配置中心的動(dòng)態(tài)配置運(yùn)行態(tài)需要調(diào)整的參數(shù),統(tǒng)一放到配置中心(服務(wù)注冊(cè)中心),修改后統(tǒng)一下發(fā),實(shí)時(shí)生效性能特性應(yīng)用服務(wù)化以后,由原來的本地API調(diào)用變成跨進(jìn)程的遠(yuǎn)程調(diào)用,網(wǎng)絡(luò)通信、消息序列化和發(fā)序列化、發(fā)射調(diào)用和動(dòng)態(tài)代理等都會(huì)導(dǎo)致性能損耗、時(shí)延增加。因此,分布式服務(wù)框架的性能指標(biāo)非常重要,性能特性總結(jié)如表所示:表SEQ表\*ARABIC2性能特性線性特性說明高性能在同等資源占用的情況下,單服務(wù)提供者的TPS要盡量提高低時(shí)延在同等資源占用情況下,服務(wù)調(diào)用時(shí)延要盡量低性能線性增長擴(kuò)展服務(wù)提供者,性能要能夠線性增長可靠性應(yīng)用由單機(jī)調(diào)用演進(jìn)到分布式部署之后,由于網(wǎng)絡(luò)故障、服務(wù)提供者故障等因素,會(huì)導(dǎo)致業(yè)務(wù)失敗率增加,分布式服務(wù)框架要具備很強(qiáng)的可靠性,來保證業(yè)務(wù)的成功率,可靠性總結(jié)如下表所示:表SEQ表\*ARABIC3可靠性特性名功能名說明服務(wù)注冊(cè)中心服務(wù)健康狀態(tài)檢測(cè)注冊(cè)中心通過心跳檢測(cè)服務(wù)提供者的存在,服務(wù)提供者宕機(jī),注冊(cè)中心將立即推送事件通知消費(fèi)者故障切換注冊(cè)中心對(duì)等集群,任意一臺(tái)宕機(jī)后,將自動(dòng)切換到另一臺(tái)高HA注冊(cè)中心全部宕機(jī)后,服務(wù)提供者和服務(wù)消費(fèi)者仍能通過本地緩存通信消除單點(diǎn)故障服務(wù)無狀態(tài)服務(wù)提供者無狀態(tài),任意一臺(tái)宕機(jī)后,不影響使用服務(wù)集群容錯(cuò)只要集群中有一臺(tái)機(jī)器的服務(wù)提供者可用,業(yè)務(wù)就不會(huì)中斷鏈路健壯性心跳檢測(cè)鏈路空閑時(shí)沒有業(yè)務(wù)消息,通過定時(shí)心跳檢測(cè)鏈路是否可用斷連重連機(jī)制鏈路段連之后,根據(jù)客戶端配置的重連策略定時(shí)重連,重連成功之前消息不會(huì)路由到段連的服務(wù)提供者上服務(wù)治理服務(wù)治理是分布式服務(wù)架構(gòu)重要的特性,如下表所示:表SEQ表\*ARABIC4服務(wù)治理特性名功能名說明服務(wù)運(yùn)行態(tài)管控服務(wù)路由業(yè)務(wù)高峰期,通過動(dòng)態(tài)修改路由策略實(shí)現(xiàn)導(dǎo)流服務(wù)限流資源成為瓶頸時(shí),服務(wù)端和消費(fèi)者的動(dòng)態(tài)流控服務(wù)遷入遷出實(shí)現(xiàn)資源動(dòng)態(tài)分配服務(wù)降級(jí)服務(wù)提供者故障時(shí)或者業(yè)務(wù)高峰期,進(jìn)行服務(wù)強(qiáng)制或者容錯(cuò)降級(jí),執(zhí)行本地降級(jí)邏輯,保證系統(tǒng)平穩(wěn)運(yùn)行服務(wù)超時(shí)控制動(dòng)態(tài)調(diào)整超時(shí)時(shí)間,在業(yè)務(wù)高峰期保證業(yè)務(wù)調(diào)用成功率服務(wù)監(jiān)控性能統(tǒng)計(jì)統(tǒng)計(jì)項(xiàng)包括服務(wù)調(diào)用時(shí)延、成功率、調(diào)用次數(shù)等統(tǒng)計(jì)報(bào)表提供多維度、實(shí)時(shí)和歷史數(shù)據(jù)報(bào)表,同比、環(huán)比等性能對(duì)比數(shù)據(jù),供運(yùn)維、運(yùn)營等使用告警指標(biāo)異常、根據(jù)告警策略發(fā)送告警,包括但不限于短信,E-mail、記錄日志等服務(wù)生命周期管理上線審批服務(wù)提供者不能隨意線上發(fā)布服務(wù),需要通過正規(guī)的審批流程批準(zhǔn)后才能上線下線通知服務(wù)提供者在下線某個(gè)服務(wù)之前一段時(shí)間,需要根據(jù)SLA策略,通知消費(fèi)者服務(wù)灰度發(fā)布灰度環(huán)境劃分原則,接口前向兼容性策略,以及消費(fèi)者如何路由,都需要灰度發(fā)布引擎負(fù)責(zé)管理故障快速定界定位分布式日志采集支持在大規(guī)模分布式環(huán)境中實(shí)時(shí)采集容器、中間件和應(yīng)用的各種日志海量日志在線檢索支持分布式環(huán)境海量日志的在線檢索,支持多維度索引和模糊查詢調(diào)用鏈接可視化展示通過分布式消息跟蹤系統(tǒng)輸出調(diào)用鏈,可視化快速地進(jìn)行故障定界運(yùn)行日志故障定位通過調(diào)用鏈的故障關(guān)鍵字,在日志檢索界面快速檢索故障日志,用于故障的精確定位服務(wù)安全敏感服務(wù)的授權(quán)策略敏感服務(wù)如何授權(quán),防止惡意調(diào)用鏈路的安全防護(hù)消費(fèi)者和服務(wù)者之間的長連接,需要增加安全防護(hù)。例如基于Token的安全認(rèn)證機(jī)制架構(gòu)組成架構(gòu)圖分布式服務(wù)架構(gòu)的架構(gòu)圖如下圖所示:圖SEQ圖\*ARABIC3分布式服務(wù)架構(gòu)圖節(jié)點(diǎn)角色說明提供者:暴露服務(wù)的服務(wù)提供方。消費(fèi)者:調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方。服務(wù)注冊(cè)中心:服務(wù)注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心。服務(wù)監(jiān)控中心:統(tǒng)計(jì)服務(wù)的調(diào)用次調(diào)和調(diào)用時(shí)間的監(jiān)控中心。服務(wù)容器:服務(wù)運(yùn)行容器。調(diào)用關(guān)系說明0.開始:服務(wù)容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行服務(wù)提供者。1.注冊(cè):服務(wù)提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的服務(wù)。1.0.審核:管理員對(duì)服務(wù)提供者注冊(cè)的服務(wù)進(jìn)行審核。2.訂閱:服務(wù)消費(fèi)者在啟動(dòng)時(shí),向注冊(cè)中心訂閱自己所需的服務(wù)。3.通報(bào):注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長連接推送變更數(shù)據(jù)給消費(fèi)者。4.調(diào)用:服務(wù)消費(fèi)者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺(tái)提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺(tái)調(diào)用。5.統(tǒng)計(jì):服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心。服務(wù)路由分布式服務(wù)框架上線運(yùn)行時(shí)都是集群組網(wǎng),這意味著集群中存在某個(gè)服務(wù)的多實(shí)例部署,消費(fèi)者如何從服務(wù)列表中選擇合適的服務(wù)提供者進(jìn)行調(diào)用,這就涉及到服務(wù)路由。分布式服務(wù)框架要能夠滿足用戶靈活的路由需求。透明化路由很多開源的RPC框架調(diào)用者需要配置服務(wù)提供者的地址信息,盡管可以通過讀取數(shù)據(jù)庫的服務(wù)地址列表等方式避免硬編碼地址信息,但是消費(fèi)者依然要感知服務(wù)提供者的地址信息,這就違反了透明化路由的原則?;诜?wù)注冊(cè)中心的訂閱發(fā)布,在分布式服務(wù)框架中,服務(wù)注冊(cè)中心用于存儲(chǔ)服務(wù)提供者的地址信息、服務(wù)發(fā)布相關(guān)的屬性信息,消費(fèi)者通過主動(dòng)查詢和被動(dòng)通知的方式獲取服務(wù)提供者的地址信息,而不需要像之前那樣在代碼中硬編碼服務(wù)提供者的地址信息。消費(fèi)者只需要知道當(dāng)前系統(tǒng)發(fā)布了哪些服務(wù),而不需要知道服務(wù)具體存在什么位置,這就是透明化路由。消費(fèi)者緩存服務(wù)提供者的地址,消費(fèi)者調(diào)用服務(wù)提供者時(shí),不需要每次調(diào)用都去服務(wù)注冊(cè)中心查詢服務(wù)提供者地址列表。消費(fèi)者客戶端從本地緩存的服務(wù)提供者路由表中查詢地址信息,根據(jù)路由策略進(jìn)行路由選擇。負(fù)載均衡負(fù)載均衡策略是服務(wù)重要的屬性,分布式服務(wù)框架通常會(huì)提供多種負(fù)載均衡的策略,同時(shí)支持用戶擴(kuò)展負(fù)載均衡的策略。采用隨機(jī)算法進(jìn)行負(fù)載均衡。輪循,按公約后的權(quán)重設(shè)置輪循比率。服務(wù)調(diào)用時(shí)延,消費(fèi)者緩存所有服務(wù)提供者的服務(wù)調(diào)用時(shí)延,周期性的計(jì)算服務(wù)調(diào)用平均時(shí)延,然后計(jì)算每個(gè)服務(wù)提供者服務(wù)調(diào)用時(shí)延于平均時(shí)延的差值,根據(jù)差值大小動(dòng)態(tài)調(diào)整權(quán)重。一致性哈希,相同參數(shù)的請(qǐng)求總是發(fā)到同一個(gè)服務(wù)提供者,當(dāng)某臺(tái)提供者宕機(jī)時(shí),原本發(fā)往該提供者的請(qǐng)求,基于虛擬節(jié)點(diǎn)平攤到其他提供者,不會(huì)引起劇烈變動(dòng)。粘滯鏈接,用于有狀態(tài)的服務(wù),盡可能讓客戶端總是向同一臺(tái)提供者發(fā)起服務(wù)調(diào)用,除非該提供者宕機(jī)再連接另一臺(tái)。本地優(yōu)先策略在一些業(yè)務(wù)場(chǎng)景中,本地JVM內(nèi)部也發(fā)布了需要消費(fèi)的服務(wù),優(yōu)先調(diào)用本JVM內(nèi)部發(fā)布的服務(wù)提供者,這種模式成為injvm模式。如果物理機(jī)或者VM配置比較好,多個(gè)應(yīng)用進(jìn)程往往會(huì)選擇合設(shè)。服務(wù)消費(fèi)者和服務(wù)提供者可能會(huì)被部署到同一臺(tái)機(jī)器上。服務(wù)路由時(shí)優(yōu)先選擇本機(jī)的服務(wù)提供者,如果找不到再重新發(fā)起遠(yuǎn)程服務(wù)調(diào)用,該模式成為innative模式。路由規(guī)則負(fù)載均衡、本地路由優(yōu)先等路由通??梢詽M足大部分業(yè)務(wù)的線上需求,但是在一些場(chǎng)景中需要對(duì)路由策略設(shè)置一些過濾條件,比較常用的是基于表達(dá)式的條件路由和腳本路由。路由策略定制平臺(tái)除了提供默認(rèn)的路由策略之外,在架構(gòu)上還需要支持業(yè)務(wù)擴(kuò)展路由算法,實(shí)現(xiàn)業(yè)務(wù)定義路由。配置化路由路由配置的優(yōu)先級(jí):客戶端配置>服務(wù)端配置>全局配置。配置策略的設(shè)計(jì)如下:本地配置:包括服務(wù)提供者和服務(wù)消費(fèi)者、默認(rèn)全局配置三種。統(tǒng)一注冊(cè)管理:無論是服務(wù)提供者還是消費(fèi)者,本地配置的路由策略統(tǒng)一注冊(cè)到服務(wù)注冊(cè)中心,進(jìn)行集中化配置管理。動(dòng)態(tài)下發(fā):運(yùn)維人員通過服務(wù)治理Portal修改路由規(guī)則,更新后的路由規(guī)則被持久化到服務(wù)注冊(cè)中心。服務(wù)注冊(cè)中心將變更后的服務(wù)路由策略或者規(guī)則下發(fā)給服務(wù)提供者和消費(fèi)者。注冊(cè)中心對(duì)于服務(wù)提供者,它需要發(fā)布服務(wù);對(duì)于服務(wù)消費(fèi)者,它最關(guān)心的如何獲取它所需要的服務(wù)。對(duì)于服務(wù)提供方和服務(wù)消費(fèi)方來說,它們還有可能兼具這兩種角色。如何有效地管理服務(wù)訂閱/發(fā)布,避免硬編碼地址信息是分布式服務(wù)框架需要解決的問題之一。通過將服務(wù)統(tǒng)一管理起來,可以有效地優(yōu)化內(nèi)部應(yīng)用對(duì)服務(wù)發(fā)布/使用的流程和管理,服務(wù)注冊(cè)中心就是專門來管理服務(wù)訂閱/發(fā)布的配置管理節(jié)點(diǎn)。特性設(shè)計(jì)服務(wù)注冊(cè)中心的工作原理圖如下圖所示:圖SEQ圖\*ARABIC4注冊(cè)中心工作原理圖服務(wù)提供者在啟動(dòng)時(shí),根據(jù)服務(wù)發(fā)布文件中配置的服務(wù)發(fā)布信息向注冊(cè)中心注冊(cè)自己提供的服務(wù)。服務(wù)消費(fèi)者在啟動(dòng)時(shí),根據(jù)消費(fèi)者配置文件中配置的服務(wù)消費(fèi)信息向注冊(cè)中心訂閱自己所需要的服務(wù),消費(fèi)者刷新本地緩存的路由表。注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心主動(dòng)推送變更數(shù)據(jù)給消費(fèi)者,消費(fèi)者刷新本地緩存的路由表。服務(wù)消費(fèi)者從本地緩存的服務(wù)提供者地址列表中,基于負(fù)載均衡算法選擇一臺(tái)服務(wù)器提供者進(jìn)行調(diào)用。注冊(cè)中心的功能設(shè)計(jì)特性主要包括:對(duì)等集群:注冊(cè)中心某一個(gè)或者多個(gè)服務(wù)注冊(cè)中心進(jìn)程宕機(jī),不會(huì)導(dǎo)致服務(wù)注冊(cè)中心集群功能不可用。對(duì)于客戶端,無論服務(wù)注冊(cè)中心配置多少個(gè)進(jìn)程,客戶端只需要連接其中一個(gè)即可。提供CRUD接口。安全加固:主要涉及鏈路的安全性和數(shù)據(jù)的安全性。訂閱發(fā)布機(jī)制??煽啃浴0l(fā)布和引用服務(wù)提供者需要支持配置、注解、API調(diào)用等方式,把本地接口發(fā)布成遠(yuǎn)程服務(wù);對(duì)于消費(fèi)者,可以通過對(duì)等的方式引用遠(yuǎn)程服務(wù)提供者,實(shí)現(xiàn)服務(wù)的發(fā)布和引用。發(fā)布設(shè)計(jì)消費(fèi)者導(dǎo)入服務(wù)提供者的接口API定義,配置服務(wù)引用信息,即可在代碼中直接調(diào)用遠(yuǎn)程服務(wù),流程設(shè)計(jì)如下圖所示:圖SEQ圖\*ARABIC5服務(wù)發(fā)布流程圖服務(wù)發(fā)布的方式:XML配置化的方式、注解、API調(diào)用,其中XML配置的方式具有很多優(yōu)點(diǎn),服務(wù)框架對(duì)業(yè)務(wù)代碼零侵入、擴(kuò)展和修改方便、修改配置不需要重新編譯代碼等。例如:<beanid=”echoService”class=”edu.neu.EchoServiceImpl”/><xxx:serviceinterface=”edu.neu.EchoService”ref=”echoService”/>。代理:本地實(shí)現(xiàn)封裝成代理,對(duì)于服務(wù)提供者將本地實(shí)現(xiàn)類封裝成代理對(duì)象不是必須的;也可以利用一系列工具類解析服務(wù)提供者信息,然后將服務(wù)提供者的地址信息注冊(cè)到服務(wù)注冊(cè)中心。發(fā)布成指定協(xié)議:根據(jù)服務(wù)配置的屬性信息,將服務(wù)發(fā)布成指定協(xié)議。需要指出的是,同一個(gè)服務(wù)允許發(fā)布成多種協(xié)議,例如:<beanid=”echoService”class=”edu.neu.EchoServiceImpl”/><xxx:serviceinterface=”edu.neu.EchoService”ref=”echoService”protocol=”HTTP,thrift”/>服務(wù)提供者信息注冊(cè):將服務(wù)按照指定協(xié)議發(fā)布之后,需要將服務(wù)發(fā)布信息注冊(cè)到信息中心。初始化服務(wù)注冊(cè)中心客戶端SDK,根據(jù)配置的注冊(cè)中心地址連接注冊(cè)中心,將服務(wù)提供者進(jìn)行注冊(cè)。引用設(shè)計(jì)消費(fèi)者導(dǎo)入服務(wù)提供者的接口API定義,配置服務(wù)引用信息,即可在代碼中直接調(diào)用遠(yuǎn)程服務(wù),流程如下圖所示:圖SEQ圖\*ARABIC6服務(wù)引用流程圖本地接口調(diào)用轉(zhuǎn)換成遠(yuǎn)程服務(wù)調(diào)用:消費(fèi)者導(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ù)地址本地緩存:消費(fèi)者根據(jù)引用的服務(wù)名等信息,連接服務(wù)注冊(cè)中心,獲取已經(jīng)發(fā)布的服務(wù)提供者地址等信息,緩存到本地的服務(wù)路由表中。服務(wù)路由的時(shí)候,直接從本地緩存的地址表中獲取服務(wù)的地址信息,按照指定的策略進(jìn)行服務(wù)路由。遠(yuǎn)程服務(wù)調(diào)用:消費(fèi)者從本地緩存的服務(wù)列表中按照指定策略路由,將請(qǐng)求消息封裝成協(xié)議消息;調(diào)用相關(guān)協(xié)議的客戶端將請(qǐng)求發(fā)送給服務(wù)提供者,業(yè)務(wù)線程按照服務(wù)調(diào)用方式選擇同步等待或者注冊(cè)監(jiān)聽器回調(diào)。協(xié)議客戶端讀取到應(yīng)答消息,將數(shù)據(jù)包解碼成協(xié)議應(yīng)答消息;在根據(jù)序列化格式將消息體反序列化成POJO對(duì)象,喚醒業(yè)務(wù)等待的線程(或者回調(diào)注冊(cè)的監(jiān)聽器);業(yè)務(wù)線程獲得服務(wù)調(diào)用結(jié)果返回。如果消費(fèi)者調(diào)用超時(shí),按照集群容錯(cuò)策略執(zhí)行Failover、Failcache等重試策略,來保證服務(wù)調(diào)用成功?;叶劝l(fā)布灰度發(fā)布是指在黑于白之間,能夠平滑過渡的一種發(fā)布方式。ABtest就是一種灰度發(fā)布方式:讓一部分用戶繼續(xù)用A,一部分用戶開始用B;如果用戶對(duì)B沒有反對(duì)意見,那么逐步擴(kuò)大范圍,把所有用戶都遷移到B上來?;叶劝l(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度。優(yōu)先級(jí)調(diào)度當(dāng)系統(tǒng)資源非常有限時(shí),為了保證高優(yōu)先級(jí)的服務(wù)能夠正常運(yùn)行,保障服務(wù)SLA,需要降低一些非核心服務(wù)的調(diào)度頻次,釋放部分資源占用,保障系統(tǒng)的整體運(yùn)行平穩(wěn)。支持服務(wù)發(fā)布時(shí)設(shè)置優(yōu)先級(jí)策略,并在資源成為瓶頸時(shí)按照用戶配置的優(yōu)先級(jí)策略調(diào)度執(zhí)行服務(wù)。服務(wù)治理隨著業(yè)務(wù)的發(fā)展,服務(wù)越來越多,如何協(xié)調(diào)線上運(yùn)行的各個(gè)服務(wù),保障服務(wù)的SLA(Service-Level-Agreement服務(wù)等級(jí)協(xié)議),對(duì)服務(wù)架構(gòu)和運(yùn)維人員。是一個(gè)很大的挑戰(zhàn)。線上業(yè)務(wù)發(fā)生故障時(shí),需要對(duì)故障業(yè)務(wù)做服務(wù)降級(jí)流量控制、流量遷移等,快速恢復(fù)業(yè)務(wù)。為了規(guī)范服務(wù)的上線和下線,在服務(wù)發(fā)布前,需要走服務(wù)預(yù)發(fā)布流程,由架構(gòu)師或者項(xiàng)目經(jīng)理對(duì)需要上線的服務(wù)做發(fā)布審核,審核通過后才能上線。服務(wù)治理框架就是為了滿足用戶以上的需求,對(duì)服務(wù)進(jìn)行有效管控,保障服務(wù)的高效、健康的運(yùn)行。服務(wù)治理的體系圖如下圖所示:圖SEQ圖\*ARABIC7服務(wù)治理體系圖治理定位面向物聯(lián)網(wǎng)業(yè)務(wù)的服務(wù)治理,聚焦在對(duì)內(nèi)采用統(tǒng)一服務(wù)框架服務(wù)化的業(yè)務(wù)運(yùn)行態(tài)、細(xì)粒度的敏捷治理體系。治理對(duì)象基于統(tǒng)一分布式框架開發(fā)的業(yè)務(wù)服務(wù),于協(xié)議本身無關(guān),治理的可以是SOA服務(wù),也可以是基于內(nèi)部服務(wù)框架私有協(xié)議開發(fā)的各種服務(wù)。治理策略針對(duì)互聯(lián)網(wǎng)服務(wù)的特點(diǎn),例如突發(fā)的流量高峰、網(wǎng)絡(luò)延時(shí)、機(jī)房故障等,重點(diǎn)對(duì)大規(guī)??鐧C(jī)房的海量服務(wù)進(jìn)行運(yùn)行態(tài)的治理,保障線上服務(wù)的SLA,滿足用戶體驗(yàn)。常用的治理策略包括服務(wù)的限流降級(jí)、服務(wù)遷入遷出、服務(wù)動(dòng)態(tài)路由和灰度發(fā)布等。治理目標(biāo)防止業(yè)務(wù)服務(wù)架構(gòu)的腐化:通過服務(wù)注冊(cè)中心對(duì)服務(wù)強(qiáng)弱依賴進(jìn)行分析,結(jié)合運(yùn)行時(shí)服務(wù)調(diào)用鏈分析,梳理不合理的依賴和調(diào)用路徑,優(yōu)化服務(wù)框架,防止代碼腐化??焖俟收隙ń缍ㄎ唬和ㄟ^分布式日志采集框架,實(shí)時(shí)收集服務(wù)調(diào)用鏈日志、服務(wù)性能KPI數(shù)據(jù)、服務(wù)接口日志等,實(shí)時(shí)匯總和在線分析,集中存儲(chǔ)和展示,實(shí)現(xiàn)故障的自動(dòng)發(fā)現(xiàn)、自動(dòng)分析和在線條件檢索,方便運(yùn)維人員、研發(fā)人員進(jìn)行實(shí)時(shí)故障診斷。服務(wù)微管控:細(xì)粒度的運(yùn)行期服務(wù)治理,包括限流降級(jí)、服務(wù)遷入遷出、服務(wù)超時(shí)控制、智能路由、統(tǒng)一配置、優(yōu)先級(jí)調(diào)度和流量遷移等,提供方法級(jí)治理和動(dòng)態(tài)生效功能,通過一些列細(xì)粒度的治理策略,在故障發(fā)生時(shí)可以多管齊下,在線調(diào)整,快速恢復(fù)業(yè)務(wù)。服務(wù)生命周期管理:包括服務(wù)的上線審批、下線通知,服務(wù)的在線升級(jí),以及線上線下服務(wù)文檔庫的建設(shè)。架構(gòu)設(shè)計(jì)服務(wù)治理是分布式服務(wù)框架的一個(gè)可選特性,盡管從服務(wù)開發(fā)和運(yùn)行角度看它不是必需的,但如果沒有服務(wù)治理功能,分布式服務(wù)框架的服務(wù)SLA很難得到保障,服務(wù)化很難真正實(shí)施成功。分布式服務(wù)框架的服務(wù)治理的架構(gòu)圖如下圖所示:圖SEQ圖\*ARABIC8服務(wù)治理邏輯架構(gòu)圖第一層叫做服務(wù)治理展示層,它主要由服務(wù)治理Portal組成,提供可視化的界面,方便服務(wù)運(yùn)維人員進(jìn)行治理操作。第二層叫做服務(wù)治理SDK層,它主要包括服務(wù)治理元數(shù)據(jù),服務(wù)治理實(shí)體對(duì)象,服務(wù)模型、應(yīng)用模型、治理組織模型、用戶權(quán)限模型等;服務(wù)治理接口,服務(wù)治理Portal調(diào)用服務(wù)治理接口實(shí)現(xiàn)服務(wù)治理;服務(wù)治理客戶端類庫,服務(wù)治理Portal需要集成分布式服務(wù)框架的客戶端類庫,實(shí)現(xiàn)服務(wù)的自動(dòng)發(fā)現(xiàn)和調(diào)用;調(diào)用示例,客戶端SDK需要提供服務(wù)治理接口的參數(shù)說明、注意事項(xiàng)以及給出常用的調(diào)用示例,方便前端開發(fā)人員使用;集成開發(fā)指南,指導(dǎo)使用者如何在開發(fā)環(huán)境中搭建、集成和使用服務(wù)治理SDK。第三層叫做后臺(tái)服務(wù)治理服務(wù)層,由一組服務(wù)治理服務(wù)組成,可以單獨(dú)部署,也可以與應(yīng)用組合部署??紤]到健壯性,通常選擇獨(dú)立集群部署。運(yùn)行態(tài)功能設(shè)計(jì)運(yùn)行態(tài)服務(wù)治理首先要能夠做到可視,包括當(dāng)前系統(tǒng)發(fā)布了哪些服務(wù),這些服務(wù)部署在哪些機(jī)器上,性能KPI數(shù)據(jù)如何,指標(biāo)是否正常等。除了告警,對(duì)服務(wù)健康狀態(tài)和關(guān)鍵指標(biāo)的日常巡檢也非常重要。服務(wù)的發(fā)布情況和運(yùn)行狀態(tài)是首先需要關(guān)注的。線下治理隨著服務(wù)化的推進(jìn),服務(wù)的開發(fā)者越來越多,服務(wù)之間的互相調(diào)用和依賴也日趨復(fù)雜,另外搭建一套線下的全量化境成本非常高。為了解決這個(gè)問題,需要建立服務(wù)文檔中心,方便線上運(yùn)維人員查看和多團(tuán)隊(duì)之間協(xié)作。它的工作原理如圖所示:圖SEQ圖\*ARABIC9服務(wù)治理邏輯架構(gòu)圖 服務(wù)的上線審批、下線通知機(jī)制需要建立并完善起來,它的工作原理如下圖所示:圖SEQ圖\*ARABIC10服務(wù)上線審批、下線通知圖 除了以上常用的治理措施,線下服務(wù)治理還包括:業(yè)務(wù)的梳理、服務(wù)劃分原則和方法論。服務(wù)跨團(tuán)隊(duì)協(xié)作流程、準(zhǔn)則、工具和方法論。服務(wù)的接口兼容性原則和規(guī)范。安全和權(quán)限管理分布式服務(wù)框架的安全主要涉及到兩個(gè)層面,一個(gè)是服務(wù)的開放和鑒權(quán)機(jī)制;另一個(gè)是服務(wù)治理的安全和權(quán)限管理。服務(wù)治理框架需要提供角色和權(quán)限模型,用于用戶定義角色并進(jìn)行授權(quán),同時(shí)要提供賬號(hào)和角色關(guān)聯(lián)管理功能,方便對(duì)賬號(hào)進(jìn)行授權(quán)。中間聚合層服務(wù)本身是零散化的東西,通常要接入的是中間層。實(shí)際上會(huì)在中間層做聚合,聚合層本身即可以做業(yè)務(wù)聚合,也可以做中間層的聚合,每一層的聚合都要做異步調(diào)用的設(shè)計(jì)。同時(shí)要對(duì)接口進(jìn)行抽取,。這樣的話才能給應(yīng)用使用。因?yàn)閼?yīng)用。本身是沒有服務(wù)發(fā)現(xiàn)的下,圖是以服務(wù)的方式聚合中間層的架構(gòu)圖:圖SEQ圖\*ARABIC11以服務(wù)的方式聚合中間層架構(gòu)圖微服務(wù)架構(gòu)帶來的變革應(yīng)用解耦服務(wù)化之前,一個(gè)大型的應(yīng)用系統(tǒng)通常會(huì)包含很多個(gè)子應(yīng)用,不同子應(yīng)用存在很多重復(fù)的公共代碼,所有應(yīng)用公用一套數(shù)據(jù)庫。架構(gòu)圖如下圖所示:圖SEQ圖\*ARABIC12傳統(tǒng)應(yīng)用架構(gòu)圖微服務(wù)架構(gòu)出現(xiàn)將功能服務(wù)化,應(yīng)用作為消費(fèi)者直接調(diào)用服務(wù),這樣就實(shí)現(xiàn)了對(duì)原因重復(fù)代碼的收編,同時(shí)系統(tǒng)之間的調(diào)用關(guān)系也更加清晰。架構(gòu)圖如下所示:圖SEQ圖\*ARABIC13傳統(tǒng)應(yīng)用架構(gòu)圖分而治之當(dāng)垂直應(yīng)用越來越多時(shí),應(yīng)用之間的交互不可避免,將核心業(yè)務(wù)抽取出來,作為獨(dú)立的服務(wù),逐漸形成穩(wěn)定的底層微服務(wù),使得前端應(yīng)用能更快速的響應(yīng)多變的市場(chǎng)需求。敏捷交付軟件解決方案的敏捷性,指的是它能夠快速進(jìn)行變更的能力。敏捷性是微服務(wù)架構(gòu)特性中最顯著的一點(diǎn):敏捷性的產(chǎn)生,是將運(yùn)行中的系統(tǒng)解耦為一些列功能單一服務(wù)的結(jié)果。微服務(wù)架構(gòu)能夠?qū)ο到y(tǒng)中其他部分的依賴加以限制,這種特性能夠讓基于微服務(wù)架構(gòu)的應(yīng)用在應(yīng)對(duì)Bug或是對(duì)新特性需求時(shí),能夠快速的進(jìn)行變更。架構(gòu)解析微服務(wù)架構(gòu)是一種架構(gòu)風(fēng)格,旨在通過將功能分解到各個(gè)離散的服務(wù)中以實(shí)現(xiàn)對(duì)解決方案的解耦。傳統(tǒng)架構(gòu)和微服務(wù)架構(gòu)對(duì)比圖如下圖所示:圖SEQ圖\*ARABIC14傳統(tǒng)架構(gòu)和微服務(wù)架構(gòu)對(duì)比圖集成ESB企業(yè)服務(wù)總線(EnterpriseServiceBus,ESB)從面向服務(wù)體系架構(gòu)發(fā)展而來,是傳統(tǒng)中間件技術(shù)與XML、Web服務(wù)等技術(shù)結(jié)合的產(chǎn)物。服務(wù)框架對(duì)ESB進(jìn)行了集成。ESB提供了網(wǎng)絡(luò)中最基本的連接中樞,是構(gòu)筑企業(yè)神經(jīng)系統(tǒng)的必要元素。ESB采用了“總線”這樣一種模式來管理和簡化應(yīng)用之間的集成拓?fù)浣Y(jié)構(gòu),以廣為接受的開放標(biāo)準(zhǔn)為基礎(chǔ)來支持應(yīng)用之間在消息、事件和服務(wù)級(jí)別上動(dòng)態(tài)的互聯(lián)互通,是一種在松散耦合的服務(wù)和應(yīng)用之間標(biāo)準(zhǔn)的集成方式。分布式服務(wù)框架雖然集成了ESB總線的功能,但是不作為框架服務(wù)的首選。因?yàn)镋SB要求用戶手工注冊(cè)和管理服務(wù),這樣增加用戶使用和維護(hù)成本。提供的服務(wù)用戶和組織機(jī)構(gòu)分布式服務(wù)框架能夠提供統(tǒng)一的用戶和組織機(jī)構(gòu)管理,通過建立一整套完成的、獨(dú)立基礎(chǔ)信息數(shù)據(jù)庫,框架可以對(duì)外提供用戶登錄服務(wù)。權(quán)限管理分布式服務(wù)框架能夠提供統(tǒng)一的角色權(quán)限管理,權(quán)限包括操作權(quán)限和數(shù)據(jù)權(quán)限。通過建立一整套完整的、獨(dú)立的角色、映射、模塊、操作、數(shù)據(jù)權(quán)限配置等基礎(chǔ)信息數(shù)據(jù)庫,框架可以對(duì)外提供權(quán)限服務(wù)。單點(diǎn)登錄分布式服務(wù)礦建能夠提供統(tǒng)一的單點(diǎn)登錄服務(wù),用戶第一次登陸系統(tǒng)是,首先跳轉(zhuǎn)到框架的認(rèn)證中心,認(rèn)證中心根據(jù)用戶提供的登錄信息,認(rèn)證系統(tǒng)進(jìn)行身份校驗(yàn),如果通過校驗(yàn),應(yīng)該返回給用戶一個(gè)認(rèn)證的憑據(jù)--ticket;用戶再訪問別的應(yīng)用的時(shí)候,就會(huì)將這個(gè)ticket帶上,作為自己認(rèn)證的憑據(jù),應(yīng)用系統(tǒng)接受到請(qǐng)求之后會(huì)把ticket送到認(rèn)證系統(tǒng)進(jìn)行校驗(yàn),檢查ticket的合法性。如果通過校驗(yàn),用戶就可以在不用再次登錄的情況下訪問應(yīng)用系統(tǒng)2和應(yīng)用系統(tǒng)3了。通信服務(wù)分布式服務(wù)框架能夠提供基本的通信服務(wù),例如集成發(fā)送短信或者微信的功能。通過框架提供的統(tǒng)一短信配置Portal或者微信公共賬號(hào),在某個(gè)業(yè)務(wù)工作節(jié)點(diǎn)給指定用戶發(fā)送短信或者微信信息。業(yè)務(wù)提醒分布式服務(wù)框架能夠提供業(yè)務(wù)提醒的功能,通過建立業(yè)務(wù)提醒數(shù)據(jù)表和發(fā)布統(tǒng)一的提醒服務(wù),實(shí)現(xiàn)框架的業(yè)務(wù)提醒功能。各個(gè)業(yè)務(wù)應(yīng)用的前臺(tái)頁面通過定時(shí)請(qǐng)求,來自動(dòng)獲取該業(yè)務(wù)的提醒信息,顯示在前臺(tái)頁面中?;蛘卟捎冒l(fā)送短信、微信等方式提醒系統(tǒng)內(nèi)的相關(guān)人員。待辦工作分布式服務(wù)框架能夠提供個(gè)人待辦工作處理的功能,通過建立待辦工作數(shù)據(jù)表和發(fā)布待辦工作服務(wù),實(shí)現(xiàn)個(gè)人的待辦工作的處理功能。工作流服務(wù)首先用戶的業(yè)務(wù)流程梳理是一項(xiàng)非常繁重的工作,往往在信息系統(tǒng)應(yīng)用之前用戶有一套完成的工作流程。在開展信息系統(tǒng)工作之后,又針對(duì)信息系統(tǒng)的特點(diǎn)對(duì)業(yè)務(wù)流程進(jìn)行規(guī)范。不同的信息系統(tǒng)應(yīng)用又存在不同的業(yè)務(wù)流程定義,這又增加了業(yè)務(wù)流程梳理的難度。因此在分布式服務(wù)框架產(chǎn)生之初,就應(yīng)該對(duì)本單位系統(tǒng)的業(yè)務(wù)流程進(jìn)行梳理和標(biāo)準(zhǔn)化。分布式服務(wù)框架提供了統(tǒng)一的業(yè)務(wù)流程調(diào)用服務(wù),其工作步驟包括流程設(shè)計(jì)、流程測(cè)試、數(shù)據(jù)清理、流程部署和流程注銷等功能。流程定義分布式服務(wù)框架應(yīng)提供可視化的流程設(shè)計(jì)界面,開發(fā)人員或者系統(tǒng)運(yùn)維人員可以通過可視化的流程設(shè)計(jì)器進(jìn)行業(yè)務(wù)流程設(shè)計(jì)。如下圖所示:圖SEQ圖\*ARABIC15流程設(shè)計(jì)圖 在流程設(shè)計(jì)頁面中設(shè)計(jì)人員可以采用鼠標(biāo)拖拽的方式進(jìn)行流程設(shè)計(jì)。生成的流程XML文件如下:<?xmlversion="1.0"encoding="GBK"?><workflowdump="true"xmlns:c="c"xmlns:wf="wf"xmlns:demo_wf="demo_wf"alwaysAssignOwner="true"><description>財(cái)務(wù)處子流程</description><config></config><actions><actionid="rejectStep"forReject="true"visible="false"><meta><argNames>rejectStepIds</argNames></meta></action><actionid="start"name="啟動(dòng)財(cái)務(wù)流程"><t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論