免费黄动漫无码在线观看犹物影视|伊人久久综合一本超碰|国产在线精品一区二区三区不卡|国产女主播久久一区二区免费|

跨系統(tǒng)接口的服務(wù)鏈監(jiān)控

SOA團(tuán)隊(duì) 2020-03-16

由于所有跨系統(tǒng)的接口服務(wù)都通過(guò)ESB服務(wù)總線進(jìn)行封裝代理后接入,因此理論上說(shuō)從實(shí)際業(yè)務(wù)服務(wù)調(diào)用實(shí)例數(shù)據(jù)和日志中是可以反推出來(lái)端到端的業(yè)務(wù)流程的,也就是可以通過(guò)服務(wù)實(shí)例和服務(wù)鏈的監(jiān)控來(lái)間接的監(jiān)控跨系統(tǒng)的業(yè)務(wù)流轉(zhuǎn)是否正常。簡(jiǎn)單來(lái)說(shuō),比如一個(gè)采購(gòu)訂單,基于一個(gè)采購(gòu)訂單號(hào),我們實(shí)際上可以通過(guò)服務(wù)監(jiān)控?cái)?shù)據(jù)來(lái)分析到該訂單是否已經(jīng)從采購(gòu)系統(tǒng)導(dǎo)入到ERP,是否已經(jīng)進(jìn)行了報(bào)賬申請(qǐng),是否已經(jīng)進(jìn)行了付款等,實(shí)際上這些信息從服務(wù)實(shí)例日志中都可以提取出來(lái)。

要完成這件事情,有兩個(gè)關(guān)鍵點(diǎn)要做,即首先要對(duì)服務(wù)鏈本身進(jìn)行進(jìn)行服務(wù)鏈流程建模,其次是能夠?qū)Σ杉娜罩镜妮斎胼敵鲋心軌蜃ト〕鼋Y(jié)構(gòu)化的關(guān)鍵業(yè)務(wù)字段信息。只要做到這兩點(diǎn),我們就很容易實(shí)現(xiàn)可視化的跨系統(tǒng)服務(wù)鏈監(jiān)控功能。

服務(wù)鏈流程建模的功能實(shí)現(xiàn)

在前面我們做ESB服務(wù)設(shè)計(jì)器的時(shí)候,已經(jīng)剝離了原流程引擎中進(jìn)行服務(wù)編排或可視化流程建模的能力。實(shí)際上這里的設(shè)計(jì)本身也就是一個(gè)多個(gè)服務(wù)編排設(shè)計(jì)的過(guò)程,將多個(gè)服務(wù)編排設(shè)計(jì)到一起。注意在這個(gè)過(guò)程中還需要允許有分支,也允許并行。服務(wù)鏈監(jiān)控最終形成的也是一個(gè)完整的服務(wù)鏈監(jiān)控樹(shù)。只是這個(gè)監(jiān)控樹(shù)的形成是通過(guò)可視化的服務(wù)組合編排工具來(lái)實(shí)現(xiàn)的而已。

針對(duì)不同的跨系統(tǒng)業(yè)務(wù)監(jiān)控,都需要針對(duì)不同場(chǎng)景設(shè)計(jì)不同的服務(wù)監(jiān)控模型。比如現(xiàn)在設(shè)計(jì)一個(gè)采購(gòu)訂單服務(wù)鏈監(jiān)控模型,我們建設(shè)對(duì)該模型進(jìn)行簡(jiǎn)化,具體如下通過(guò)建模工具形成如下模型樹(shù)。

合同導(dǎo)入服務(wù)-》采購(gòu)訂單導(dǎo)入服務(wù)-》采購(gòu)接收服務(wù)-》報(bào)賬申請(qǐng)服務(wù)-》應(yīng)付發(fā)票導(dǎo)入服務(wù)-》付款服務(wù)。

