服務灰度發布
適用場景
通常產品優化迭代的方式,是直接將某版本上線發布給全部用戶,一旦遇到線上事故(或BUG),對用戶的影響極大,解決問題周期較長,甚至有時不得不回滾到前一版本,嚴重影響了用戶體驗。
灰度發布是版本升級平滑過渡的一種方式,當版本升級時,使部分用戶使用高版本,其他用戶繼續使用低版本,待高版本穩定后,逐步擴大范圍把所有用戶流量都遷移到高版本上面來。
價值
應用服務網格為應用治理提供多種灰度發布功能,在初始灰度的時候可以發現、調整問題,以保證其影響度和整體系統的穩定,穩定高效地推動企業應用的迭代升級。
優勢
- 內置灰度流程:基于細粒度的分流規則,在ASM中內置了多種典型的灰度發布流程,提供一個灰度發布的向導,方便用戶便捷的進行灰度發布實踐。在一個服務版本正常工作,正常處理流量的同時,用戶可以創建一個新的灰度版本。當灰度版本啟動成功后,引導用戶配置灰度規則來切分流量。
- 靈活的灰度策略:灰度規則可以是基于權重的按比例切分流量,也可以根據服務訪問的內容來將特定內容的請求發往灰度版本,對于常用的HTTP協議,如請求中的OS、瀏覽器、Cookie和Header信息等,在配置了灰度規則后,可以實時的觀察到多個線上版本的運行和訪問信息,從而在向導中一鍵式完成版本選擇,將所有流量都切換到最終選定的版本上。
- 自動化灰度:用戶也可以將以上灰度發布流程進行自動化配置,從而實現無人值守的灰度發布。即只要灰度版本運行成功就會自動觸發預制的灰度策略給灰度版本分配流量,在流量運行特定的時間后,根據預制規則自動的切換流量完成灰度發布。
- 應用灰度:除了服務粒度的灰度發布外,用戶也可以對多個服務組成的應用,在入口服務處配置灰度規則,對一組服務使用同樣的分流策略,進行灰度發布。
服務流量管理
適用場景
流量治理是一個非常寬泛的話題,例如:
- 動態修改服務間訪問的負載均衡策略,如根據某個請求特征做會話保持。
- 同一個服務有兩個版本在線,將一部分流量切到某個版本上。
- 對服務進行保護,例如限制并發連接數、限制請求數、隔離故障服務實例等。
- 動態修改服務中的內容,或者模擬一個服務運行故障等。
價值
在Istio中實現這些服務治理功能時無須修改任何應用的代碼。
應用服務網格ASM基于Istio可以為管理的服務提供非侵入的流量治理能力。根據服務的協議,提供策略化、場景化的網絡連接管理。在應用拓撲上對選定服務的選定端口,根據需要配置各種不同的治理規則。
優勢
- 負載均衡:配置各種負載均衡策略,如隨機、輪詢、最大連接數等,還可以配置會話保持將流量發到特定的服務實例上。
- 連接池:通過連接池管理,可以對四層協議配置TCP的最大連接數、連接超時等連接配置,對七層協議配置最大等待HTTP請求數、最大請求數、每個連接的最大請求數、最大重試次數等,從而防止一個服務的失敗級聯影響到整個應用。
- 熔斷:通過熔斷配置實例被驅逐前的連續錯誤次數、驅逐間隔時長、最小驅逐時間、最大驅逐比例等參數,從而定期考察被訪問的服務實例的工作情況,如果連續出現訪問異常,則將服務實例標記為異常并進行隔離,在一段時間內不為其分配流量。過一段時間后,被隔離的服務實例會再次被解除隔離,嘗試處理請求,如果還不正常,則被隔離更長的時間。從而實現異常服務實例的故障隔離和自動故障恢復。
- 故障注入:通過對選定的服務注入中斷的故障、延時故障來構造故障場景,從而無需修改代碼即可進行故障測試。
端到端的透明安全
適用場景
眾所周知,將傳統的單體應用拆分為一個個微服務固然帶來了各種好處,包括更好的靈活性、可伸縮性、重用性,但微服務也同樣面臨著特殊的安全需求,如下所示:
- 為了抵御中間人攻擊,需要用到流量加密。
- 為了提供靈活的服務訪問控制,需要用到TLS和細粒度訪問策略。
- 為了決定哪些人在哪些時間可以做哪些事,需要用到審計工具。
面對這些需求應用服務網格提供全面的安全解決方案,包括身份驗證策略,透明的TLS加密以及授權和審計工具。
價值
- 默認的安全性:無需修改即可保證應用程序代碼和架構的安全性。
- 縱深防御:與現有的安全系統結合并提供多層防御。
- 零信任網絡:在不受信任的網絡上構建安全解決方案。
優勢
- 非侵入安全:應用服務網格是以一種安全基礎設施的方式向用戶提供透明的安全能力,讓不涉及安全問題的代碼安全運行,讓不太懂安全的人可以開發和運維安全的服務,不用修改業務代碼就能提供服務訪問安全。應用服務網格提供了一個透明的分布式安全層,并提供了底層安全的通信通道,管理服務通信的認證、授權和加密,提供Pod到Pod、服務到服務的通信安全。開發人員在這個安全基礎設施層上只需專注于應用程序級別的安全性。
- 細粒度授權:在認證的基礎上,就可以進行服務間的訪問授權管理,可以控制某個服務,或者服務的一個特定接口進行授權管理。如只開放給特定的一個Namespace下的服務,或者開放給某個特定的一個服務。源服務和目標服務可以在不同的集群,甚至源服務的不同實例在不同的集群,目標服務的不同實例在不同的集群。
服務運行監控
適用場景
運營容器化的基礎設施帶來了一系列新的挑戰。我們需要增強容器、評估API端點的性能以及識別出基礎設施中的有害部分。Istio服務網格可在不修改代碼的情況下實現API增強,并且不會帶來服務延遲。
價值
應用服務網格為網格內的所有服務通信生成詳細的遙測,這種遙測技術提供了服務行為的可觀察性,允許運營商對其應用程序進行故障排除、維護和優化,而不會給服務開發人員帶來任何額外負擔。通過應用服務網格,運營商可以全面了解被監控的服務如何與其他服務以及組件本身進行交互。
優勢
- 非侵入監控數據采集:在復雜應用的場景下,服務間的訪問拓撲,監控等都是我們對服務整體運行狀況進行管理,服務訪問異常時進行定位定界的必要手段。服務網格技術的一項重要能力就是以應用非侵入的方式提供這些監控數據的采集,用戶只需關注自己的業務開發,無需額外關注監控數據的生成。
- 靈活的服務運行管理:在拓撲圖上通過服務的訪問數據,可以直觀的觀察到服務的健康狀況,服務間的依賴情況。并且可以對關心的服務進行下鉆,從服務級別下鉆到服務版本級別,還可以進一步下鉆到服務實例級別。通過實例級別的拓撲可以觀察到配置了熔斷規則后,網格如何隔離故障實例,使其逐漸接收不到流量。并且可以在故障實例正常時,如何進行實例的故障恢復,自動給恢復的實例重新分配流量。