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

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

打開百度App,看更多圖片
圖片來源:unsplash.com/@brookelark服務器

「咱們的服務以可擴展的微服務架構爲基礎」,「咱們正準備轉向微服務架構」……若是你是一名開發人員,確定常常聽到上面兩句話。但很多人都會很困惑——微服務架構究竟是個啥?別擔憂!本指南會用現實生活中的例子讓你深入理解微服務架構——好比,7歲的小朋友都能聽懂的冰淇淋的例子!微信

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

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

如今假設你是冰淇淋店老闆,冰淇淋機雖小但五臟俱全,全部的部分都濃縮到一臺機器裏。幸運的是,顧客很是喜歡你的冰淇淋,生意越作越大。你會怎麼作呢?你會買一個更大的冰淇淋機,能夠在必定時間內完成更多的冰淇淋訂單。一段時間後,你會發現別無選擇了,由於機器製造公司造不出更大的冰淇淋機了。
在這裏插入圖片描述
沒有更大的冰淇淋機了——擴展性達到極學習

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

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

你確定會想,能夠多買幾臺冰淇淋機解決這個問題。沒錯!因此你決定不買最大的冰淇淋機了,而是多買幾個小的。圖片

這就是所謂的複製,即用多個應用程序來知足用戶的需求。資源

如今,有了老天的眷顧和你的努力,人們愈來愈喜歡你的冰淇淋了。爲了知足顧客需求,你最終仍是得把全部的冰淇淋機都升級到最大的型號。

在這裏插入圖片描述
一體化應用程序的多個實例——複製

修理壞掉的機器

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

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

在這裏插入圖片描述
一個更新破壞了其餘部分——黃色表明巧

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

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

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

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

一體化架構VS微服務架構

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

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

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

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

· 測試與部署:測試和部署一體化冰淇淋機很是困難,由於全部的部件都是相互依賴的,只有在每一個部件都集成好以後,才能夠進行測試和部署。然而,在微服務零部件機器中,每一個零部件機器都是獨立的,所以測試和部署單個部件會更加容易。

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

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

微服務不老是「微」型的

你可能會以爲,若是真到了爲冰淇淋店準備微服務零部件機的階段,那麼這些機器確定會變成小型的零部件機。不是的!每一個微服務零部件機器自己就能夠是一臺大型機器,也能夠是多臺複製機器同時運行以知足用戶需求。好比說,若是大多數顧客只喜歡原味冰淇淋,不加任何調料,那勺子機器可能有20個勺子在同時運行。

一樣,微服務架構自己也能夠是獨立的應用程序,規模毫不小,須要大量的努力來維護和擴展。

總結

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

毫無疑問,微服務架構可讓你針對不一樣的服務使用不一樣的技術,並更好地擴展和維護機器,但全部這些都具備很大的系統開銷和複雜性,須要完備的專業知識。所以,從一個結構良好的一體化冰淇淋機開始,而不是直接從微服務架構開始老是好的,免得讓本身陷入「意想不到的複雜性」之中。在這裏插入圖片描述留言 點贊 關注
咱們一塊兒分享AI學習與發展的乾貨
在這裏插入圖片描述 歡迎關注全平臺AI垂類自媒體 「讀芯術」在這裏插入圖片描述 添加小編微信:dxsxbb 便可進微信交流羣

相關文章
相關標籤/搜索