常见灰度实现方案
在開發中經常會遇到這種場景,開發了一個新的功能,需要在小范圍內先體驗一下,如果沒問題,再推廣到所有用戶使用,這樣可以降低新功能上線出問題帶來的風險,控制風險范圍,那么通常有前端實現灰度和后端實現灰度的方案,也有網關層的灰度方案,這里先簡單說一下后端實現灰度的方案。
最簡單的方案是通過白名單判斷,用某種ID為區分條件,比如userId,設置白名單,在白名單中的ID所發的請求才會走灰度的邏輯。這種方案適合于做線上回歸,只有內部特定人可以看到灰度的結果。
另一種是按照百分比設置灰度,方案如下,以userId為例:
則根據 userId 計算出一個 0~1 范圍的 hash 值,hash 大于 x,則命中灰度,否則未命中
x = 1 - (shunt / 100)
shunt 是限流百分比(0 ~ 100)
如果 shunt 是 0,則表示關閉灰度,因為 hash 不可能大于 1
如果 shunt 是 100,則表示所有用戶都走灰度,因為 hash 必然大于 0
如果 shunt 是 50,則表示一半用戶走灰度,一半用戶走正常。
總結
- 上一篇: 【深夜思考】比较好的java开发公司
- 下一篇: WORD里网址断行排版问题