1. 程式人生 > >Google、IBM和Lyft開源其大型微服務系統管理工具Istio

Google、IBM和Lyft開源其大型微服務系統管理工具Istio

谷歌、IBM 與 Lyft 三方已經共同公佈了 Istio 專案的首次公開發行版。Istio 是一個開源專案,旨在提供一種統一化的微服務連線、安全保障、管理與監控方式。我們目前的發行版主要面向 Kubernetes 環境 ; 當然,在後續的升級當中,我們還將逐步實現對虛擬機器以及 Cloud Foundry 等其它環境的支援能力。

Istio 專案能夠為微服務架構提供流量管理機制,同時亦為其它增值功能(包括安全性、監控、路由、連線管理與策略等)創造了基礎。這款軟體利用久經考驗的 Lyft Envoy 代理進行構建,可在無需對應用程式程式碼作出任何發動的前提下實現可視性與控制能力。Istio 專案是一款強大的工具,可幫助 CTO/CIO 們立足企業內部實施整體性安全、政策與合規性要求。

專案背景

編寫具備高可靠性、鬆散耦合的微服務式生產級應用程式往往存在一定程度的挑戰。隨著整體式應用程式被拆分為微服務,軟體團隊必須面臨並應對在分散式系統當中實現服務整合所帶來的諸多難題:其必須考慮服務發現、負載均衡、容錯性、端到端監控、面向功能實驗的動態路由以及最為重要的兩大前提——合規性與安全性。

目前行業中處理上述挑戰的方法多種多樣,往往由各類庫、指令碼乃至 Stack Overflow 片段拼湊而成,這直接導致其包含大量不同程式語言與執行時,功能可觀察性差且往往會令最終安全性受到負面影響。

其中一類解決方案在於立足常規 RPC 庫(例如 rRPC)實施標準化調整,但其全面採用會給企業帶來高昂成本,同時亦會迫使其放棄部分根本無法變更的舊有應用程式。很明顯,運營人員需要一套靈活的工具包,確保其微服務始終具備安全性、相容性、可追蹤性以及高可用性 ; 與此同時,開發人員則需要能夠在生產環境中嘗試不同功能或者部署金絲雀版本(canary releases),並保證其不會影響到整體系統。

解決方案:服務網格

想象一下,如果我們能夠以透明化方式在服務與網路之間插入一個基礎設施層,藉此為運營人員提供必要的控制能力,同時幫助開發人員不必在其程式碼當中引入分散式系統帶來的專用解決方案,那麼前面提到的諸多挑戰將迎刃而解。正如微服務架構能夠幫助各功能團隊實現彼此解耦,服務網格則能夠幫助運營人員從應用程式功能開發與釋出流程當中解耦出來。Istio 專案即因此而生,它能夠以系統化方式將代理機制接入至網路路徑當中,從而將不同微服務轉化為綜合性服務網格。

谷歌、IBM 與 Lyft 三方聯手開發出的 Istio 專案基於我們為內部及企業客戶構建及運營大規模微服務架構中積累起的豐富經驗,旨在為微服務架構的開發與維護工作提供可靠基礎。谷歌與 IBM 雙方長久以來一直在在內部應用程式中採用此類大規模微服務架構,同時亦具備豐富的高敏感度 / 監管環境企業客戶服務經驗。而 Lyft 則開發出 Envoy 以解決其內部可操作性挑戰。Lyft 在經過一年的成功使用之後,決定將 Envoy 推向開源,其能夠管理超過 100 項服務、跨越上萬套虛擬機器且每秒可處理 200 萬條請求。

Istio 的優勢

  • 叢集規模可視性:在故障狀況出現時,運營人員需要利用多種工具以始終關注叢集執行狀況並分析微服務狀態圖表。Istio 專案能夠監控與應用程式及網路活動相關的資料,利用 Prometheus 與 Grafana 對這部分資料加以渲染,而後將相關指標與日誌記錄傳送至任何收集、聚合與查詢系統當中以實現功能擴充套件。Istio 專案亦利用 Zipkin 追蹤分析效能熱點並對分散式故障模式加以診斷。
  • 彈性與效率:在開發微服務時,運營人員需要假設網路本身處於不可靠狀態。運營人員能夠利用重試、負載均衡、流量控制(HTTP/2)以及斷路補償等方式解決由網路可靠性低下所造成的各類常見故障模式。Istio 專案則提供一種統一方法以配置上述功能,使得運營人員能夠更為輕鬆地運作高彈性水平服務網格。
  • 開發人員生產力:Istio 專案能夠確保開發人員專注於利用已選擇的程式語言構建服務功能,從而極大提升其生產能力。另外,Istio 專案則負責以統一化方式處理彈性與網路挑戰。開發人員無需將解決方案的分散式系統問題解決機制引入編寫的程式碼當中。Istio 專案還能夠支援 A/B 測試、金絲雀部署以及故障注入等常用功能,旨在進一步提高生產效率。
  • 政策驅動型運營:Istio 專案能夠授權具有不同職能的團隊以實現獨立運作。其將叢集運營人員與功能開發人員進行週期性剝離,從而在無需更改程式碼的前提下提升安全性、監控能力、擴充套件性與服務拓撲水平。運營人員能夠精確控制生產流量中各個子集的路由方式,從而匹配新的服務版本。另外,運營人員還能夠在流量中注入故障或者提高延遲水平,用以測試服務見長的彈性 ; 同時設定速率限制以防止服務過載。Istio 專案還可用於強制執行合規性要求,例如在服務之間定義 CL 以確保僅具備授權的服務間可相互通訊。
  • 預設安全:分散式計算當中經常存在著大量網路安全問題。Istio 專案允許運營人員利用 TLS 連線以認證並保護各服務之間的所有通訊,而不會給開發人員或者運營人員帶來由證書管理造成的額外負擔。我們的安全框架與新的 SPIFFE 規範保持一致,事實上谷歌公司一直在內部廣泛使用類似的保障性系統。
  • 增量化採用:我們在設計 Istio 專案時充分考慮到網路內所執行各服務的透明性,允許團隊隨著時間推移逐步採用 Istio 提供的各項功能。採用方可以先從啟用叢集範圍內可視性起步,並在 Istio 在環境中的表現感到滿意後根據實際需要啟用其它功能。

加入我們共同開啟新的旅程

Istio 屬於完全開源之專案。今天,我們釋出了其 0.1 版本,適用於 Kubernetes 叢集。未來我們計劃每三個月進行一次主要版本更新,其中包括支援其它環境。我們的目標是幫助開發人員與運營人員以敏捷性、底層網路全面可視性以及立足一切環境的統一化控制與安全保障能力為前提,釋出並運營屬於您自己的微服務體系。我們期待著與您在 Istio 社群中並肩協作,並以合作伙伴的角度共同實現各項發展目標。如果您有興趣,請以下連結檢視我們的發展路線圖。

https://istio.io/docs/reference/release-roadmap.html

istio專案的github連結:

https://github.com/istio

原文來自微信公眾號:聊聊架構