微服務一站式解決方案SpringCloud

動力節點發表於2018-12-29

什麼是微服務架構

 

我們知道分散式強調系統的拆分,其實微服務也是強調系統的拆分,微服務架構屬於分散式架構的範疇;

 

並且到目前為止,微服務並沒有一個統一的標準的定義,那麼微服務究竟是什麼?

 

微服務一詞源於Martin Fowler(馬丁.福勒)的名為 Microservices 的博文, 可以在他的官方部落格上找到這篇文章:http://martinfowler.com/articles/microservices.html 

中文翻譯版本:https://www.martinfowler.cn/articles/microservices.html 

 

簡單地說, 微服務是系統架構上的一種設計風格, 它的主旨是將一個原本獨立的系統拆分成多個小型服務,這些小型服務都在各自獨立的程式中執行,服務之間通過基於HTTP的RESTful API進行通訊協作;

 

被拆分後的每一個小型服務都圍繞著系統中的某一項業務功能進行構建, 並且每個服務都是一個獨立的專案,可以進行獨立的測試、開發和部署等;

由於各個獨立的服務之間使用的是基於HTTP的JSON作為資料通訊協作的基礎,所以這些微服務可以使用不同的語言來開發;

 

微服務架構的優缺點

 

1、我們知道微服務架構是將系統中的不同功能模組拆分成多個不同的服務,這些服務進行獨立地開發和部署,每個服務都執行在自己的程式內,這樣每個服務的更新都不會影響其他服務的執行;

 

2、由於每個服務是獨立部署的,所以我們可以更準確地監控每個服務的資源消耗情況,進行效能容量的評估,通過壓力測試,也很容易發現各個服務間的效能瓶頸所在;

 

3、由於每個服務都是獨立開發,專案的開發也比較方便,減少程式碼的衝突、程式碼的重複,邏輯處理流程也更加清晰,讓後續的維護與擴充套件更加容易;

 

4、微服務可以使用不同的程式語言進行開發;

 

但是在系統架構領域關於微服務架構也有一些爭論,有人傾向於在系統設計與開發中採用微服務架構實現軟體系統的低耦合,被認為是系統架構的未來方向,Martin Fowler(馬丁.福勒)也給微服務架構很高的評價;

 

同時,對微服務架構也有人持反對觀點,他們表示:

 

1、微服務架構增加了系統維護、部署的難度,導致一些功能模組或程式碼無法複用;

2、隨著系統規模的日漸增長,微服務在一定程度上也會導致系統變得越來越複雜,增加了整合測試的複雜度;

3、隨著微服務的增多,資料的一致性問題,服務之間的通訊成本等都凸顯了出來;

 

所以在系統架構時也要提醒自己:不要為了微服務而微服務。

 

為什麼選擇Spring Cloud構建微服務

 

微服務一詞是Martin Fowler(馬丁.福勒)於2014年提出來的,近幾年微服務架構的討論非常火熱,無數的架構師和開發者在實際專案中實踐著微服務架構的設計理念,他們在微服務架構中針對不同應用場景出現的各種問題,也推出了很多解決方案和開源框架,其中我們國內的網際網路企業也有一些著名的框架和方案;

 

整個微服務架構是由大量的技術框架和方案構成,比如:

 

服務基礎開發    Spring MVC、Spring、SpringBoot

服務註冊與發現    Netflix的Eureka、Apache的ZooKeeper等

服務呼叫    RPC呼叫有阿里巴巴的Dubbo,Rest方式呼叫有當當網Dubbo基礎上擴充套件的Dubbox

分散式配置管理    百度的Disconf、360的QConf、淘寶的Diamond、Netflix的Archaius等

負載均衡    Ribbon

服務熔斷    Hystrix

API閘道器    Zuul

批量任務    噹噹網的Elastic-Job、Linkedln的Azkaban

服務跟蹤    京東的Hydra、Twitter的Zipkin等

 

但是在微服務架構上,幾乎大部分的開源元件都只能解決某一個場景下的問題,所以這些實施微服務架構的公司也是整合來自不同公司或組織的諸多開源框架,並加入針對自身業務的一些改進,沒有一個統一的架構方案;

 

所以當我們準備實施微服務架構時,我們要整合各個公司或組織的開源軟體,而且某些開源軟體又有多種選擇,這導致在做技術選型的初期,需要花費大量的時間進行預備研、分析和實驗,這些方案的整合沒有得到充分的測試,可能在實踐中會遇到各種各樣的問題;

 

Spring Cloud的出現,可以說是為微服務架構迎來一縷曙光,有SpringCloud社群的巨大支援和技術保障,讓我們實施微服務架構變得異常簡單了起來,它不像我們之前所列舉的框架那樣,只是解決微服務中的某一個問題,而是一個解決微服務架構實施的綜合性解決框架,它整合了諸多被廣泛實踐和證明有效的框架作為實施的基礎元件,又在該體系基礎上建立了一些非常優秀的邊緣元件將它們很好地整合起來。

 

加之Spring Cloud 有其Spring 的強大技術背景,極高的社群活躍度,也許未來Spring Cloud會成為微服務的標準技術解決方案;


相關文章