淺析微服務架構和Spring Cloud,向微服務開發進軍

前言

近幾年,大家都在談論微服務,微服務是一個非常火爆的關鍵詞,在百度中搜索微服務,隨便就有幾千萬條結果。那麼,什麼是微服務呢,微服務的概念又是怎麼產生的呢?

相信大家對微服務也不陌生,或者正在做着相關的開發,現在,我們先來了解一下微服務架構的來龍去脈,爲什麼要使用微服務架構微服務架構能給我們帶來什麼好處,微務架構與Spring Cloud又是一種什麼關係。

淺析微服務架構和Spring Cloud,向微服務開發進軍

 

下面請跟隨筆者來一探究竟吧~~~

微服務概念的由來

據說,早在2011 年5月,在威尼斯附近的一個軟件架構師研討會上,就有人提出了微服務架構設計的概念,用它來描述與會者所看得見的一種通 用的架構設計風格。時隔一年之後,在同一個研討會上,大家決定將這種架構設計風格用微服務架構來表示。

起初,對微服務的概念,也沒有一個明確的定義,大家只能從各自的角度說出了對微服務的理解和看法。

有人把微服務理解爲- -種細粒 度的SOA ( Service Oriented Architecture, 面向服務架構),一種輕量的組件化的小型SOA。

有人把微服務看作一種使用HTTP通信的自包含的輕量進程。

……

在這些看法中,比較統一的一點就是,大家都認爲微服務是一種小型的應用程序,並且使用輕量級的設計方法和輕量級的HTTP通信。

簡而言之,微服務架構風格是將單個應用程序作爲一組小型服務開發的方法,每個服務程序都在自己的進程中運行,並與輕量級機制(通常是HTTP資源API)進行通信。這些服務是圍繞業務功能構建的,可以通過全自動部署機器獨立部署。這些服務可以用不同的編程語言編寫,使用不同的數據存儲技術,並儘量不用集中式方式進行管理。

從這個描述中可以看出,微服務可以是一個小型的服務組件,它使用輕量的HTTP協議進行通信。微服務也可以是一個獨立的應用程序,它可以具有獨立的數據庫、獨立部署和獨立運行。理想的想法是,微服務可以使用不同的語言來編寫,並且完全獨立自治。

微服務設計架構特點

基於上面微服務的定義,我們可以總結出微服務架構設計的幾個顯著特點,具體如下。

淺析微服務架構和Spring Cloud,向微服務開發進軍

 

1.小型化

微服務架構設計的突出之處就是進行服務組件化設計,組件化的結果最顯著的特點就是應用程序變小了。使用組件化方式來構建的應用程序,每個組件將只負責完成一定範圍的業務功能,更加專一地做好一件事情。因爲小型化的特點,會讓問題變得更加簡單,也使開發變得更加容易。

2.自治化

使用去中心化的扁平化設計,將使每個服務都能夠進行獨立自治,這是對複雜功能的一種解耦設計。這種設計的特點也給每個微服務提供了更加自由的管理空間。

每個微服務都是一個獨立的應用, 獨立使用數據庫獨立部署,獨立運行,這種獨立性符合高內聚松耦合的設計原則。在微服務開發和維護中,每個微服務都是獨立的,一個服務的更新和迭代將不存在對其他任何服務的依賴,同時也不會給其他服務造成影響,或者將這種影響減少到最小限度。

3.扁平化

獨立自治的微服務,可以更加自由地發揮每一個服務的優勢和長處。但是這種自由並不是指隨意的混搭和組合,而是使用了扁平化的服務治理,讓更多的微服務在發揮個性優勢的同時,處在一種雜而不亂的有序可控的狀態之中。雖然從整體上微服務已經沒有集中管理的概念了,但是微服務在整體上能夠發揮更佳的性能優勢。

4.輕量級設計

微服務的組件化特點,也是- -種輕量級設計方法的體現,這種輕量級的設計同樣體現在微服務的通信設計之中。

微服務的通信設計通常用到兩種方式,即使用API的同步通信和使用消息通道的異步通信,不管使用哪種通信方式,都沒有像SOA的ESB ( Enterprise Service Bus,企業服務總線)那樣的重量級設計,而是分別使用簡單的REST協議和輕量的消息總線來實現。

5.漸進式設計

一個產品從成型到成熟總是要經歷- -個過程,這個過程就是漸進式設計的特點。由於微服務小型而獨立的特點,微服務設計可以使用業務驅動的方式進行,使用快速迭代進行不斷地修正和調整,以使產品趨於成熟。

微服務架構和整體式架構的區別

如果是一個小型項目,使用整體式架構來設計,其好處是明顯的,因爲它的設計、開發、測試和部署,都在-一個項目上就可以完成。

如果一個業務複雜的大型項目,也使用整體式架構來設計,就將存在很多問題。可能剛開始的階段,還感覺不到什麼,但是隨着時間的推移,加入的功能越來越多,一個項目就變成了一塊巨大的石頭,十分笨重。

面對一個如此巨:大的項目,開發人員要弄清楚它的代碼邏輯,必須要花費很多的時間。而針對某一項功能的更改,極有可能動一線而牽全身, 這會讓實施的人員變得很難應對。所以這種項目將會變得越來越難以維護,越來越不便更新。

整體式架構的穩定性也不能得到有效的保障,如果其中的-一個模塊出現問題,將會影響到整個系統的正常運行,甚至造成整個系統的崩潰。而要進行問題的跟蹤,因爲系統龐大,往往難上加難。

