中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

UAVStack中的調(diào)用鏈是什么

本篇內(nèi)容主要講解“UAVStack中的調(diào)用鏈是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“UAVStack中的調(diào)用鏈是什么”吧!

創(chuàng)新互聯(lián)專注于韶山網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供韶山營銷型網(wǎng)站建設,韶山網(wǎng)站制作、韶山網(wǎng)頁設計、韶山網(wǎng)站官網(wǎng)定制、成都微信小程序服務,打造韶山網(wǎng)絡公司原創(chuàng)品牌,更為您提供韶山網(wǎng)站排名全網(wǎng)營銷落地服務。

前言

服務端信息收集

UAVStack中的調(diào)用鏈是什么

        服務端信息收集整體流程如下圖所示,通過在應用容器(tomcat等)啟動過程中植入切點從而實現(xiàn)在應用邏輯執(zhí)行之前和之后對請求進行劫持。

  • 應用邏輯執(zhí)行之前:解析request中調(diào)用鏈信息,并初始化調(diào)用鏈上下文;

  • 應用邏輯執(zhí)行之后:解析response中調(diào)用鏈信息,并將本次請求處理的所有調(diào)用鏈信息輸出到日志文件。

UAVStack中的調(diào)用鏈是什么

切點植入

UAVStack中的調(diào)用鏈是什么

        在介紹切點之前我們應該對servlet容器(本文以tomcat為例)處理一次請求的大致流程有一個整體的了解。

UAVStack中的調(diào)用鏈是什么

圖片來源于網(wǎng)絡

        在Connector接收到一次連接并轉(zhuǎn)化成請求(Request)后,會將請求傳遞到Engine的管道(Pipeline)的閥(ValveA)中。請求在Engine的管道中會傳遞到Engine Valve這個閥中。接著請求會從Engine Valve傳遞到一個Host的管道中,在該管道中傳遞到Host Valve這個閥里。接著從Host Valve傳遞到一個Context的管道中,在該管道中傳遞到Context Valve中。接下來請求會傳遞到Wrapper C內(nèi)的管道所包含的閥Wrapper Valve中,在這里會經(jīng)過一個過濾器鏈(Filter Chain),最終送到一個Servlet中。借助于tomcat的這種架構(gòu)設計,我們可以通過在tomcat處理一次請求的生命周期過程中植入自己的邏輯,將tomcat對外提供的能力進行一次增強,即UAV的中間件增強技術(shù)。

        中間件增強技術(shù)除了巧妙運用了tomcat容器的架構(gòu)設計之外還借助了java Instrumentation(它給我們提供了一種能夠在對象第一次加載時動態(tài)修改字節(jié)碼的能力,由于篇幅原因在此不進行詳細講解,不明白的小伙伴自行查閱資料)。在UAV中通過UAVServer對外提供各種切點能力。

        有了中間件增強技術(shù),在應用邏輯執(zhí)行之前和之后的切點就有了,接下來就是在這些切點位置執(zhí)行我們自己的調(diào)用鏈邏輯了。

中間件增強技術(shù)在調(diào)用鏈中的使用

UAVStack中的調(diào)用鏈是什么

        上文介紹的間件增強技術(shù)是一種通過使用javaagent方式動態(tài)地在tomcat代碼中植入切點代碼并以UAVServer的形式對外提供能力的框架(具體能力后續(xù)文章會詳細介紹)。輕調(diào)用鏈實現(xiàn)正是使用了UAVServer對外提供的GlobalFilterHandler能力。

GlobalFilterHandler: 這里的GlobalFilterHandler是中間件增強技術(shù)中的一種能力,與傳統(tǒng)的filter沒有任何關(guān)系。它對外提供了四個能力:

  1. doRequest:在所有應用處理請求之前進行劫持;

  2. doResponse:在所有應用處理請求之后進行劫持;

  3. BlockHandlerChain:阻塞自當前handler以后的所有handler,此處的handler為注冊在當前;

  4. BlockFilterChain阻塞自當前Filter以后的所有Filter。

        調(diào)用鏈借助于GlobalFilterHandler提供的前兩個能力,實現(xiàn)了在應用處理請求之前和之后執(zhí)行調(diào)用鏈邏輯的功能。

輕調(diào)用鏈實現(xiàn)

UAVStack中的調(diào)用鏈是什么

        

        具體UML圖如下:

UAVStack中的調(diào)用鏈是什么

        從UML圖中可以清晰地看到, InvokeChainSupporter(調(diào)用鏈實現(xiàn)邏輯入口和調(diào)用鏈所需資源初始化實現(xiàn)類)將中間件增強技術(shù)進行了二次增強。它允許使用者在其中注冊不同的handler,并且在handler的preCap和doCap(中間件增強技術(shù)中的邏輯執(zhí)行之前和之后的切點術(shù)語)方法之前和之后動態(tài)織入adapter,從而能夠執(zhí)行更多的定制化適配和個性化邏輯。所有supporter和adapter均采用反射調(diào)用方式,最大程度上減少了中間件增強技術(shù)的依賴。

        有了二次增強技術(shù),我們就可以開始下面的調(diào)用鏈繪制工作了。

        輕調(diào)用鏈繪制實現(xiàn)主要依賴于注冊在InvokeChainSupporter上的                                           ServiceSpanInvokeChainHandler。主要繪制過程如下:

  1. 解析請求信息,提取其中調(diào)用鏈關(guān)心的信息,并將解析出來的信息放入上下文中;

  2. 通過解析出來的請求頭信息進行邏輯分流,根據(jù)不同的協(xié)議類型就行不同的邏輯處理;

  • mq邏輯

  • http邏輯

  • dubbo邏輯

  1. 初始化調(diào)用鏈上下文,并初始化main span上下文;

  2. 在應用處理完請求之后,將調(diào)用鏈信息進行統(tǒng)一輸出。

