- 深入理解Istio:云原生服務網格進階實戰
- 云原生社區
- 1062字
- 2022-08-16 14:38:15
第1章 Service Mesh概述
微服務架構可謂是當前軟件開發領域的技術熱點,在各種博客、社交媒體和會議演講上的“出鏡率”非常高,無論是做基礎架構的還是做業務系統的工程師,對它都相當關注。這種現象與熱度到目前為止,已經持續了近6年。
尤其是近些年來,微服務架構逐漸發展成熟,從最初的“星星之火”到現在的大規模落地與實踐,幾乎成為分布式環境下的首選架構。微服務架構成為時下技術熱點,大量互聯網企業都在做微服務架構的落地和推廣。同時,也有很多傳統企業基于微服務和容器,在做互聯網技術轉型。
而在互聯網技術轉型中,國內有一個趨勢,以Spring Cloud與Dubbo為代表的微服務開發框架非常普及和受歡迎。然而軟件開發沒有“銀彈”,基于這些傳統微服務框架構建的應用系統在享受其優勢的同時,痛點也愈加明顯,例如:
?侵入性強。想要集成SDK的能力,除了需要添加相關依賴,還需要在業務代碼中增加一部分代碼、注解或配置,防止業務層代碼與治理層代碼界限不清晰。
?升級成本高。每次升級都需要業務應用修改SDK版本,重新進行功能回歸測試,并且對每一臺機器進行部署上線。而這對業務方來說,與業務的快速迭代開發是有沖突的,大多數業務方都不愿意停下來做這些與業務目標不太相關的事情。
?版本碎片化嚴重。由于升級成本高,而中間件在不停地向前發展,久而久之,就會導致線上不同服務引用的SDK版本不統一、能力參差不齊,造成很難統一治理的局面。
?中間件演變困難。由于版本碎片化嚴重,導致中間件在向前演進的過程中需要兼容代碼中的各種各樣的老版本邏輯,帶著“枷鎖”前行,因此無法實現快速迭代。
?內容多、門檻高。Spring Cloud被稱為微服務治理框架的“全家桶”,包含大大小小幾十個組件,內容相當多,往往需要用戶花費幾年時間去熟悉其中的關鍵組件。如果將Spring Cloud作為一個完整的治理框架,則需要深入了解其中的原理與實現,否則遇到問題會很難定位。
?治理功能不全。不同于RPC框架,Spring Cloud作為治理框架的典型,也不是萬能的,諸如協議轉換支持、多重授權機制、動態請求路由、故障注入、灰度發布等高級功能都沒有被覆蓋到。而這些功能往往是企業大規模落地不可或缺的,因此企業還需要投入其他人力進行相關功能的自研,或者調研其他組件作為補充。
以上列出了傳統微服務框架的局限性,但這并不意味著傳統微服務框架就一無是處了。在中小型企業中,采用Spring Cloud這種傳統微服務框架不僅可以滿足絕大部分的服務治理的需求,而且可以借此快速推進微服務化改造。傳統微服務框架的局限性是技術發展到一定的程度必然要經歷的階段,也是促使技術不斷發展、不斷前進的動力。而Service Mesh技術正是現階段解決這些問題的更優方案。