即在這些服務(wù)組合編排好后,我們需要維護(hù)對(duì)于每個(gè)服務(wù)對(duì)于的業(yè)務(wù)關(guān)鍵字提取字段,即可以根據(jù)XPath方式來(lái)說(shuō)明是從XML結(jié)構(gòu)里面哪里去提取關(guān)鍵的業(yè)務(wù)字段值,如采購(gòu)訂單號(hào)。那么我們?cè)诓檎覍?shí)例的時(shí)候主要就是用這個(gè)來(lái)解析業(yè)務(wù)報(bào)文里面的內(nèi)容進(jìn)行匹配。一個(gè)服務(wù)本身運(yùn)行涉及到成功和失敗,在流程實(shí)例查看的時(shí)候,最好方式是成功類服務(wù)和失敗類服務(wù)單獨(dú)進(jìn)行顯示,以方便區(qū)分,同時(shí)如果該服務(wù)運(yùn)行成功,未運(yùn)行或運(yùn)行失敗都能夠有明確的背景色分開(kāi)展示。

注意,在上面這個(gè)服務(wù)鏈里面本身是存在1對(duì)多映射關(guān)系的。這種映射關(guān)系全部在點(diǎn)擊流程活動(dòng)節(jié)點(diǎn)的時(shí)候再去顯示明細(xì)。對(duì)于兩個(gè)活動(dòng)節(jié)點(diǎn)之間本身是1對(duì)1映射還是1對(duì)多,也可以在監(jiān)控模板設(shè)置的時(shí)候進(jìn)行維護(hù)。

業(yè)務(wù)日志采集和查詢

采用基于Solr進(jìn)行業(yè)務(wù)關(guān)鍵字查詢和報(bào)文日志全文檢索。即我們不再需要對(duì)服務(wù)運(yùn)行報(bào)文數(shù)據(jù)全部進(jìn)行結(jié)構(gòu)化數(shù)據(jù),只需要對(duì)這些數(shù)據(jù)建立元數(shù)據(jù)索引信息,有了索引后Solr基本就可以快速的檢索和定位到具體的服務(wù)。

對(duì)于當(dāng)前的服務(wù)日志,我們已經(jīng)完成了將Blob結(jié)構(gòu)的數(shù)據(jù)準(zhǔn)實(shí)時(shí)的采集并提取索引信息,進(jìn)入到Solr庫(kù),實(shí)現(xiàn)了基于業(yè)務(wù)關(guān)鍵字的服務(wù)實(shí)例查詢能力,而原來(lái)我們只能基于服務(wù)實(shí)例號(hào)進(jìn)行服務(wù)日志的查詢。基于Solr查詢速度相當(dāng)快,基本都是10多毫秒就能快速的完成服務(wù)日志的檢索能力。在Solr實(shí)現(xiàn)了索引數(shù)據(jù)的創(chuàng)建,基于業(yè)務(wù)關(guān)鍵字的查詢能力后,接下來(lái)分析如何和服務(wù)鏈監(jiān)控進(jìn)行整合。

舉例來(lái)說(shuō),對(duì)于采購(gòu)訂單服務(wù)鏈監(jiān)控,進(jìn)入該功能后我們直接輸入采購(gòu)訂單號(hào),然后基于訂單號(hào)我們做如下事情:

1. 首先找到采購(gòu)訂單服務(wù)鏈監(jiān)控流程模板,然后基于流程模板知道涉及哪些服務(wù)。

2. 找到流程模板中維護(hù)的Xpath檢索項(xiàng)。

3. 基于Xpath檢索項(xiàng)找的信息,拼裝Solr查詢關(guān)鍵字,然后進(jìn)行Solr查詢查找到對(duì)應(yīng)服務(wù)日志記錄。

4. 將服務(wù)日志記錄提取出來(lái)對(duì)應(yīng)到流程實(shí)例具體的活動(dòng)節(jié)點(diǎn)上面。形成關(guān)聯(lián),并區(qū)分成功失敗,當(dāng)前狀態(tài)。

5. 完成流程實(shí)例圖的顯示。

最終完成的服務(wù)鏈監(jiān)控效果圖參考如下:

