微服務簡介


微服務的由來

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

為什么需要微服務

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

微服務與單體架構區別

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

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

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

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

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

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

微服務本質

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

什么樣的項目適合微服務

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

微服務開發框架

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

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

Dubbo:http://dubbo.io

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

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

什么是Spring Cloud

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

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。

Spring Cloud相關基礎服務組件

服務發現——Netflix Eureka (Nacos)

服務調用——Netflix Feign

熔斷器——Netflix Hystrix

服務網關——Spring Cloud GateWay

分布式配置——Spring Cloud Config (Nacos)

消息總線 —— Spring Cloud Bus (Nacos)

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),表示穩定版本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM