文章目錄
- 場景
- 開發環境多服務、多分支協作
- 生産環境灰階釋出
- 流量染色
- 染色
- 調用鍊路管控
- 網關服務篩選-坑
- 服務篩選
- Ref
協作開發與灰階釋出是微服務架構在流量治理能力方面的兩個展現,本文結合go-micro實踐對流量進行染色,實作開發環境的多分支協作, 以及生産環境的灰階釋出。
-
組測試QA
和v1.2
鍊路v2.0
-
+ v2.0
v1.2
-
組僅關注v1.1
的版本開發v1.1
-
v1.1
master
-
組在v1.2
開發新版v1.1
服務srv-2
-
v1.2
v1.1
master
-
v2.0
v2.0
-
v2.0
鍊路master
生産環境灰階釋出
流量染色
流量染色核心:
- gateway對請求進行染色
- 染色規則可以是
、host
字段、header
終端資訊、使用者篩選、流量比例等等agent
- 染色資訊在服務間傳遞
-
中go-micro
請求的http
以及header
rpc
metadata
- 服務調用時根據染色資訊對服務進行篩選,實作調用鍊路的管控
我們基于
go-micro
實踐的是實作多鍊路染色,染色鍊路帶有優先級,如開發環境多服務、多分支協作的
v1.2
組, 雖然
v1.1
v1.2
都有
srv-2
服務,但我們在染色資訊中
v1.2
在前優先選擇,是以可以實作多分支同時染色(PS:如果兩個分支中兩個服務的優先級相反無法實作,需要設計更複雜的染色方案)
網關染色及實作參考我實作的兩個
client wrapper
插件
chain
染色
在網關對流量進行染色,基于
mciro
的插件,可以友善的實作,具體染色規則需要根據自身需求實作。
1 2 3 4 5 6 7 8 | // 鍊路染色 api.Register(chain.New(chain.WithChainsFunc(func(r *http.Request) []string { return []string{"v2.0", "v1.2"} }))) web.Register(chain.New(chain.WithChainsFunc(func(r *http.Request) []string { return []string{"v2.0"} |
調用鍊路管控
go-micro
實作調用鍊路管控,最大的障礙就是網關,
API
及
Web
均不支援服務篩選,需要自己二次開發,相關問題也回報給社群看後續計劃#1003。
網易輕舟微服務9月重大更新:流量染色與gRPC服務托管
特性簡介
根據流量協定設定對應的流量染色規則,對指定的流量進行染色标記,并在整個調用鍊中攜帶該标記,以便于對染色流量進行跟蹤和路由。
典型使用場景
• 全鍊路灰階釋出
新版本在正式釋出前,可以使用流量染色控制先進行小規模驗證,通過收集使用體驗的資料,對應用新版本的功能、性能、穩定性等名額進行評判,然後再全量更新。即使某個新版本出現問題,也隻會影響已染色流量,不會蔓延至整個系統,進而保證業務的正常運作。
• 多測試環境管理
當使用者需要在一個測試環境中管理多個測試分支時,可以通過流量染色标記不同的測試分支流量,将該流量路由至測試版本,進而提供整體測試環境的複用性的同時,避免了不同測試分支的互相幹擾。
産品優勢
• 支援多種協定類型:包括 HTTP、RPC 等;
• 流量入口:支援以 NSF 服務或 API 網關為流量入口;
• 支援 MQ 等中間件流量染色;
• 支援流量穿梭:對于染色鍊路中未指定的服務,仍允許再請求中攜帶染色标記并在下一跳路由回染色鍊路。
• 支援多個流量染色配置:允許對一套微服務系統的不同流量進行染色,甚至允許同一個微服務同時參與多個流量染色。
gRPC 服務托管
将 gPRC服務托管到 NSF微服務架構,使用者隻需要關注 gRPC服務自身的邏輯,無需再關注注冊中心、配置中心和中繼資料中心的搭建和維護。托管後還可以使用 NSF提供的限流降級、拓撲關系、路由、及監控等能力,而且整個托管過程是無侵入的,不會增加使用者的了解成本和開發成本。
gRPC 治理能力
• 支援 gRPC服務的注冊與發現;
• 檢視 gRPC 服務執行個體清單;
• 檢視 gRPC 服務監控;
• 支援動态配置;
• 檢視 gRPC 服務依賴關系和服務拓撲;
• 支援 gPRC 服務的限流、降級、容錯等治理能力;
• 支援 gRPC 服務的路由管理;
• 支援 gRPC 服務的流量染色;
• 通過知識庫管理 gRPC 服務中繼資料;
gRPC 服務托管方式
以 Java 應用為例,基于無侵入的設計方式,将 gPRC 服務托管到 NSF 隻需要以下操作:
1、從 NSF 控制的開發工具頁面下載下傳 NSF Agent;
2、在開發工具頁面,按照指引生成 Agent 配置檔案;其中,服務類型選擇 gPRC;将配置檔案放入工程下的配置檔案夾中;
3、啟動 gRPC 服務,在啟動指令中,通過-jar引入 NSF Agent 的 JAR檔案;
4、登入輕舟 NSF 控制台,檢視服務注冊結果。