微服務(wù)是什么太闺?
????????2012年嘁圈,“微服務(wù)架構(gòu)”這個術(shù)語出現(xiàn)了省骂,直到2014年才開始被關(guān)注钞澳。微服務(wù)是一種架構(gòu)風(fēng)格涨缚,一種將軟件應(yīng)用程序設(shè)計為可獨立部署的服務(wù)套件的特定方式。雖然這種架構(gòu)風(fēng)格沒有確切的定義脓魏,但是從名稱看來,微服務(wù)注重的是“微”混蔼,注重的是“服務(wù)”檩电,圍繞業(yè)務(wù)能力,自動化部署俐末,端點智能以及語言和數(shù)據(jù)的分散控制等方面存在著某些共同特征奄侠。
????????“微服務(wù)” - 近幾年來是一個新名詞,許多項目在過去幾年中都采用了這種風(fēng)格烹卒,相比往年的分模塊開發(fā)和單體應(yīng)用項目而言弯洗,得到的 迄今為止的結(jié)果是積極的,甚至在未來的幾年中牡整,微服務(wù)架構(gòu)的理念會廣為流傳,成為眾多公司項目的首選谣辞。因此對于很多互聯(lián)網(wǎng)公司來說,微服務(wù)架構(gòu)將會成為構(gòu)建企業(yè)應(yīng)用程序的默認風(fēng)格句占。
????????簡單來說,微服務(wù)架構(gòu)是一種將單體應(yīng)用程序當(dāng)中的各種功能拆分為各個不同的服務(wù)纱烘,每個服務(wù)部署成一個項目獨立運行祈餐,各個服務(wù)之間是松耦合的,每個服務(wù)只關(guān)注自己本身的功能啤它。每種應(yīng)用程序都在其自己的進程中運行舱痘,并與輕量級機制(通常是HTTP資源的API)進行通信。這些服務(wù)是圍繞業(yè)務(wù)功能構(gòu)建的塌碌,可以通過全自動部署機制進行獨立部署旬盯。
????????可以在“自己的程序”中運行,并通過“輕量級設(shè)備與HTTP型API進行溝通”接剩。關(guān)鍵在于該服務(wù)可以在自己的程序中運行。通過這一點我們就可以將服務(wù)公開與微服務(wù)架構(gòu)(在現(xiàn)有系統(tǒng)中分布一個API)區(qū)分開來懊缺。在服務(wù)公開中培他,許多服務(wù)都可以被內(nèi)部獨立進程所限制。如果其中任何一個服務(wù)需要增加某種功能俊扳,那么就必須縮小進程范圍猛遍。在微服務(wù)架構(gòu)中号坡,只需要在特定的某種服務(wù)中增加所需功能抗果,而不影響整體進程,減少了單體應(yīng)用時期一項報錯整體癱瘓的情況日麸。
微服務(wù)的優(yōu)點
? ??????微服務(wù)架構(gòu)模式有許多非常好的地方逮光。
????????第一,微服務(wù)解決了復(fù)雜問題嗡综。它把龐大的單體應(yīng)用程序分解成一整系列的服務(wù)杜漠。雖然功能數(shù)量不變,但是程序被分解成可管理的塊或者服務(wù)驾茴。每個服務(wù)都有一個明確的功能邊界,如遠程過程調(diào)用(RPC)驅(qū)動或消息驅(qū)動 API锈至。微服務(wù)架構(gòu)模式強制一定程度的模塊化,實際上击碗,使用單體代碼來實現(xiàn)是極其困難的们拙。因此,使用微服務(wù)架構(gòu)模式晰房,項目整體邏輯更加清晰,更容易理解與維護,減少了企業(yè)中新人維護老項目無從下手的尷尬情況验夯。
????????第二,微服務(wù)架構(gòu)使項目中分離的每個服務(wù)都可以由一個團隊獨立專注開發(fā)挥转。開發(fā)者可以自由選擇任何符合服務(wù) API 契約的技術(shù)绑谣。這樣的開發(fā)方式可以較好的避免混亂的開發(fā)狀態(tài), 這種自由意味著開發(fā)人員不再有可能在這種自由的新項目開始時使用過時的技術(shù)幌衣。當(dāng)編寫一個新服務(wù)時,他們可以選擇當(dāng)前的技術(shù)豁护。此外楚里,由于服務(wù)較小猎贴,使用當(dāng)前技術(shù)重寫舊服務(wù)將變得更加可行。
????????第三达址,微服務(wù)架構(gòu)模式可以實現(xiàn)每個微服務(wù)獨立部署。開發(fā)人員根本不需要去協(xié)調(diào)部署本地變更到服務(wù)惹骂。這些變更一經(jīng)測試即可立即部署苏携。比如,UI 團隊可以執(zhí)行 A|B 測試对粪,并快速迭代 UI 變更右冻。微服務(wù)架構(gòu)模式使得持續(xù)部署成為可能,為后期項目的持續(xù)部署打下基礎(chǔ)著拭。