相對(duì)于單體架構(gòu)和SOA,它的主要特點(diǎn)是組件化、松耦合、自治、去中心化,體現(xiàn)在以下幾個(gè)方面:
一組小的服務(wù)
服務(wù)粒度要小,而每個(gè)服務(wù)是針對(duì)一個(gè)單一職責(zé)的業(yè)務(wù)能力的封裝,專注做好一件事情。
獨(dú)立部署運(yùn)行和擴(kuò)展
每個(gè)服務(wù)能夠獨(dú)立被部署并運(yùn)行在一個(gè)進(jìn)程內(nèi)。這種運(yùn)行和部署方式能夠賦予系統(tǒng)靈活的代碼組織方式和發(fā)布節(jié)奏,使得快速交付和應(yīng)對(duì)變化成為可能。
獨(dú)立開發(fā)和演化
技術(shù)選型靈活,不受遺留系統(tǒng)技術(shù)約束。合適的業(yè)務(wù)問題選擇合適的技術(shù)可以獨(dú)立演化。服務(wù)與服務(wù)之間采取與語(yǔ)言無關(guān)的API進(jìn)行集成。相對(duì)單體架構(gòu),微服務(wù)架構(gòu)是更面向業(yè)務(wù)創(chuàng)新的一種架構(gòu)模式。
獨(dú)立團(tuán)隊(duì)和自治
團(tuán)隊(duì)對(duì)服務(wù)的整個(gè)生命周期負(fù)責(zé),工作在獨(dú)立的上下文中,自己決策自己治理,而不需要統(tǒng)一的指揮中心。團(tuán)隊(duì)和團(tuán)隊(duì)之間通過松散的社區(qū)部落進(jìn)行銜接。
微服務(wù)優(yōu)點(diǎn)
每個(gè)微服務(wù)都很小,這樣能聚焦一個(gè)指定的業(yè)務(wù)功能或業(yè)務(wù)需求。
微服務(wù)能夠被小團(tuán)隊(duì)單獨(dú)開發(fā),這個(gè)小團(tuán)隊(duì)是2到5人的開發(fā)人員組成。
微服務(wù)是松耦合的,是有功能意義的服務(wù),無論是在開發(fā)階段或部署階段都是獨(dú)立的。
微服務(wù)能使用不同的語(yǔ)言開發(fā)。
微服務(wù)允許容易且靈活的方式集成自動(dòng)部署,通過持續(xù)集成工具,如Jenkins, bamboo 。
一個(gè)團(tuán)隊(duì)的新成員能夠更快投入生產(chǎn)。
微服務(wù)易于被一個(gè)開發(fā)人員理解,修改和維護(hù),這樣小團(tuán)隊(duì)能夠更關(guān)注自己的工作成果。無需通過合作才能體現(xiàn)價(jià)值。
微服務(wù)允許你利用融合最新技術(shù)。
微服務(wù)只是業(yè)務(wù)邏輯的代碼,不會(huì)和HTML,CSS 或其他界面組件混合。
微服務(wù)能夠即時(shí)被要求擴(kuò)展。
微服務(wù)能部署中低端配置的服務(wù)器上。
易于和第三方集成。
每個(gè)微服務(wù)都有自己的存儲(chǔ)能力,可以有自己的數(shù)據(jù)庫(kù)。也可以有統(tǒng)一數(shù)據(jù)庫(kù)。
微服務(wù)架構(gòu)的缺點(diǎn)
微服務(wù)架構(gòu)可能帶來過多的操作。
需要DevOps技巧 (http://en.wikipedia.org/wiki/DevOps).
可能雙倍的努力。
分布式系統(tǒng)可能復(fù)雜難以管理。
因?yàn)榉植疾渴鸶檰栴}難。
當(dāng)服務(wù)數(shù)量增加,管理復(fù)雜性增加。
想了解更多IT資訊,請(qǐng)?jiān)L問中培偉業(yè)官網(wǎng):中培偉業(yè)