微服務架構(gòu)的優(yōu)勢與劣勢
優(yōu)勢:
1. 高度模塊化,邊界清晰
模塊化帶來高內(nèi)聚、低耦合,提升重用能力。例如我們在代碼中使用類來實現(xiàn)模塊化。
隨著系統(tǒng)的演化,我們會產(chǎn)生各種類庫、組件來實現(xiàn)模塊化,并且能在跨團隊之間實現(xiàn)重用。
微服務則是以服務的形式,在更高的層面實現(xiàn)模塊化,各個團隊各自獨立開發(fā)與維護自己的服務,并提供給其他團隊使用。
2. 可獨立部署。
微服務可以由單個團隊進行獨立開發(fā)、獨立部署,不需要很多其他的團隊來協(xié)助。
3. 兼容不同的技術棧
微服務是分散式治理,不存在集中式管理的問題。各個團隊可以按照自己擅長的技術棧來提供微服務,對于微服務的使用方來講,根本不需要關注提供方的技術棧。
盡管微服務可以兼容不同的技術棧,但在公司內(nèi)或者一個大部門內(nèi)還是建議盡量統(tǒng)一技術棧,可以在一定程度上減少成本。
劣勢:
1. 分布式帶來的高度復雜性
相對于單體應用中開發(fā)人員會十分清晰各個模塊如何運作,微服務帶來的分布式會導致開發(fā)人員可能并不完整地知道整個大系統(tǒng)、大業(yè)務是如何運作的。
2. 最終一致性問題
微服務中各個團隊的數(shù)據(jù)是分散式治理的,不同團隊是允許有對同一概念的數(shù)據(jù)有不同的拷貝的。例如電商系統(tǒng)中的訂單數(shù)據(jù),A團隊可以有自己的拷貝,B團隊可以有自己的拷貝,C團隊也可以有自己的拷貝。當A團隊對訂單數(shù)據(jù)進行了修改時,就需要將相關被修改的數(shù)據(jù)同步到B與C團隊。這里就涉及數(shù)據(jù)一致性的問題,需要有對應的數(shù)據(jù)一致性方案,否則就會造成業(yè)務上出現(xiàn)不能接受的結(jié)果。
3. 運維復雜
分布式系統(tǒng)有著數(shù)量龐大的各種服務,各種服務自己需要相互協(xié)同。在可靠性、穩(wěn)定性、監(jiān)控、容量規(guī)劃方面都有很高的要求。
4. 測試復雜性
以往的單體應用中,單個測試團隊可以完整地覆蓋整個應用的各個場景。但到了分布式系統(tǒng)中,各個微服務是分散到各個不同的系統(tǒng)中,而不同的系統(tǒng)又由不同的團隊來負責。那么測試的時候就需要聯(lián)合多個團隊進行測試,測試的復雜性就變得非常高。
想要了解更多政策信息可以咨詢中培課程顧問李老師18911709446(同微信)