開放平台灰度發布分享
灰度發布
指能夠達到平滑過渡的一種發布方式。
灰度發布的目的主要有:
- 規避一定的發布風險,降低產品迭代升級所影響的範圍。
- 分流控製,靈活選擇用戶參與產品測試。逐步擴大用戶。
- 快速獲取用戶的使用情況,完善產品功能,提升產品質量。
其中的要點是能夠靈活精準選取參與使用的用戶,全麵準確的獲取灰度用戶使用情況信息,分析、總結、完善;達到降低發布風險、減少bug帶來的影響。
上線流程是怎樣的?
一段時期內,灰度環境與正式環境並行處理用戶請求。可以認為是同層級的環境,灰度範圍根據使用情況,逐步增加用戶使用比率,最終完全替代老的係統或功能。
用戶請求處理流程
靈活的用戶篩選策略,用戶請求無感知。
開放平台的實現
開放平台的灰度發布實現是在接口層麵的,可以是單個接口,也可以是整個業務服務(一批接口)。
這個圖隻是抽取灰度相關的一些點;
網關時序圖
分流流程圖
百分比和參數對是邏輯判斷的核心;百分比計算需要記錄正常環境和灰度環境的處理量,計數功能類主要使用了LongAdder類,提高大並發下的效率。
特點
- 配置中心一鍵開/關灰度功能
- 動態設置分流策略,及時生效,不需要重啟服務
- 支持按參數分流、按百分比分流、兩種同時使用
- 參數對可以配置多個,關係為“與”;參數值可以設置多個,以逗號分隔,關係為“或”,可以設置模煳匹配,以“*”表示,“*”隻能放在開頭或者結尾
- 適用於灰度發布、AB測試、和負載均衡
- 支持以服務分組級別的灰度(利用分流策略篩選用戶,不是真正意義上的灰度發布)
灰度策略管理
API灰度策略設定
統計分析報表
其他
- 如何精確的篩選用戶?
公共請求參數有appKey、IP、clientId(設備ID號),
業務請求參數由接口自定義控製,可根據實際的業務需求,配合使用接口所有參數,來達到用戶篩選。
最後更新:2017-07-05 14:03:01