- Spring Cloud Alibaba大型微服務架構項目實戰(上冊)
- 十三
- 925字
- 2024-05-11 19:24:59
2.3.2 微服務架構的缺點
凡事都有兩面性,微服務架構也不例外。講完它的優點之后,再來列舉一些它的不足之處。
1.落地一個微服務架構項目比較復雜
實施和上線一個微服務架構項目的復雜度很高,工作量很大,要考慮和解決的問題很多。微服務架構實施前的技術選型、微服務組件的搭建和底層支撐、項目拆分時的邊界和具體落地的細則、微服務項目的開發和上線、后期的維護等具體的工作都擺在面前,需要一個一個地處理。在落地微服務架構項目時不僅要編碼,還要考慮微服務架構的搭建和底層支撐,這件事就像“大兵團作戰”,不是一個五人突擊隊就能夠完成任務的。
2.服務依賴和調用鏈路更復雜
微服務架構中的單個微服務,不可避免地會出現依賴性及由此導致的問題。比如,H服務依賴S服務,S服務依賴A服務,如果A服務在線上出現問題或A服務需要修改部分邏輯,那么S服務和H服務也可能受到牽連,或者級聯修改。雖然已經做了服務拆分,影響范圍不大,但是這些問題還是存在的。
另外一個問題就是微服務中的調用鏈路復雜,調用時間相對于單體應用的調用時間肯定是要延長的。微服務在服務調用時難免要建立服務連接,不管是基于HTTP協議還是基于其他的RPC協議,都會難以避免地發生網絡損耗,相對于單體應用中的服務調用是同一個項目中的方法調用,更加復雜。
3.數據一致性問題
用前文中的H服務、S服務和A服務舉例來說,在調用過程中,如果遇到網絡延遲或A服務出現了異常導致數據回滾,但是上游H服務和S服務的數據都已經入庫了,就會導致數據不一致的問題。此時就需要做好數據一致性的解決方案,相對于單體應用中的本地事務處理,復雜度又提升了。
4.問題排查的鏈路加長
前文已經提到了微服務架構項目中的調用鏈路更復雜,鏈路復雜和鏈路的拉長會導致定位線上問題時要排查的地方增加,出現了處理一個問題要查看和定位多個服務的情況。
5.學習成本高
對于開發人員來說,微服務架構的學習和上手比較難。不像學習某一個技術棧,如想要學習和上手Spring Boot技術棧,看教程后動手做幾個功能和項目也就學會了。在學習微服務架構時,需要學習很多內容,包括理念、組成部分、各個組件的功能與使用等,都需要理解,還要動手搭建和整合各個微服務組件,否則很難完完整整地掌握。到了具體編碼和實戰的過程中,又有很多的難點要克服。