天天看點

一個更好的可視化微服務架構的方式

本文講的是<b>一個更好的可視化微服務架構的方式</b>【編者的話】如何快速地可視化一個微服務架構,本文作者有一個很酷的辦法,趕緊來看看吧!

<a href="http://dockone.io/article/2445">【3 天燒腦式容器存儲網絡訓練營 | 深圳站】本次教育訓練以容器存儲和網絡為主題,包括:Docker Plugin、Docker storage driver、Docker Volume Pulgin、Kubernetes Storage機制、容器網絡實作原理和模型、Docker網絡實作、網絡插件、Calico、Contiv Netplugin、開源企業級鏡像倉庫Harbor原理及實作等。</a>

但是,接下來我會告訴你如何自動化一些無聊的滑鼠點選;)

一個更好的可視化微服務架構的方式

如果它不是這樣的話事情也不會變得這麼有趣。事實上,這裡最好能有一張更清晰地展現元件之間關系和職責的圖檔。不然的話最終結果就是像上面看到的這樣 ;)

訣竅便是在做的時候不斷審視它哪個地方不對,這樣一來便不太可能做的這麼糟了。

在做圖的時候 —— 你也在同時給自己一個整體的感覺,它們将會怎麼互動,問題域是什麼,上下文,邊界,等等。

"光紙上談兵是沒用的,長期的戰略規劃才是無價的。" ― Winston Churchill

假設我們有一個簡單的社交應用。當然,這是一個很簡單的設定,但是你可以注意到這裡面存在許多的關聯關系。

一個更好的可視化微服務架構的方式

用戶端:前端應用和浏覽器擴充。

API網管:認證API和主服務API。

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

我花了相當長的時間來排列方塊,拖放箭頭還有調整。而這隻是因為我想要以一個更可讀的方式來對齊它們。

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

我從Terraform獲得了靈感 —— 一個建立和維護生産環境基礎設施的工具。它支援配置任意和基礎設施相關的服務,這裡面包含了從AWS EC2的執行個體到來自于50個雲廠商提供的叢集和負載均衡。它還提供了一個有趣的<code>terraform graph</code>指令,可以根據現有配置生成一個可視化的圖表展現。

一個更好的可視化微服務架構的方式

是以我決定采用相同的技巧,但是針對的是一個更高層面的微服務架構。以下是一個用DOT編寫的Graphviz配置。

你隻需要将它渲染成一個.png檔案即可。你可以使用線上編輯器或者直接在機器上渲染。為了不弄髒系統,我為此建立了一個Docker鏡像:

通過執行上述這行簡單代碼,兩分鐘内你便可以得到這樣一個令人驚歎的輸出結果!

一個更好的可視化微服務架構的方式

在微服務之間添加一個新的依賴的想法實作起來從未如此簡單。我需要做的隻是添加一行新的代碼,随即 Graphviz 會很好地将它們組織在一起。

作為最後的點睛之筆,我喜歡添加一些顔色。是以你立馬可以看到下面的效果:

綠色 — node.js

紅色 — api gateway

黃色 — front-end

藍色 — storage,database

灰色 — 3rd-party API

這并不是最優的顔色布局,但是你已經知道可以這樣做了 ;)

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

一個更好的可視化微服務架構的方式

我在給一張微服務架構圖頻繁添加修改時遇到了問題。每一次變更都要用箭頭手工修補。如今我可以放心實驗,看看新的微服務是如何适配我的系統。當然,你還可以做的更好,将它放到版本控制系統裡,這樣一來便可以得到架構圖的修改變更曆史!

可視化的設計會使得檢查和調試變得更容易。 ― Unix的基本哲學

<b>原文釋出時間為:</b>2017-07-10

<b>本文作者:</b>Colstuwjx

<b>本文來自雲栖社群合作夥伴Dockerone.io,了解相關資訊可以關注Dockerone.io。</b>

<b></b>

<b>原文标題:</b><b>一個更好的可視化微服務架構的方式</b>