[Java][微服務][SpringCloud]SpringCloud相關概念介紹

一、什麼是微服務

1、微服務的由來

微服務最早由Martin Fowler與James Lewis於2014年共同提出,微服務架構風格是一種使用一套小服務來開發單個應用的方式途徑,每個服務運行在自己的進程中,並使用輕量級機制通信,通常是HTTP API,這些服務基於業務能力構建,並能夠通過自動化部署機制來獨立部署,這些服務使用不同的編程語言實現,以及不同數據存儲技術,並保持最低限度的集中式管理。 
 

2、爲什麼需要微服務

在傳統的IT行業軟件大多都是各種獨立系統的堆砌,這些系統的問題總結來說就是擴展性差,可靠性不高,維護成本高。到後面引入了SOA服務化,但是,由於 SOA 早期均使用了總線模式,這種總線模式是與某種技術棧強綁定的,比如:J2EE。這導致很多企業的遺留系統很難對接,切換時間太長,成本太高,新系統穩定性的收斂也需要一些時間。 
 

3、微服務與單體架構區別

(1)單體架構所有的模塊全都耦合在一塊,代碼量大,維護困難。

         微服務每個模塊就相當於一個單獨的項目,代碼量明顯減少,遇到問題也相對來說比較好解決。

(2)單體架構所有的模塊都共用一個數據庫,存儲方式比較單一。

         微服務每個模塊都可以使用不同的存儲方式(比如有的用redis,有的用mysql等),數據庫也是單個模塊對應自己的數據庫。

(3)單體架構所有的模塊開發所使用的技術一樣。

         微服務每個模塊都可以使用不同的開發技術,開發模式更靈活。 

 

4、微服務本質

(1)微服務,關鍵其實不僅僅是微服務本身,而是系統要提供一套基礎的架構,這種架構使得微服務可以獨立的部署、運行、升級,不僅如此,這個系統架構還讓微服務與微服務之間在結構上“松耦合”,而在功能上則表現爲一個統一的整體。這種所謂的“統一的整體”表現出來的是統一風格的界面,統一的權限管理,統一的安全策略,統一的上線過程,統一的日誌和審計方法,統一的調度方式,統一的訪問入口等等。
(2)微服務的目的是有效的拆分應用,實現敏捷開發和部署 。
(3)微服務提倡的理念團隊間應該是 inter-operate, not integrate 。inter-operate是定義好系統的邊界和接口,在一個團隊內全棧,讓團隊自治,原因就是因爲如果團隊按照這樣的方式組建,將溝通的成本維持在系統內部,每個子系統就會更加內聚,彼此的依賴耦合能變弱,跨系統的溝通成本也就能降低。
 

5、什麼樣的項目適合微服務

微服務可以按照業務功能本身的獨立性來劃分,如果系統提供的業務是非常底層的,如:操作系統內核、存儲系統、網絡系統、數據庫系統等等,這類系統都偏底層,功能和功能之間有着緊密的配合關係,如果強制拆分爲較小的服務單元,會讓集成工作量急劇上升,並且這種人爲的切割無法帶來業務上的真正的隔離,所以無法做到獨立部署和運行,也就不適合做成微服務了。

 

6、微服務開發框架

目前微服務的開發框架,最常用的有以下四個:

Spring Cloud:http://projects.spring.io/spring-cloud(現在非常流行的微服務架構)

Dubbo:http://dubbo.io

Dropwizard:http://www.dropwizard.io (關注單個微服務的開發)

Consul、etcd&etc.(微服務的模塊)

 

7、什麼是Spring Cloud

Spring Cloud是一系列框架的集合。它利用Spring Boot的開發便利性簡化了分佈式系統基礎設施的開發,如服務發現、服務註冊、配置中心、消息總線、負載均衡、 熔斷器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啓動和部署。Spring並沒有重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過SpringBoot風格進行再封裝屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分佈式系統開發工具包
 

8、Spring Cloud和Spring Boot是什麼關係

Spring Boot 是 Spring 的一套快速配置腳手架,可以基於Spring Boot 快速開發單個微服務,Spring Cloud是一個基於Spring Boot實現的開發工具;Spring Boot專注於快速、方便集成的單個微服務個體,Spring Cloud關注全局的服務治理框架; Spring Boot使用了默認大於配置的理念,很多集成方案已經幫你選擇好了,能不配置就不配置,Spring Cloud很大的一部分是基於Spring Boot來實現,必須基於Spring Boot開發。可以單獨使用Spring Boot開發項目,但是Spring Cloud離不開 Spring Boot。

 

9、Spring Cloud相關基礎服務組件

服務發現——Netflix Eureka  (Nacos)
服務調用——Netflix Feign 
熔斷器——Netflix Hystrix 
服務網關——Spring Cloud  GateWay 
分佈式配置——Spring Cloud Config  (Nacos)
消息總線 —— Spring Cloud Bus (Nacos)
 

10、Spring Cloud的版本

Spring Cloud並沒有熟悉的數字版本號,而是對應一個開發代號。

Cloud代號 Boot版本(train) Boot版本(tested) lifecycle
Angle 1.2.x incompatible with 1.3 EOL in July 2017
Brixton 1.3.x 1.4.x 2017-07卒
Camden 1.4.x 1.5.x -
Dalston 1.5.x not expected 2.x -
Edgware 1.5.x not expected 2.x -
Finchley 2.0.x not expected 1.5.x -
Greenwich 2.1.x    
Hoxton 2.2.x    

開發代號看似沒有什麼規律,但實際上首字母是有順序的,比如:Dalston版本,我們可以簡稱 D 版本,對應的 Edgware 版本我們可以簡稱 E 版本。

小版本

Spring Cloud 小版本分爲:

SNAPSHOT: 快照版本,隨時可能修改

M: MileStone,M1表示第1個里程碑版本,一般同時標註PRE,表示預覽版版。

SR: Service Release,SR1表示第1個正式版本,一般同時標註GA:(GenerallyAvailable),表示穩定版本。

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