下面來看一下具體每一步都做了什么。

解析請求信息

UAVStack中的調(diào)用鏈是什么

        對于像tomcat這類中間件容器,所有進入tomcat的請求都會被封裝成HttpServletRequest和HttpServletResponse(后面簡稱request和response)最終進入用戶的servlet中。調(diào)用鏈借助于中間件增強技術(shù)會在用戶邏輯處理之前將request和response進行一次攔截,并解析其中是否含有調(diào)用鏈信息。如果有則將調(diào)用鏈信息進行封裝放入上下文中。

邏輯分流

UAVStack中的調(diào)用鏈是什么

        由于不同協(xié)議對應的調(diào)用鏈繪制邏輯也不同,此處調(diào)用鏈會根據(jù)協(xié)議類型進行一次分發(fā)。

初始化調(diào)用鏈上下文

UAVStack中的調(diào)用鏈是什么

將調(diào)用鏈上下文中的信息進行解析:

  1. 沒有父節(jié)點則將當前節(jié)點當作初始化節(jié)點,并初始化記錄當前服務內(nèi)調(diào)用鏈信息的main span;

  2. 有父節(jié)點則根據(jù)父節(jié)點信息初始化當前節(jié)點,并初始化記錄當前服務內(nèi)調(diào)用鏈信息的main span。

main span:在服務內(nèi)可能會進行多次客戶端通訊或服務間通訊,需要一個main span來記錄當前服務內(nèi)調(diào)用鏈最后一個節(jié)點的信息。

調(diào)用鏈信息輸出

UAVStack中的調(diào)用鏈是什么

        在用戶邏輯處理結(jié)束之后,調(diào)用鏈記錄器會從上下文中取出當前服務的調(diào)用鏈信息并將其輸出到指定日志路徑。

服務間上下文傳遞

UAVStack中的調(diào)用鏈是什么

        對于不同協(xié)議調(diào)用鏈傳遞信息方式也略有不同,具體實現(xiàn)方式借助了中間件增強技術(shù)提供的另一個能力:AppFrkHook(簡稱hook,此功能在客戶端調(diào)用鏈實現(xiàn)時會進行具體介紹)。它能夠?qū)τ脩羰褂玫目蛻舳思夹g(shù)進行劫持,如用戶使用了httpclient進行通訊,則對httpclient進行劫持并動態(tài)織入代碼,從而達到在http通訊的過程中注入調(diào)用鏈上下文信息的效果。目標服務在解析請求信息時,將調(diào)用鏈上下文進行解析;在初始化調(diào)用鏈上下文邏輯時,使用傳遞過來的信息初始化目標服務的調(diào)用鏈上下文,實現(xiàn)跨系統(tǒng)調(diào)用時調(diào)用鏈連接。

到此,相信大家對“UAVStack中的調(diào)用鏈是什么”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

分享文章:UAVStack中的調(diào)用鏈是什么
鏈接URL:http://www.2m8n56k.cn/article2/jdgpic.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃建站公司標簽優(yōu)化云服務器域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
主站蜘蛛池模板: 亚洲最大看欧美片网站 | 韩国精品欧美一区二区三区 | 国产午夜免费视频 | 99精品在线 | 久久综合免费视频 | 夜夜骚视频 | 欧美在线1| 成人爽a毛片在线视频 | 亚洲gogo人体大胆西西安徽 | 久草中文网 | 欧美成人精品久久精品 | 大尺度福利视频在线观看网址 | 日韩毛片免费在线观看 | 亚洲欧美激情在线 | 伊人狼人综合 | 呦视频在线一区二区三区 | 亚洲精品久久精品h成人 | 成人在线精品 | 一级毛片儿 | 国产精品美女一区二区三区 | 成人性动漫高清免费观看网址 | 色片在线播放 | 日本在线视频播放 | 欧美精品成人一区二区在线观看 | 222aaa免费国产在线观看 | 亚洲国产小视频 | 在线播放亚洲精品 | 国产成人精品综合在线 | 爱久久精品国产 | 成年人网站在线 | 欧美深夜影院 | 久草久草在线视频 | 免费国产黄网站在线观看视频 | 国产呦精品系列在线 | 色射网| 国产精品久久福利网站 | 午夜爽爽爽视频 | 一级毛片a免费播放王色 | 97在线视频免费公开观看 | 男人的天堂视频在线观看 | 精品久久影院 |