1. 程式人生 > >這篇微服務架構入門指南,7歲小孩也能學會

這篇微服務架構入門指南,7歲小孩也能學會

全文共2641字,預計學習時長5分鐘

開啟百度App,看更多圖片
圖片來源:unsplash.com/@brookelark

“我們的服務以可擴充套件的微服務架構為基礎”,“我們正準備轉向微服務架構”……如果你是一名開發人員,肯定經常聽到上面兩句話。但不少人都會很困惑——微服務架構到底是個啥?別擔心!本指南會用現實生活中的例子讓你深刻理解微服務架構——比如,7歲的小朋友都能聽懂的冰淇淋的例子!

在這裡插入圖片描述
一個大型冰淇淋機——一體化架構

我們暫時先把微服務架構放到一邊,回想一下冰淇淋機的四個部分——冰淇淋勺、堅果粉碎機、巧克力漏斗和草莓糖漿漏斗。冰激凌勺的作用是將一勺香草/芒果冰激凌舀到杯子裡,堅果粉碎機顧名思義就是將碎堅果撒在舀出的冰激凌上。而巧克力或草莓漏斗的作用就是把美味的糖漿撒到冰淇淋上。可以看出,整個冰淇淋機裡勺以外的配料部分都是顧客可以自由選擇的。
在這裡插入圖片描述


大型冰淇淋機——一體化構架的應用

現在假設你是冰淇淋店老闆,冰淇淋機雖小但五臟俱全,所有的部分都濃縮到一臺機器裡。幸運的是,顧客非常喜歡你的冰淇淋,生意越做越大。你會怎麼做呢?你會買一個更大的冰淇淋機,可以在一定時間內完成更多的冰淇淋訂單。一段時間後,你會發現別無選擇了,因為機器製造公司造不出更大的冰淇淋機了。
在這裡插入圖片描述
沒有更大的冰淇淋機了——擴充套件性達到極

這就是開發界所說的一體化架構。一開始的應用程式將所有不同的部分合併到一個程式碼庫中。隨著資源需求的增加,你會租用更大的機器,但在某個時間點之後,你已經擁有了當前最大的機器,此時就會達到極限。

多買幾個(一體化)冰淇淋機

你肯定會想,可以多買幾臺冰淇淋機解決這個問題。沒錯!所以你決定不買最大的冰淇淋機了,而是多買幾個小的。

這就是所謂的複製,即用多個應用程式來滿足使用者的需求。

現在,有了老天的眷顧和你的努力,人們越來越喜歡你的冰淇淋了。為了滿足顧客需求,你最終還是得把所有的冰淇淋機都升級到最大的型號。

在這裡插入圖片描述
一體化應用程式的多個例項——複製

修理壞掉的機器

當你剛剛開始生意時,僱用了一名技術人員,負責修理或升級機器。一切都很順利。但是買了多臺冰淇淋機後,你覺得需要僱用更多的技術人員,因為你也不想讓顧客吃不到冰淇淋。

現在根據顧客的需求,你決定銷售一種新口味的冰淇淋:在冰淇淋勺里加入巧克力味冰淇淋。但是,由於每臺機器的四個部分都相互依賴,技術人員很難新增新口味的冰淇淋。但通過某種方法技術人員成功了,不過新口味的冰淇淋一加進去,草莓漏斗就停止工作了,因為冰淇淋機的每個部分都是相互依賴的,修改一個部分就破壞了另一個部分。

在這裡插入圖片描述
一個更新破壞了其他部分——黃色代表巧

每臺機器只有一個用途——微服務架構

由於擴充套件性的限制,你決定建立一個新的冰淇淋機結構。你要求機器製造商公司提供四臺機器,一臺只負責一個部分。一臺冰淇淋勺機,一臺堅果粉碎機,巧克力和草莓糖漿漏斗機各一臺。現在,你將技術人員分配到獨立的團隊中,每個團隊只負責一臺機器。