對(duì)于服務(wù)鏈監(jiān)控,按照前面的思路完全可以做到通過(guò)服務(wù)的監(jiān)控和關(guān)聯(lián),來(lái)逆向?qū)崿F(xiàn)跨系統(tǒng)交互流程的監(jiān)控,即從服務(wù)鏈為主的監(jiān)控轉(zhuǎn)變到跨系統(tǒng)流程交互的監(jiān)控。其本質(zhì)仍然是跨系統(tǒng)間的接口服務(wù)集成和協(xié)同。

整體思路,仍然是先進(jìn)行跨系統(tǒng)交互流程建模,如下就是一個(gè)最簡(jiǎn)單的模型:

我們完全可以采用流程設(shè)計(jì)和建模工具來(lái)完成上圖的流程模型,當(dāng)然如果采用類似支持BPMN標(biāo)準(zhǔn)的流程建模工具還可以進(jìn)一步完成類似含職能帶的跨系統(tǒng)交互流程圖。

在這個(gè)跨系統(tǒng)交互流程圖中,銜接各個(gè)業(yè)務(wù)系統(tǒng)的仍然是相互之間的接口和服務(wù),我們?nèi)匀皇前凑找粋€(gè)核心單據(jù)為基本元素來(lái)進(jìn)行設(shè)計(jì),比如項(xiàng)目編號(hào),合同編號(hào),采購(gòu)訂單編號(hào)等。以這個(gè)編號(hào)來(lái)完成整個(gè)跨系統(tǒng)端到端流程的分析。

在建模的過(guò)程中,兩個(gè)系統(tǒng)間的連接線就是關(guān)鍵的服務(wù),但是由于不是直接的服務(wù)間的連接,因此仍然需要建立服務(wù)之間的關(guān)聯(lián)性。比如我們整體跨系統(tǒng)監(jiān)控都是以采購(gòu)訂單號(hào)來(lái)進(jìn)行跟蹤的話,我們就需要定義采購(gòu)訂單這個(gè)元素在每一個(gè)接口服務(wù)中對(duì)應(yīng)的XML-Element的位置,以確保這些服務(wù)之間本身能夠關(guān)聯(lián)起來(lái)。

整體我們看到實(shí)現(xiàn)的思路和服務(wù)鏈監(jiān)控基本相同。

仍然是先根據(jù)業(yè)務(wù)關(guān)鍵字查詢功能,精確查詢出相關(guān)的服務(wù)實(shí)例數(shù)據(jù)。然后將服務(wù)實(shí)例數(shù)據(jù)映射到流程圖上面,形成流程圖實(shí)例。對(duì)于已經(jīng)成功運(yùn)行的服務(wù)標(biāo)注為綠色,對(duì)于接口調(diào)用失敗的服務(wù)標(biāo)注為紅色,對(duì)于還沒(méi)有執(zhí)行到的服務(wù)標(biāo)注為灰色。

同時(shí)更加有意義的事情是,我們完全可以用動(dòng)畫效果模擬這個(gè)跨系統(tǒng)接口交互流程。即能夠動(dòng)態(tài)的看到各個(gè)接口被觸發(fā)和調(diào)用的前后順序。同時(shí)看到前后接口觸發(fā)的大致時(shí)間間隔信息。通過(guò)這種實(shí)現(xiàn)能夠很方便我們實(shí)現(xiàn)圍繞核心業(yè)務(wù)對(duì)象的端到端流程監(jiān)控能力。

當(dāng)然這是一種變通的端到端流程監(jiān)控實(shí)現(xiàn)思路,核心是先進(jìn)行流程建模,然后再通過(guò)業(yè)務(wù)關(guān)鍵字檢索功能動(dòng)態(tài)搜索匹配的服務(wù)日志調(diào)用數(shù)據(jù),再對(duì)流程圖進(jìn)行實(shí)例化解析。由于采用了Solr全文檢索能力,這個(gè)比我們完全自頂向下的來(lái)進(jìn)行端到端流程監(jiān)控實(shí)現(xiàn)更加高效。

從以服務(wù)為核心的監(jiān)控轉(zhuǎn)到以跨系統(tǒng)交互活動(dòng)為核心,以實(shí)現(xiàn)了服務(wù)鏈監(jiān)控到端到端流程監(jiān)控的轉(zhuǎn)變。

返回上頁(yè)