官术网_书友最值得收藏!

1.1 微服務(wù)架構(gòu)的特點

在介紹微服務(wù)架構(gòu)之前,我們先來看看云原生的概念。

云原生的概念,最早由Pivotal團隊的Matt Stine于2013年提出。這個概念提出之后,在各大社區(qū)掀起了討論的熱潮,并得到了社區(qū)的不斷完善。顧名思義,云原生是指專門為云平臺部署和運行而設(shè)計的應(yīng)用。云原生包含的內(nèi)容非常多,包括DevOps(開發(fā)運維一體化)、持續(xù)交付、微服務(wù)、敏捷基礎(chǔ)設(shè)施和12要素等幾大主題。

2015年,Linux基金會領(lǐng)頭成立了云原生應(yīng)用基金會(Cloud Native Computing Foundation,CNCF),它致力于云原生技術(shù)的普及和可持續(xù)發(fā)展。CNCF認為云原生系統(tǒng)必須包含的屬性有:容器化封裝、自動化管理和面向微服務(wù)。

現(xiàn)在我們來看看微服務(wù)架構(gòu)的概念。

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

剛開始,對于微服務(wù)架構(gòu)是沒有一個完整的描述的,其可以看到的主要特征就是小型化、細粒度,以及使用輕量的HTTP通信等。

2014年3月,在James Lewis和Martin Fowler發(fā)表的一篇博客文章中,總結(jié)了微服務(wù)架構(gòu)設(shè)計的一些共同特點。下面摘錄的一段描述,被普遍認為可以作為微服務(wù)架構(gòu)的定義:

“簡而言之,微服務(wù)架構(gòu)是將單個應(yīng)用程序作為一組小型服務(wù)開發(fā)的方法,每個服務(wù)程序都在自己的進程中運行,并與輕量級機制(通常是HTTP資源API)進行通信。這些服務(wù)是圍繞業(yè)務(wù)功能構(gòu)建的,可以通過全自動部署機器獨立部署。這些服務(wù)可能用不同的編程語言編寫,使用不同的數(shù)據(jù)存儲技術(shù),并盡量不用集中式方式進行管理。”

上面提到的單個應(yīng)用程序是指傳統(tǒng)設(shè)計中的一個應(yīng)用系統(tǒng),或者一個大型應(yīng)用,現(xiàn)在大家流行把它叫作單體應(yīng)用。

可以看出,微服務(wù)架構(gòu)是將一個大型系統(tǒng)使用小型化分割的方法,按業(yè)務(wù)功能拆分成各種獨立的小應(yīng)用。在各個小應(yīng)用之間,可以使用輕量機制,即基于RESTful的HTTP進行通信,并以這種通信方式替換原來在程序之間直接調(diào)用的方式。微服務(wù)就是通過這種架構(gòu)設(shè)計方法拆分出來的一個個獨立的小型應(yīng)用。

將一個大型系統(tǒng)分割成一些小型應(yīng)用,而小型應(yīng)用之間通過HTTP進行整合,這就是微服務(wù)架構(gòu)的精髓所在。我們可以用一句通俗易懂的話來概括,那就是“分而治之,合而用之”。

從上面微服務(wù)架構(gòu)的描述中,我們可以概括出微服務(wù)架構(gòu)的幾個顯著特點。

1.小型化

微服務(wù)架構(gòu)的突出之處就是小型化應(yīng)用設(shè)計,最顯著的特點就是應(yīng)用程序變小了,以小為美。小型化的方式,使每個程序只負責(zé)完成一定范圍內(nèi)的業(yè)務(wù)功能,可以更加專一地做好一件事情。這是我們?nèi)粘=鉀Q復(fù)雜問題的常用手法,即“大事化小,小事化無”。

2.自治化

每個微服務(wù)都是一個獨立的應(yīng)用,獨立使用數(shù)據(jù)庫,獨立部署,獨立運行。這種獨立性符合高內(nèi)聚松耦合的設(shè)計原則。在微服務(wù)開發(fā)和維護過程中,每個微服務(wù)都是獨立自治的,一個服務(wù)的更新和迭代不會依賴于其他服務(wù),同時也可以盡可能做到不對其他服務(wù)造成影響,或者可以將這種影響降到最小。

3.扁平化

去中心化的扁平化管理,可以更加自由地發(fā)揮每一個微服務(wù)的優(yōu)勢。但是這種自由并不是隨意的混搭和組合,而是使用智能化的服務(wù)治理,讓更多的微服務(wù)在發(fā)揮個性優(yōu)勢的同時,處在一種雜而不亂的有序可控的范圍之內(nèi)。雖然從整體上微服務(wù)已經(jīng)沒有集中管理的概念,但是微服務(wù)可以從全局范圍出發(fā),發(fā)揮更佳的性能優(yōu)勢。

4.輕量級設(shè)計

微服務(wù)小型化的特點,就是輕量級設(shè)計方法的最好體現(xiàn)。這種輕量級的設(shè)計同樣體現(xiàn)在微服務(wù)的通信設(shè)計之中。微服務(wù)之間的常用通信方式有兩種,一種是使用輕量的REST協(xié)議進行API式的同步通信,另一種是使用輕量的異步消息通信。

5.漸進式設(shè)計

一個產(chǎn)品從成型到成熟是要經(jīng)歷一個過程的,這個過程是漸進式設(shè)計的。由于微服務(wù)小型而獨立的特點,使得微服務(wù)設(shè)計可以以業(yè)務(wù)驅(qū)動的方式進行快速迭代,從而不斷修正和調(diào)整,使產(chǎn)品趨于成熟。所以,微服務(wù)非常適合敏捷開發(fā)。

主站蜘蛛池模板: 洪雅县| 永州市| 云安县| 定州市| 井陉县| 英德市| 固始县| 长治市| 南川市| 林西县| 新野县| 大关县| 阜城县| 个旧市| 岳池县| 琼结县| 黑山县| 岳西县| 宣恩县| 凤庆县| 县级市| 安塞县| 彰化市| 正镶白旗| 织金县| 镇坪县| 福泉市| 衡阳市| 泰兴市| 桃园县| 台江县| 东台市| 张家港市| 新营市| 嘉黎县| 肇庆市| 桂平市| 定远县| 边坝县| 鄂托克旗| 五华县|