您好,登錄后才能下訂單哦!
對于大多數人來說,“Service Mesh(服務網格)”仍然是一個新概念,因此,談論它的“歷史”可能看起來有點滑稽。但事實上,早在2010年初,在一些大網絡規模的公司中,服務網格的概念就隱約開始逐步形成了。因此,服務網格確實有一段歷史值得去探索、去理解。
在深入歷史脈絡之前,讓我們先聊聊“現在”。什么是服務網格?為什么它突然成為了云原生領域的熱門話題?
服務網格是用于控制和監視微服務應用程序中的內部服務到服務流量的軟件基礎結構層。它通常采用與應用程序代碼一起部署的網絡代理的“數據平面”的形式,以及用于與這些代理交互的“控制平面”。在這個模型中,開發人員(“服務所有者”)可以非常幸福地完全意識不到服務網格的存在,而運營商(“平臺工程師”)則被授予一套新的工具來確保可靠性、安全性和可見性。
服務網格為什么會突然流行?簡而言之,是因為對于許多公司來說,像Docker和Kubernetes這樣的工具已經“解決了部署的問題”——至少是差不多解決了。但Docker和Kubernetes沒能解決運行時的問題。而這就是服務網格的用武之地。
“解決部署問題”是什么意思?使用Docker和Kubernetes之類的技術可以為企業大大減少部署大量應用或服務時的操作負擔。使用Docker和Kubernetes,部署100個應用程序或服務的工作量,不再是部署單個應用程序的100倍。這是歷史性的向前邁出的一大步,對于許多公司來說,它可以極大降低采用微服務的成本。這可能不僅僅是因為Docker和Kubernetes在所有正確的級別提供了強大的抽象,更是因為它們標準化了整個組織的打包和部署模式。
但是,一旦應用程序運行之后呢?畢竟,部署不是生產的最后一步; 部署完之后,應用程序還必須運行。如此一來問題就變成了:像使用Docker和Kubernete進行標準化部署時一樣,我們還能以同樣的方式來將應用程序的運行時操作也標準化嗎?
為了解決這個問題,服務網格應運而生。從本質上講,服務網絡提供統一的全局方式來控制和測量應用程序或服務之間的所有請求流量(在數據中心的說法中,即“東西向”流量)。對于采用微服務的公司而言,此請求流量在運行時行為中起著至關重要的作用。由于服務通過響應傳入請求和發出傳出請求來工作,因此請求流成為應用程序在運行時的行為方式的關鍵決定因素。因此,將流量管理標準化,則成為將應用程序運行時標準化的工具。
通過提供API來分析和操作此流量,服務網絡為整個組織的運行時操作提供了標準化機制——包括確保可靠性、安全性和可見性的方法。和任何優秀的基礎設施層一樣,服務網格(在理想情況下)的工作方式與服務的構建方式無關。
服務網格是如何形成的? 那么服務網格從何而來?做了一些軟件考古之后,我們發現服務網格提供的核心功能——請求級負載均衡、斷路、重試、儀器等——基本上并不是新功能。其實,服務網格最終是功能的重新包裝,真正發生轉變的是“地方”,而不是“什么”。 服務網格的起源始于大約2010年三層應用程序架構模型的興起——這是一種簡單的架構,一度為網絡上的絕大多數應用程序提供動力。在這個模型中,請求流量發揮著重要作用(有兩個躍點!)。應用程序流量首先由“Web層”處理,“web層”又與“app層”對話,后者又與“數據庫層”對話。Web層中的Web服務器旨在處理大量傳入請求,需要非常迅速地將它們小心地交給相對較慢的應用服務器。(Apache、NGINX和其他流行的Web服務器都有非常復雜的邏輯來處理這種情況。)同樣,應用層使用數據庫庫與后備存儲進行通信。這些庫通常負責以針對此用例優化的方式處理緩存、負載均衡、路由、流控制。 但是,這種三層應用程序架構模型,在過載的情況下會開始崩潰——特別是在app層,隨著時間的推移它的負載會變得非常大。像谷歌、Facebook、Netflix、Twitter這樣的大公司學會了將單體架構拆分成許多獨立運行的塊,從而催生了微服務的興起。在引入微服務的那一刻,還引入了東西向流量。在這個世界上,通信不再是專一的,而是在每一項服務之間。通信若出錯,整個網站都會出現故障。 因此,這些公司都以類似的方式做出了回應:他們編寫了“胖客戶端”庫來處理請求流量。這些庫——例如谷歌的Stubby、Netflix的Hysterix、Twitter的Finagle——為所有服務提供了統一的運行時操作方式。開發人員或服務所有者使用這些庫向其他服務發出請求,而在這個框架下,這些庫將負責負載均衡、路由、斷路、遙測。通過在應用程序中的每個服務之間提供統一的行為、可見性和控制點,這些庫形成了表面上最初的服務網格——沒有花哨的名稱。 Proxy的興起 快進到現代的云原生世界。當然,這些庫仍然存在。但是,鑒于進程外代理提供的操作便利性,庫的吸引力顯著降低了——尤其是當容器和編排框架的出現使得部署復雜性大幅下降時。 代理避免了庫的許多缺點。例如,當一個庫發生變化時,必須在每個服務中部署這些變化,這個過程往往需要復雜的組織層面的協調工作。相比之下,代理可以在不重新編譯和重新部署每個應用程序的情況下進行升級。同樣,代理支持多語言系統,在多語言系統中由服務組成的應用程序是用不同語言編寫的——而這種方法對于庫而言過于昂貴。 也許最重要的是,對于大型組織而言,在代理而不是庫中實現服務網絡,會將提供必要功能的責任,從服務所有者手上,轉移到最終使用該服務的終端用戶(即平臺工程團隊)手上。服務提供者和使用者的這種一致性,將會讓這些團隊把握自己的命運,消除開發和運維之間復雜的依賴關系。 這些因素都有助于服務網格的興起。通過部署代理的分布式“網格”(它可以作為底層基礎架構的一部分而不是應用程序本身來進行維護),并通過提供集中式API來分析和操作此流量,服務網格為跨越整個組織的運行時操作提供了標準化機制,包括確保可靠性、安全性和可見性的方法。 企業級服務網格應用 Service Mesh極大地簡化了用戶體驗,并將大中型企業的Kubernetes落地引領進下一個全新階段,被業界普遍認為是新一代的微服務架構的最佳技術設計。日前,國內外企業及技術領域對Service Mesh技術的應用和探索開展的如火如荼,對大多數使用容器的企業而言,Service Mesh仿佛是容器部署中亟待補齊的最后一塊拼圖。 由CNCF舉辦的KubeCon + CloudNativeCon,作為世界范圍的Kubernetes與容器技術領域的頂級技術盛會,將于今年11月14日-15日登陸上海,這是KubeCon首次來華舉辦。Rancher Labs攜手華為,將于11月13日和CNCF聯合舉辦KubeCon同場會議,同中國區眾多企業客戶一起,推出2018云原生服務網格(Istio)企業峰會。 屆時,來自華為、上汽集團、Rancher Labs、云宏、興業銀行、飛貸金融、金風科技、樹維信息等著名企業的科技負責人和微服務架構師,將分享各自在新一代微服務架構建設和Service Mesh應用方面的經驗和心得。 日期:11月13日,星期二 時間:上午9:00至下午6:00 地點:上海新發展亞太JW萬豪酒店,長風大宴會廳 報名:http://t.cn/RFG85AW 誠邀您屆時蒞臨峰會,共話容器、微服務、Kubernetes等新技術的落地應用。 英文原文鏈接: https://thenewstack.io/history-service-mesh/
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。