在這裡插入圖片描述
將大型機器、團隊分離成獨立的零部件機器和各自的技術團隊——微服務架構

這就是微服務架構,其中一個大的一體化應用程式被劃分為獨立的模組,每個模組又是一個單獨的應用程式,專門執行特定的任務。

一體化架構VS微服務架構

· 可擴充套件性:你可能已經注意到了,在購買了最大的冰淇淋機之後,就不能再擴大規模了。而把大型機器劃分為多個零部件機器(微服務架構)後,還可以繼續為單個零部件機器設立多個微服務機器。

· 維護:由於在一體化冰淇淋機中每個部分都是相互依賴的,因此上述例子中,新增新的口味就會破壞草莓漏斗。例如,如果應用程式的一個模組需要更改資料庫模式,那麼就可能會破壞應用程式的其他部分。但是,在微服務架構中,你已經為每個零部件機器分配了獨立的團隊,每個團隊負責維護各自的零部件機器功能,由於零部件機器的獨立性避免了衝突。這種獨立的開發也有助於快速發揮機器的特性,因為相較於大型組織中團體間的溝通,團隊內部溝通更加迅速。

· 成本:你可能會想,雖然多個大型冰淇淋機解決了擴充套件性問題,但是如果只想提高冰淇淋勺的產量而非其他部分該怎麼辦?在一體化冰淇淋機中,每次都必須買一整臺機器,但是如果你選了微服務零部件機器,可以只買多個冰淇淋勺機(複製)。這樣就能節省成本,因為你可以根據該服務上的請求負荷,增減單個伺服器例項的數量。

· 安裝時間:由於一體化冰淇淋機集成了所有部件,只要將其放在正確的位置就能使用了。然而,微服務零部件機器在使用之前需要連線,比如在冰淇淋的例子中就需要傳送帶。因此,微服務需要更多的時間和專業知識來安裝,因為只有每個獨立的部分相互交流才能正常執行。

· 測試與部署:測試和部署一體化冰淇淋機非常困難,因為所有的部件都是相互依賴的,只有在每個部件都整合好之後,才可以進行測試和部署。然而,在微服務零部件機器中,每個零部件機器都是獨立的,因此測試和部署單個部件會更加容易。

要不要一開始就使用微服務架構?

簡而言之,不要!大多數專家建議,如果不需要微服務架構,那就不要用。為什麼不先用一體化冰淇淋機留住客戶,等到難以維護或規模無法擴大之後再用微服務架構呢?等到這個時候,再把一體化機器分解為獨立的微服務零部件機器。

微服務不總是“微”型的

你可能會覺得,如果真到了為冰淇淋店準備微服務零部件機的階段,那麼這些機器肯定會變成小型的零部件機。不是的!每個微服務零部件機器本身就可以是一臺大型機器,也可以是多臺複製機器同時執行以滿足使用者需求。比如說,如果大多數顧客只喜歡原味冰淇淋,不加任何調料,那勺子機器可能有20個勺子在同時執行。

同樣,微服務架構本身也可以是獨立的應用程式,規模絕不小,需要大量的努力來維護和擴充套件。

總結

目前幾家正在使用微服務架構的大型軟體公司,都是從使用一體化應用程式開始的。一旦它們達到了可擴充套件性和可維護性的極限,它們就會將一體化機器分解為獨立的部件或服務。

毫無疑問,微服務架構可以讓你針對不同的服務使用不同的技術,並更好地擴充套件和維護機器,但所有這些都具有很大的系統開銷和複雜性,需要完備的專業知識。因此,從一個結構良好的一體化冰淇淋機開始,而不是直接從微服務架構開始總是好的,省得讓自己陷入“意想不到的複雜性”之中。在這裡插入圖片描述留言 點贊 關注
我們一起分享AI學習與發展的乾貨
在這裡插入圖片描述
歡迎關注全平臺AI垂類自媒體 “讀芯術”在這裡插入圖片描述
新增小編微信:dxsxbb