另外,一個巨大的應用項目,也不方便進行持續開發,它不能適應需求的變更,不能適應快速迭代的敏捷開發方法,所以這樣的項目最終就變成了業務發展的絆腳石。

相比之下,大型項目使用微服務架構就具有明顯的優勢。

微服務架構設計,就是將複雜事情進行簡單化處理的方法,它將一-個複雜的系統, 拆分成一些小型的應用來開發,起到了一種“大事化小,小事化無”的效果。因爲簡單,代碼的邏輯會變得更加清晰,這無疑減輕了程序員繁重的勞動;因爲簡單,所以能夠專注,

能夠將每一件事情做好, 做到極致。

微服務中獨立的小型應用,也非常適合使用敏捷開發方法,能夠快速響應需求的變化,進行快速更新,快速迭代,甚至將一個應 用推倒重來也是很容易做到的。

因爲每個微服務都是獨立自治的,一個服務的故障也不會影響到全局系統的正常運行,或者說可以將這種影響降到最低限度。況且,微服務架構的容錯設計可以避免這種情況發生。

微服務架構高可用的特點是系統穩定性的最好保障,而且微服務能夠支持高併發的調用,支持高流量的訪問,能夠持續保證平臺規模化發展的要求,這是整體式架構所不能做到的。

淺析微服務架構和Spring Cloud,向微服務開發進軍

 

如果我們使用一個六邊形結構來表示整體式架構的話,將可以繪製出如圖1-1 所示的結構圖。這個六邊形的核心是整體式架構的領域業務模型,它通過系統接口使用各種適配器,例如數據庫適配器、文件適配器等,與外部管理系統進行連接。然後通過接口使用

諸如RestAPI適配器、WebUI適配器等對外部App和終端用戶提供接口調用和Web訪問等服務。

從圖1-1中可以看出,整體式架構是一個大而全的系統。在微服務架構設計中,我們可以使用一個小六角形來表示每個微服務,它相當於將整體式架構進行拆分之後得到的結果,如圖1-2所示。

淺析微服務架構和Spring Cloud,向微服務開發進軍

 

小六角形的微服務同樣使用接口,通過各種適配器來連接外部管理系統,而微服務之間也可以通過接口,使用Rest API適配器進行通信,而對於App和終端用戶,將分別由不同的微服務提供相應的適配器及其服務。

爲什麼要使用微服務架構

微服務架構輕量級的設計風格,不管從理論上還是從技術實現.上,已經越來越多地得到更多人們的肯定和認可,大家對它的未來發展趨勢都抱有一種樂觀的態度。 使用微服務的好處如下。

1.開發簡單

微服務架構將複雜系統進行拆分之後,讓每個微服務應用開發都變得非常簡單,沒有太多的累贅。對於每一個開發 者來說,這無疑是一種解脫, 因爲再也不用進行繁重的勞動了,每天都在一種輕鬆愉快的氛圍中工作,其效率將會成倍地提高。

2.快速響應需求變化

一般的需求變化都來自於局部功能的變更,這種變更將落實到每個微服務上,而每個微服務的功能相對來說都非常簡單,更改起來非常容易,所以微服務非常適合敏捷開發方法,能快速響應業務需求的變化。

3.隨時隨地更新

一方面,一個微服務的部署和更新並不會影響到全局系統的正常運行;另一方面,使用多實例的部署方法,可以做到一個服務的重啓和更新在不易被察覺的情況下進行。所以每個微服務任何時候都可以進行更新部署。

4.系統更加穩定可靠

微服務運行在一個高可用的分佈式環境之中,有配套的監控和調度管理機制,並且還可以提供自由伸縮的管理,充分保障了系統的穩定可靠性。

5.規模可持續擴展

每個互聯網應用都具有巨大的市場潛力,一且這種潛力被激發,就需要系統能支持大規模的高併發訪問機制,使用微服務架構設計的系統,將能適應業務的快速增長,並可持續支持規模化的擴展。

爲什麼要使用Spring Cloud

淺析微服務架構和Spring Cloud,向微服務開發進軍

 

微服務架構的實施和使用已經經歷了一-定的歷程,在這一過程中, 亞馬遜、Nettlix在使用微服務架構設計中成功的經驗及其取得的成績,是一個令人振奮的結果。特別是Netlix oss開源組件的推出,更掀起了一番微服務的熱潮。

Spring團隊在Netlix OSS的基礎,上,推出了Spring Cloud微服務開發工具套件,極大地降低了微服務開發的門檻。使用Spring Cloud工具套件,可以讓一個Java開發者,非常容易地開發微服務應用。

Spring Cloud專注於爲典型用例和可擴展機制提供良好的開箱即用體驗,涵蓋了如下各個方面的功能。

分佈式/版本化配置。服務註冊和發現。路由。服務之間調用。負載均衡。斷路器。全局鎖。主機選舉和集羣狀態。有了Spring Cloud,開發微服務應用就變得非常簡單了。使用Spring Cloud,你可以在任何環境中進行開發和調試,包括自己的筆記本電腦、公司的局域網環境以及CloudFoundry等託管平臺。

以上就是小編整理的微服務架構簡介,怎麼樣,大家是不是對微服務架構和spring cloud又有了新的認識。

感覺小編整理的還不錯的話,請給小編一個關注,你們的支持就是小編最大的動力!!!

歡迎大家多多留言交流哦~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章