精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何用圖形分析來可視化微服務架構

譯文
開發 前端
本文將通過分析基于Spring Cloud的微服務系統、jQAssistant和Neo4j,與您討論如何用圖形技術,來實現檢測反模式、可視化全系統、以及跨服務影響分析。

【51CTO.com快譯】您是否已在自己手頭的項目中使用到了微服務?在使用的過程中,您是否碰到過一些意料之外的問題?本文將通過分析基于Spring Cloud的微服務系統、jQAssistant和Neo4j,與您討論如何用圖形技術,來實現檢測反模式(antipattern)、可視化全系統、以及跨服務影響分析

背景介紹

幾年前,我應客戶要求用微服務來重寫他們的IT系統。可是到了開發的末期,我們碰到了代碼缺陷、未能回歸等問題。雖然現場團隊進行了反復審查,也召開了重構會議,但是由于系統相當龐大(生產環境中的微服務超過了13個),實在難以調整,而且收效甚微,因此最終產品的質量遠未達到他們的期望。

可見,人們往往會低估從傳統方法轉換為微服務架構的難度,特別是當生產環境中有成千上萬行代碼時,人們時常無法對目標系統擁有清晰的認識,未能確定待執行任務的優先級,直到出現問題時已為時已晚。

使用圖形分析來識別問題并修復微服務架構

經過研究,我發現了一個非常實用的工具—jQAssistant。它能夠幫助我將代碼、軟件架構、及其附帶的所有規則,都轉換成為Neo4j中的圖形。

我發現圖形的轉換將有助于:檢測反模式,進行影響分析,改善數據治理,以及促進團隊之間的溝通等方面。下面,我們將通過分析一個具體應用示例,來詳細討論圖形化轉換的過程。

一個應用示例

在此,我們將使用經典的Piggy Metrics項目。它是由Spring Boot和Spring Cloud開發,基于MongoDB數據庫的個人記賬式微服務應用。

該應用程序的圖形轉換相對比較簡單。如上圖所示,我們只需準備構建應用所需的JAR文件,然后通過命令行將JAR文件提供給jQAssistant即可。幾秒鐘之后,您將會獲得對應的簡單圖形。

如上圖代碼段所述,來自Piggy Metrics應用的類–UserController是一個標準的Spring RestController。它定義了兩個名為getUser和createUser的方法。兩者都帶有綠色的@RequestMapping注釋。在這些注釋中,我們可以找到與各個NPC相映射的HTTP動詞。最后則是名為userService的調用。下圖便是該controller所對應的圖形。

由圖可見,代碼的不同部分會被通過各種節點與關系來表示。例如:在左側,紅色的節點表示JAR文件,它通過CONTAINS關系鏈接到藍色UserController類。而UserController類本身會鏈接到getUser和createUser方法,以便進一步調用其他方法。當然,我們在前面代碼中看到的注釋、請求映射、以及參數等,都會以綠色顯示在圖形中。據此,我們將能夠輕松地檢查代碼、類或模塊之間的循環依賴關系,命名約定的遵循,以及測試是否覆蓋了特定代碼等架構規則。

松耦合的微服務

許多人認為:松散耦合的微服務是通過HTTP、異步協議、以及消息協議進行通信的,而此類通信并不能反映到字節碼上。我們卻需要在此基礎上使用圖形來表示代碼。也就是說,除了語言和框架,我們還會在應用中通過軟件架構,這一更高層次的概念,來表示API、以及不同的工程實踐。

下面讓我們回到上面的UserController例子。由于采用了Spring框架,因此我們可以遍歷圖形,以使用各種正確的注釋來標識出方法,進而關聯映射到一些HTTP動詞上。

上圖展示了一個Cypher查詢。通過瀏覽帶有@RequestMapping注解的方法,HTTP信息被輸入到了圖中。端點(Endpoint)作為一個新的概念被引入到了圖中。圖中左側藍色的代碼行,能夠以指令的形式,將endpoint標簽添加到發現的內容中,并將HTTP映射信息,添加到那些作為REST端點被公開的已知方法節點上。在此,我們定義了一些淺藍色的REST端點。它們能夠與前文提到的getUser和createUser兩種方法,及其不同的路徑相匹配。

