? 我意識(shí)到瓤介,雖然基礎(chǔ)設(shè)施自動(dòng)化,測(cè)試和持續(xù)交付等技術(shù)很有用远荠,但如果系統(tǒng)本身的設(shè)計(jì)不支持快速變化矮固,那所能做的事情將會(huì)受到很大的限制。
本書(shū)關(guān)注的是微服務(wù)的理念譬淳,而不是具體的技術(shù)档址,因?yàn)閷?shí)現(xiàn)技術(shù)的變化速度很快,但是其背后的理論概念卻需要時(shí)間進(jìn)行變遷邻梆。
隨著領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)守伸,持續(xù)交付,按需虛擬化确虱,基礎(chǔ)設(shè)施自動(dòng)化含友,小型自治團(tuán)隊(duì),大型集群系統(tǒng)這些實(shí)踐的流行校辩,微服務(wù)也應(yīng)運(yùn)而生窘问。
什么是微服務(wù)?
微服務(wù)很小宜咒,專(zhuān)注做好一件事情惠赫。在一個(gè)單體系統(tǒng)內(nèi),通常會(huì)創(chuàng)建抽象層或者模塊來(lái)保證代碼的內(nèi)舉行故黑,從而避免上述問(wèn)題儿咱。
單一職責(zé)原則庭砍,即內(nèi)聚性:把因相同原因而變化的東西聚合到一起,而把不同原因而變化的東西分離開(kāi)來(lái)混埠。
微服務(wù)的自治性:
為了達(dá)到解耦的目的怠缸,你需要正確地建模服務(wù)和API,服務(wù)的交互協(xié)議可以有多種钳宪。
微服務(wù)可以單獨(dú)管理生命周期揭北,不會(huì)影響其他的服務(wù)。
微服務(wù)的主要好處:
1. 技術(shù)的異構(gòu)性吏颖,且每個(gè)微服務(wù)可以有自己的技術(shù)棧(從開(kāi)發(fā)語(yǔ)言搔体,存儲(chǔ)技術(shù)等)。
2. 擴(kuò)展半醉,系統(tǒng)中一般只有一部分的邏輯存在性能問(wèn)題疚俱,但為此卻需要擴(kuò)展整個(gè)單體應(yīng)用。
3. 可以快速的部署缩多,兩次發(fā)布之間的差異越大呆奕,出錯(cuò)的可能性就更大。
4. 與組織結(jié)構(gòu)相匹配瞧壮,且方便項(xiàng)目在團(tuán)之間的流通交接登馒。
6. 可組合型。外部復(fù)雜多變的需求咆槽,多樣的渠道終端陈轿,可能需要后部同一服務(wù)支持多種組裝模式和多種交互協(xié)議。
7. 對(duì)可替代性?xún)?yōu)化秦忿,重要且又復(fù)雜的遺留系統(tǒng)的改造:工作量大麦射,而且修改 風(fēng)險(xiǎn)很高。