如何設(shè)計(jì)灰度

灰度的分類

物理灰度

新舊功能的代碼,物理隔離成兩套代碼。
對(duì)于后端,可以通過不同集群、不同接口實(shí)現(xiàn);
對(duì)于前端,可以通過不同頁面路由等方式實(shí)現(xiàn)。

邏輯灰度

新舊功能的代碼,還在同一套代碼,通過if else實(shí)現(xiàn)邏輯上的灰度

物理灰度與邏輯灰度的選擇建議

  1. 如果灰度時(shí)間預(yù)計(jì)會(huì)很長,建議選擇邏輯灰度,否則灰度期間,迭代內(nèi)容需要在2套代碼上進(jìn)行重復(fù)開發(fā)
  2. 如果代碼改動(dòng)的地方比較多,建議使用物理灰度,否則需要在很多地方加if else,影響代碼質(zhì)量,并且后期灰度清理(刪除灰度判斷代碼和舊邏輯)工作量比較大

灰度的實(shí)現(xiàn)

場(chǎng)景1 前端根據(jù)用戶是否在灰度內(nèi),展示不同樣式

后端提供一個(gè)灰度判斷接口boolean is-gray()

image.png

場(chǎng)景2 后端使用不同集群實(shí)現(xiàn)灰度

第一次訪問頁面,前后端交互時(shí)序


image.png

第二次訪問頁面


image.png

灰度的維度

常見的灰度維度有單據(jù)、日期、品類、地區(qū)、人、機(jī)器等等,視實(shí)際項(xiàng)目情況決定。

  1. 按單據(jù)維度灰度,可以按照單據(jù)的數(shù)字規(guī)律進(jìn)行灰度,比如:
    第1次灰度范圍: 單據(jù)尾號(hào)為1
    第2次灰度范圍: 單據(jù)尾號(hào)為1、2
    第3次灰度范圍: 單據(jù)尾號(hào)為1、2、3
    ...
    逐步放量,最終達(dá)到100%灰度。
    除了尾號(hào),還可以按取余結(jié)果、單復(fù)數(shù)等等

  2. 按日期維度灰度,比如:
    第1次灰度范圍: 上線當(dāng)天之后新增單據(jù)
    第2次灰度范圍: 上線前1個(gè)月之后新增單據(jù)
    第2次灰度范圍: 上線前3個(gè)月之后新增單據(jù)
    ...
    最后一次灰度范圍: 全量單據(jù)

  3. 涉及前端樣式改造時(shí),如果按照單據(jù)、日期、品類等維度灰度,如果同一個(gè)用戶看到的不同單子樣式不同,會(huì)造成用戶體驗(yàn)不一致

  4. 涉及前端樣式改造時(shí),如果要對(duì)列表頁灰度,除非能保證同一列表頁上的元素,都在灰度內(nèi)或者灰度外,否則就只能按人灰度,否則同一列表頁,無法展示不同樣式

  5. 需要考慮灰度規(guī)則是否有數(shù)據(jù)傾斜問題,可能理論上是均勻灰度,實(shí)際上數(shù)據(jù)傾斜嚴(yán)重。比如按單據(jù)尾號(hào)維度,尾號(hào)為1放入第1次灰度,理論上占10%,實(shí)際上數(shù)據(jù)庫統(tǒng)計(jì)結(jié)果可能占40%

  6. 按機(jī)器維度灰度,可以先把新代碼發(fā)布到1臺(tái)小流量機(jī)器(占10%入流量),停留觀察一段時(shí)間,再逐步發(fā)布其他機(jī)器

  7. 假設(shè)是對(duì)某個(gè)舊功能進(jìn)行升級(jí),按人的維度灰度時(shí),可以先撈出一些使用這個(gè)舊功能概率比較大的人群進(jìn)行灰度,避免灰度期間,沒有流量進(jìn)入改造過的代碼

  8. 假如數(shù)據(jù)模型發(fā)生了變更,那么灰度期間,新舊數(shù)據(jù)模型共存,除了對(duì)數(shù)據(jù)讀寫功能進(jìn)行灰度判斷,每次放量前,還需要進(jìn)行刷數(shù),把舊數(shù)據(jù)模型升級(jí)成新數(shù)據(jù)模型

  9. 接口轉(zhuǎn)發(fā)場(chǎng)景(http接口協(xié)議不變,舊接口轉(zhuǎn)發(fā)到新接口實(shí)現(xiàn)舊接口下線),通過網(wǎng)關(guān)配置接口轉(zhuǎn)發(fā),可以利用網(wǎng)關(guān)的灰度能力逐漸放量,比如一灰10%的流量轉(zhuǎn)發(fā)到新接口,二灰30%流量轉(zhuǎn)發(fā)到新接口...直到100%放量

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容