參照端點定義的方式,我們還可以定義HTTP客戶端的相關概念。例如:由于Piggy Metrics應用采用了Feign庫在兩項服務之間進行HTTP調用,因此我們可以使用它來遍歷圖形,并通過查找FeignClient注釋、及其相關信息,來創建新的概念。

就像公開某些REST端點的控制器一樣,我們制作了如上圖所說的HTTP客戶端。它通過HTTP動詞來調用URL。也就是說,我們可以將帶有URL信息的FeignClient標簽作為新的概念添加到圖形中。

一旦確定了HTTP客戶端和REST端點,我們就可以根據這些新的概念,輕松地將它們連接到各種匹配的HTTP方法,及其用到的URL上。例如,在如下代碼圖中,我們通過被稱為INVOKES_REMOTE的關系,在圖中展示該過程。

由于服務是松散耦合的,因此,我們可以確定跨服務的依賴關系,讓這些松耦合能夠在圖中變得顯而易見。從下圖可視化的內容中,我們能夠清晰地查看到四項服務,以及它們之間的相互調用。

據此,我們可以找到其中可能存在的反模式,例如那些導致“雞生蛋、雞生蛋”的服務間循環問題。當然,我們也可以通過采取影響分析,以確定諸如修改端點的難度等方面的問題。

微服務還是分布式整體?

通過圖表分析,我們也可以查看微服務是否遵循了最佳實踐,進而提高服務實現的成熟度。如下圖例子所示:

數據治理

在前面的Piggy Metrics應用中,我們通過MongoDB和Spring Data,不但可以輕松地定義持久性實體的概念,而且能夠檢查跨服務的MongoDB集合的使用情況。下圖展示了我們查詢到的該帳戶集合被兩個不同的服務所調用的情況。

根據這兩個服務之間的隔離情況,我們判斷應當合并它們。當然,我們還能夠發現更多同一個數據庫同時在多個位置被管理的情況。據此,我們也可以定義哪個數據存儲庫的更改,會直接或間接地影響到哪些端點。

如上面的數據表所示,底部的“UserRepository”被遠程服務間接地使用著。如果想更改它,我們需要檢查遠程服務可能受到的影響。而這些是僅靠查看存儲庫的相關代碼、或單個服務,所無法獲悉的。

通過前文提到的jQAssistant,我們可以針對JDBC去掃描數據庫中的元數據,并將該數據庫的結構映射到圖形中。據此,我們進而可以對MongoDB采取更高級的影響分析,或針對驗證進行數據列級別的分析。也就是說,如果我們想更改某個數據庫的數據格式、或者是列的長度,那么就需要識別與該列相關的所有對象。

文檔是否最新?

微服務領域的另一個最佳實踐是:事先采用契約優先(contract-first)的方法,即:先定義API規范,然后予以實施。例如,我們可以先選用目前行業標準化的OpenAPI規范,然后使用YAML文件來編寫API契約。不過,您可能遇到的問題是:如何知曉自己實施的規范或文檔是否為最新呢?

如上圖所示,我們可以通過掃描YAML文件,在文件內容中找到OpenAPI的相關描述。也就是說,通過遍歷所有的YAML文件,我們查找名為OpenAPI的密鑰,以檢查每個服務是否包含了至少一個規范文件。而且,這是一種快速檢索文檔缺失的方法。

此外,就文檔本身而言,我們甚至可以進一步深入地了解文檔的具體內容。例如,我們既可以從中提取參數名稱與類型,又可以使用Spring controller執行相同的操作,并將兩者的實際檢測差距進行比較。

如下圖所示,通過查詢,我們很快發現到某項服務缺少對應的文檔。即:在三個端點中,只有兩個端點擁有實際文檔。此外,我們還能深入地“挖掘”API參數,及其參數類型。

魯棒性

魯棒性是非常重要的方面,它能夠應對生產環境中的故障,以免整個系統的崩潰。通常,我們可以采用諸如斷路器(circuit breakers)和響應回退(response fallbacks)之類的主流機制,以避免讓故障影響到上層服務。

