自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一個(gè)更好的可視化微服務(wù)架構(gòu)的方式

移動(dòng)開發(fā) 開發(fā)
如何快速地可視化一個(gè)微服務(wù)架構(gòu),本文作者有一個(gè)很酷的辦法,趕緊來看看吧!

我一直在用 draw.io做一些和UML流程圖,圖表或者曲線圖相關(guān)的事情。它在豐富的功能和用戶的手工控制方面做出了合理的權(quán)衡。

但是,接下來我會(huì)告訴你如何自動(dòng)化一些無聊的鼠標(biāo)點(diǎn)擊;)

避免從一開始就犯錯(cuò)

 

Daniel Woods的 “Microservices: The Right Way” 演講里其中一張幻燈片

如果它不是這樣的話事情也不會(huì)變得這么有趣。事實(shí)上,這里最好能有一張更清晰地展現(xiàn)組件之間關(guān)系和職責(zé)的圖片。不然的話最終結(jié)果就是像上面看到的這樣 ;)

訣竅便是在做的時(shí)候不斷審視它哪個(gè)地方不對(duì),這樣一來便不太可能做的這么糟了。

在做圖的時(shí)候 —— 你也在同時(shí)給自己一個(gè)整體的感覺,它們將會(huì)怎么交互,問題域是什么,上下文,邊界,等等。

"光紙上談兵是沒用的,長(zhǎng)期的戰(zhàn)略規(guī)劃才是無價(jià)的。"

― Winston Churchill

行動(dòng)起來!

假設(shè)我們有一個(gè)簡(jiǎn)單的社交應(yīng)用。當(dāng)然,這是一個(gè)很簡(jiǎn)單的設(shè)定,但是你可以注意到這里面存在許多的關(guān)聯(lián)關(guān)系。

 

客戶端:前端應(yīng)用和瀏覽器擴(kuò)展。

API網(wǎng)管:認(rèn)證API和主服務(wù)API。

微服務(wù):照片,圖表還有好友這些微服務(wù)。

我花了相當(dāng)長(zhǎng)的時(shí)間來排列方塊,拖放箭頭還有調(diào)整。而這只是因?yàn)槲蚁胍砸粋€(gè)更可讀的方式來對(duì)齊它們。

你可以想象排列50個(gè)這樣的方塊有多無聊嗎?100個(gè)呢?然后我如果再刪除一個(gè)?我敢打賭你會(huì)放棄這件事情,然后選擇回來繼續(xù)碼代碼。

和 Graphviz 結(jié)緣

我從Terraform獲得了靈感 —— 一個(gè)創(chuàng)建和維護(hù)生產(chǎn)環(huán)境基礎(chǔ)設(shè)施的工具。它支持配置任意和基礎(chǔ)設(shè)施相關(guān)的服務(wù),這里面包含了從AWS EC2的實(shí)例到來自于50個(gè)云廠商提供的集群和負(fù)載均衡。它還提供了一個(gè)有趣的 terraform graph 命令,可以根據(jù)現(xiàn)有配置生成一個(gè)可視化的圖表展現(xiàn)。

 

‘terraform graph’命令的示例輸出

因此我決定采用相同的技巧,但是針對(duì)的是一個(gè)更高層面的微服務(wù)架構(gòu)。以下是一個(gè)用DOT編寫的Graphviz配置。

digraph architecture {

rankdir=LR;



subgraph client_side_apps {

  front_end -> {auth_api, my_app_api};

  extension -> {auth_api, my_app_api};



  {rank=same; front_end, extension, auth_api};

}



subgraph api_gateways {

  my_app_api -> {photos_ms, chats_ms, friends_ms};

}



subgraph microservices {

  photos_ms -> {database};

  chats_ms -> {database, cache};

  friends_ms -> {database, facebook_api};

}

} 

你只需要將它渲染成一個(gè).png文件即可。你可以使用在線編輯器或者直接在機(jī)器上渲染。為了不弄臟系統(tǒng),我為此創(chuàng)建了一個(gè)Docker鏡像:

cat file.dot | docker container run --rm -i vladgolubev/dot2png > file.png

通過執(zhí)行上述這行簡(jiǎn)單代碼,兩分鐘內(nèi)你便可以得到這樣一個(gè)令人驚嘆的輸出結(jié)果!

提示:你可以將代碼復(fù)制粘貼到一個(gè)在線的編輯器: http://dreampuf.github.io/GraphvizOnline/

在微服務(wù)之間添加一個(gè)新的依賴的想法實(shí)現(xiàn)起來從未如此簡(jiǎn)單。我需要做的只是添加一行新的代碼,隨即 Graphviz 會(huì)很好地將它們組織在一起。

作為最后的點(diǎn)睛之筆,我喜歡添加一些顏色。因此你立馬可以看到下面的效果:

  • 綠色 — node.js
  • 紅色 — api gateway
  • 黃色 — front-end
  • 藍(lán)色 — storage,database
  • 灰色 — 3rd-party API

這并不是最優(yōu)的顏色布局,但是你已經(jīng)知道可以這樣做了 ;)

相信我,有大量圖表的情況也很容易做到這一點(diǎn)。

全部代碼放在: https://gist.github.com/vladgo ... 70882

小結(jié)

我在給一張微服務(wù)架構(gòu)圖頻繁添加修改時(shí)遇到了問題。每一次變更都要用箭頭手工修補(bǔ)。如今我可以放心實(shí)驗(yàn),看看新的微服務(wù)是如何適配我的系統(tǒng)。當(dāng)然,你還可以做的更好,將它放到版本控制系統(tǒng)里,這樣一來便可以得到架構(gòu)圖的修改變更歷史!

但是這取決于你。選擇一款最合適的工具吧。Google搜索[微服務(wù)可視化]( https://www.google.com/search?q=microservice visualization)的方案,你將會(huì)被一大票商業(yè)解決方案轟炸的。

可視化的設(shè)計(jì)會(huì)使得檢查和調(diào)試變得更容易。

― Unix的基本哲學(xué)

責(zé)任編輯:張子龍 來源: 推酷
相關(guān)推薦

2020-11-12 09:00:00

微服務(wù)架構(gòu)工具

2020-04-10 14:20:47

算法可視化Github

2021-05-20 13:22:31

架構(gòu)運(yùn)維技術(shù)

2017-06-19 08:30:35

大數(shù)據(jù)數(shù)據(jù)可視化報(bào)表

2022-11-08 08:35:53

架構(gòu)微服務(wù)移動(dòng)

2021-01-12 09:38:02

微服務(wù)服務(wù)組合編排

2017-07-18 15:15:57

數(shù)據(jù)可視化細(xì)節(jié)層次分析

2017-07-13 09:21:05

大數(shù)據(jù)數(shù)據(jù)可視化

2023-05-08 16:29:34

2022-04-20 20:30:36

可視化模塊Python

2022-07-07 08:50:26

Python可視化模塊代碼

2017-08-17 14:20:35

大數(shù)據(jù)可視化方法

2021-03-31 13:28:17

開源工具Python編程語言

2017-04-19 08:32:50

大數(shù)據(jù)數(shù)據(jù)可視化編程工具

2020-03-11 14:39:26

數(shù)據(jù)可視化地圖可視化地理信息

2023-04-11 16:58:35

embark視頻

2024-03-13 00:00:01

可視化技術(shù)氣泡圖

2015-11-11 14:26:31

數(shù)據(jù)可視化術(shù)語

2023-02-21 08:02:09

可視化工具圖表

2022-07-25 10:07:26

Python可視化技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)