為了檢查所有端點、或HTTP客戶端是否已實施了正確的回退,我們可以使用上述簡單的查詢,通過遍歷FeignClient注釋,來查看它們是否具有聲明為fallback的屬性。如上圖所示,在Piggy Metric示例中,我們發現服務中缺少了兩個fallbacks。

信息共享

為了共享,我們往往需要創建一個可視化的文件。而擁有開放式圖形數據庫的優勢就在于:您可以有選擇地將圖形導出為GraphML文件,進而采用yEd之類的工具將GraphML文件導出為可視化的數據。而且,在yEd中,您可以自定義樣式與布局,以滿足大量元素的實際需求。

如下圖所示,您可以導出許多不同形狀的架構數據。作為服務之間依賴關系的簡單示例,我們既可以通過對其進行更改,以提供所需的內容,又可以導出為實用的dock可視化。

可見,此類可視化轉換對于開發者團隊和架構師之間的交流,產品所有者與項目經理之間的對話,以及讓他們更好地了解需要完成的工作,都是非常實用的。為了讓您對系統的圖形化有個整體的印象,下圖展示了一個真實的應用示例。

值得一提的是,如果不借助工具,我們很難用手動完成此類圖形的構建。何況我們的系統往往也是動態發展的。

更多實用場景

上述示例可能過于簡單。在實際應用中,圖形分析還可以被運用到更多的實際場景中。例如,我們可以通過依賴項分析,更深入地研究安全性問題,進而通過尋找端點上的注釋予以安全加固。此外,我們可以通過導入運行時(runtime)的數據,以獲悉某個API每天被調用的次數,進而為該API重要性分配權值。當然,我們也可以從版本控制系統中導入數據,以便根據源代碼的依賴性,對修改進行優先級排序。顯然,那些被鮮少修改的服務,就意味著它基本能夠正常工作,我們也就不必過于關注了。

總的說來,您可以根據自己當前的需求與架構,使用基礎的源代碼,來構建能夠反映更高級別概念的圖形。據此,您可以獲悉有關目標系統的實時最新狀況,檢查它與初始計劃方案的匹配度,進而對實際架構規則進行及時改進。

原文標題:Fixing Your Microservices Architecture Using Graph Analysis,作者: Nicolas Mervaillie

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

 

責任編輯:華軒 來源: 51CTO
相關推薦

2021-09-23 17:10:48

Python可視化漏斗圖

2017-07-10 14:18:34

微服務架構可視化

2021-01-12 09:38:02

微服務服務組合編排

2020-03-11 14:39:26

數據可視化地圖可視化地理信息

2014-06-30 09:24:48

數據可視化

2017-06-19 08:30:35

大數據數據可視化報表

2022-08-18 11:36:16

可視化JavaScript事件循環

2022-07-10 21:17:01

GitTigLinux

2021-02-01 22:01:57

Coco工具macOS

2017-02-07 15:54:14

數據可視化數據分析

2017-10-14 13:54:26

數據可視化數據信息可視化

2022-08-26 09:15:58

Python可視化plotly

2009-04-21 14:26:41

可視化監控IT管理摩卡

2020-02-17 16:28:49

開發技能代碼

2016-11-25 11:16:22

阿里支付寶數據分析

2025-10-30 16:23:47

Cursor 2.0人工智能智能體

2020-06-29 15:40:53

PlotlyPython數據可視化

2021-10-11 08:04:22

Python數據行程

2024-12-13 15:36:27

命令行CLI數據可視化

2011-06-13 18:54:12

點贊
收藏

51CTO技術棧公眾號

欧美一级成年大片在线观看| 91精品国产综合久久久久久漫画| 免费成人深夜夜行视频| 成人av网站在线播放| 日韩成人精品一区| 欧美成人一区二区三区| 久久精品免费一区二区| 欧美激情视频在线播放| 大尺度一区二区| 国产91在线播放九色快色| 婷婷激情四射网| 美国成人xxx| 欧美精品一二三| 国产精品宾馆在线精品酒店| 黄网站免费在线观看| 成人av在线电影| 国产精品亚洲精品| 男人午夜免费视频| 欧美三级网页| 色噜噜狠狠狠综合曰曰曰88av | 国产一区二区视频在线观看免费| 欧洲亚洲成人| 欧美一区二区三区日韩视频| 久久久久久久久久福利| 丁香花视频在线观看| 国产精品毛片大码女人| 欧美高清性xxxxhd| 黄频网站在线观看| 国产激情一区二区三区四区 | 性欧美在线看片a免费观看| 午夜影院黄色片| 亚洲婷婷伊人| 亚洲国产成人久久综合| 亚洲一级片av| 欧美成人福利| 欧美三级在线播放| 久久久久久久久久久久久国产精品| 亚洲七七久久综合桃花剧情介绍| 亚洲国产激情av| 欧美三级网色| 欧美777四色影视在线| www.亚洲精品| 国产在线精品一区二区三区》| 国内精品久久久久久久久久| 久久91精品国产91久久小草| 国产精品一区二区三区在线播放 | 18精品爽国产三级网站| 国产传媒欧美日韩成人精品大片| 亚洲精品中文字幕女同| 色欲av无码一区二区三区| 西野翔中文久久精品国产| 亚洲成人久久电影| 超碰caoprom| 加勒比视频一区| 亚洲国产精品中文| 成人手机在线免费视频| 色狼人综合干| 亚洲欧美在线免费观看| av男人的天堂av| 秋霞欧美视频| 久久精品国产v日韩v亚洲| 国产三级精品三级观看| 亚洲国产成人精品女人| 欧美老少配视频| 日韩av电影网址| 亚洲一区成人| 国产精品男人爽免费视频1| 懂色av蜜臀av粉嫩av喷吹| 麻豆精品视频在线观看| 亚洲自拍小视频| 亚洲精品一区二区三区不卡| 不卡一区二区三区四区| 免费av在线一区二区| yiren22亚洲综合伊人22| 亚洲欧洲精品成人久久奇米网| 狠狠干视频网站| 美女露胸视频在线观看| 欧美中文字幕一二三区视频| 亚洲a级黄色片| 中文字幕一区二区三区四区久久| 日韩久久免费电影| 美女网站视频色| 亚洲先锋成人| 国产mv久久久| 国产视频在线一区| 99re6这里只有精品视频在线观看| 欧美国产一二三区| 国产调教视频在线观看| 精品久久久香蕉免费精品视频| 亚洲xxxx2d动漫1| 7m精品国产导航在线| 亚洲人a成www在线影院| 91视频综合网| 久久一二三四| 99在线视频免费观看| 毛片免费在线| 亚洲综合一区二区| 天天影视综合色| av日韩精品| 色偷偷噜噜噜亚洲男人| 你懂的国产视频| 久久精品国产亚洲aⅴ| 国产欧美日韩在线播放| 在线a人片免费观看视频| 亚洲成a人v欧美综合天堂| 亚洲激情在线观看视频| 久久国产精品免费精品3p| 最近2019中文字幕在线高清| 亚洲精品77777| 精品一区二区三区蜜桃| 日韩av电影免费观看| 女人天堂av在线播放| 欧美日韩mp4| 污片免费在线观看| 一区二区电影| 国产精品热视频| 麻豆影视在线| 狠狠躁夜夜躁人人躁婷婷91| 香蕉视频1024| 亚洲h色精品| 国产日产欧美a一级在线| 青春草在线观看 | 国产欧美一区二区精品忘忧草| 久久国产午夜精品理论片最新版本| 日韩黄色三级在线观看| 亚洲天堂男人天堂女人天堂| 日韩高清精品免费观看| 国产成a人亚洲| 无码人妻aⅴ一区二区三区日本| 蜜桃视频成人m3u8| 亚洲午夜精品久久久久久久久久久久| 久久狠狠高潮亚洲精品| 成人激情免费网站| 97超碰在线人人| 911精品国产| 色综合久久久久久中文网| 国产精品污视频| 综合电影一区二区三区| 久久久久久久久久一区| 久久精品国产68国产精品亚洲| 国产www精品| 国产亚洲依依| 欧美调教femdomvk| 懂色av粉嫩av浪潮av| 老司机一区二区| 亚州欧美一区三区三区在线 | 亚洲精品天堂| 日韩欧美一二三| 青青草成人免费| 国产成人a级片| 久久人人爽人人爽人人av| 国产人妖ts一区二区| 久久青草福利网站| 手机亚洲第一页| 在线观看成人免费视频| 欧美午夜激情影院| 精品亚洲aⅴ乱码一区二区三区| 在线丝袜欧美日韩制服| 久久9999免费视频| 久久久久久久国产| 四虎在线观看| 欧美亚洲高清一区二区三区不卡| 男女男精品视频网站| 极品少妇xxxx精品少妇| 欧美黄网在线观看| 亚洲人成网亚洲欧洲无码| 国产精品福利观看| av在线下载| 亚洲精品99久久久久中文字幕| 亚洲精品午夜国产va久久成人| 国产午夜三级一区二区三| 一级黄色录像在线观看| 欧美欧美全黄| 麻豆av一区二区三区| 欧美成人高清视频在线观看| 欧美日韩电影在线观看| 视频国产一区二区三区| 欧美日韩精品一区二区三区| 久久免费播放视频| 久久久不卡网国产精品一区| 17c国产在线| 亚洲在线观看| 五月天男人天堂| 欧美顶级毛片在线播放| 国产欧美精品久久久| 日韩av官网| 尤物九九久久国产精品的分类| 国产欧美一区二区三区视频在线观看| 亚洲午夜久久久久久久久久久| 午夜时刻免费入口| 成人视屏免费看| 在线观看免费av网址| 99精品国产在热久久下载| 影音先锋欧美在线| 精品伊人久久久| 成人免费网站在线观看| 亚洲天堂免费电影| 欧美成人小视频| 成人午夜电影在线观看| 精品国产乱码久久久久久浪潮| 人妻中文字幕一区二区三区| 亚洲国产一区视频| 亚洲色图27p| 久久一区二区三区国产精品| 污片在线免费看| 国产农村妇女精品一二区| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | www.久久热.com| 亚洲精品98久久久久久中文字幕| 国产日韩在线观看一区| 无码精品国产一区二区三区免费| 成人影院在线| 精品日本一区二区三区在线观看| 欧美特黄aaa| 欧美电影《睫毛膏》| 久久久99爱| av在线亚洲色图| 91在线免费网站| 成人18视频在线观看| 国产69久久精品成人看| 丝袜国产在线| 久久精品国产视频| 波多野结衣电影免费观看| 欧美xxx黑人xxx水蜜桃| 最近中文字幕日韩精品| 男人的天堂在线视频| 精品久久久久久综合日本欧美| 国产又粗又大又爽视频| 欧美午夜电影一区| 国产免费一级视频| 日韩欧美在线免费| 国产成人在线免费视频| 亚瑟在线精品视频| 久久精品视频国产| 亚洲亚洲精品在线观看| 久青草视频在线观看| 亚洲激情五月婷婷| 欧美卡一卡二卡三| 亚洲女与黑人做爰| 91嫩草|国产丨精品入口| 国产精品美女久久久久高潮| 人成免费在线视频| 国产精品视频九色porn| av免费播放网站| 国产精品你懂的在线欣赏| 久久视频精品在线观看| 中文字幕乱码亚洲精品一区| 少妇无套高潮一二三区| 欧美国产视频在线| 国产破处视频在线观看| 国产精品国产自产拍高清av| 日本免费网站视频| 一区精品在线播放| 草视频在线观看| 亚洲午夜免费福利视频| 国产一级精品视频| 日韩欧美在线网址| 最近中文字幕av| 欧美日韩国产欧美日美国产精品| 亚洲无码精品在线观看| 欧美一区二区视频在线观看2020 | 麻豆成人在线观看| av中文字幕网址| 粉嫩13p一区二区三区| 这里只有精品在线观看视频| 91亚洲精品久久久蜜桃网站| 成年人免费观看视频网站| 欧美激情在线免费观看| 日韩三级久久久| 亚洲永久免费视频| 综合激情网五月| 欧美日韩一区高清| 超碰免费在线97| 亚洲欧美中文字幕| 精品欧美色视频网站在线观看| 欧美裸体男粗大视频在线观看| 18video性欧美19sex高清| 日本高清+成人网在线观看| 国产精品第一| 国产一区二区无遮挡| 国产成人三级| 日韩精品一区二区三区四| 欧美专区一区二区三区| 91av视频免费观看| 91玉足脚交白嫩脚丫在线播放| 国产成人在线网址| 亚洲成人免费在线| 亚洲自拍偷拍另类| 亚洲国产精品99| 男女啪啪在线观看| 97在线日本国产| 中文幕av一区二区三区佐山爱| 国产日韩一区二区| 国产精品国产一区| 国产成人精品视频免费看| 国产一区二区三区精品视频| 噜噜噜在线视频| 亚洲精品中文字幕在线观看| 夜夜躁很很躁日日躁麻豆| 国产精品久久久乱弄 | 国产精品免费视频xxxx| 亚洲1区在线| 亚洲欧洲精品在线 | 欧美日中文字幕| www.亚洲视频.com| 国产真实乱对白精彩久久| 30一40一50老女人毛片| 亚洲在线中文字幕| 国产精品久久久久久久久久久久久久久久久久| 亚洲第一中文字幕| 国产成人l区| 国产精品久久婷婷六月丁香| 国产伦理久久久久久妇女| 91成人在线视频观看| 免费高清成人在线| 成人免费无遮挡无码黄漫视频| 一区二区三区免费观看| 91丨porny丨在线中文| 亚洲香蕉成人av网站在线观看| 2019中文字幕在线电影免费 | 亚洲综合在线免费观看| 一道本无吗一区| 国产一区二区三区网站| 成人亚洲欧美| 精品麻豆av| 亚洲精品少妇| 一级少妇精品久久久久久久| 依依成人综合视频| 国产xxxx在线观看| 久久视频这里只有精品| 青青草国产一区二区三区| 欧美日韩亚洲在线| 亚洲欧美日韩国产一区二区| 国产女人18毛片水真多18 | 波多野结衣小视频| 亚洲精品一区在线观看香蕉| 极品美鲍一区| 久久久精品动漫| 久久av一区| a级大片在线观看| 在线观看av一区| 国产51人人成人人人人爽色哟哟| 日韩av电影院| 国产亚洲欧美日韩在线观看一区二区| 日韩黄色片视频| 久久久久久久性| 中文字幕av片| 久久精品国产亚洲精品2020| 99精品女人在线观看免费视频 | 久久久久久自在自线| a级大片在线观看| 欧美三级蜜桃2在线观看| 一区二区高清不卡| 91久久精品国产91性色| 欧美不卡一区| 无码成人精品区在线观看| 黄色一区二区三区| 韩国中文字幕2020精品| 国产精品免费一区| 一区二区三区中文| 国产精品一区二区人妻喷水| 五月激情丁香一区二区三区| 日本在线一二三| 国产日韩在线一区| 欧美福利视频| 久久无码人妻精品一区二区三区| 色综合色综合色综合| 69视频在线| 风间由美一区二区三区| 性欧美暴力猛交另类hd| 美女100%露胸无遮挡| 91精品国产麻豆国产自产在线| 国产理论电影在线| 日本不卡一区二区三区视频| 久久精品国产精品青草| 国产在线视频第一页| 亚洲精品小视频| 国产精品久久久久久久久久辛辛 | 26uuu另类欧美亚洲曰本| 成人免费一级片| 欧美美女操人视频| 综合亚洲自拍| 亚洲在线观看网站| 欧美性猛交xxxx免费看| 亚洲搞黄视频| 99视频在线免费观看| 亚洲欧美日本日韩| 日韩黄色免费观看| 亚洲欧美日韩网| 日韩激情欧美| 91热这里只有精品| 亚洲一二三四在线| 亚洲s色大片| 精品人伦一区二区三区| 韩国精品在线观看 | 日韩一区二区精品| 欧美xnxx| 91动漫在线看| 综合在线观看色| 黄色在线免费观看大全|