中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nginx+KV db怎么進行AB灰度測試

發布時間:2021-11-02 10:58:03 來源:億速云 閱讀:293 作者:柒染 欄目:系統運維

Nginx+KV db怎么進行AB灰度測試,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

之前聽過淘寶用nginx的一些場景,其中AB的灰度測試可能適用場景會比較普遍,當然大會上,并沒有詳細討論實現。

大概需求是: 網站類業務在更新new feature時,并不想讓全量用戶看到,可以針對地區性用戶開放此feature。大概構思了一個方式,使用 nginx+redis/memcache+IP庫實現,簡單的流程圖如下:

Nginx+KV db怎么進行AB灰度測試

當然其中的new feature server和normal server不必要一定得是物理上的服務器,可以是任意邏輯上分開的服務和http URI

所用的模塊是 ngx-lua-module, 以及一個基于ngx-lua寫的lib:  lua-resty-memcached或lua-resty-redis, 這里假設使用memcached作為ip數據的存儲,cache內保存以ip作為key,以true(1)或false(0)作為value的數據,nginx在請求到來時,從cache內以remote_addr(如果是用XFF頭,則對XFF做一次處理后獲取到real ip)作為key從cache內做一次get,判斷此req應該的轉發;

這里有一個問題是:cache內是保存具體的IP形式的方式,還是以CIDR的超網形勢存儲,若直接使用IP作為key,數據量不容小視,而且IP信息的準確度得有一定的保證才行;若使用CIDR的方式,則在nginx端又會增加一次IP轉換CIDR以及對get到的CIDR做比較(具體實現方法還沒想到), 復雜度會有所增加,個人偏向直接使用IP作為key,只要保證了IP的一定準確性,數據大小問題不大,現在遍地都是32G,64G內存的緩存。

若使用ip作為key,一個折中的辦法是每次進行ABtest的時候,flush緩存,只保存指定地區的ip數據即可,ngx在做get的時候,如果沒有返回,則認為此req是到normal server的.

管理平臺方面,只需要做個簡單的批量set緩存的功能就可以了,至于UI么,就看你給誰用了,自己用嘛,UI丑陋點就丑陋點了

性能和可用性方面:

增加了一次緩存的連接和get操作,理論上此開銷應該是很小的,ngx-lua實現的lua-resty-memcached有不少人做過測試,性能非常可觀.

可用性方面會增加一個當緩存斷線的風險點,通過settimeout,將緩存超時限制到一個較小的時間,影響較小,另外ABtest的方案也不應該常年累月的在線上,只有在有需求時,才需要這套系統吧,因此可用性方面對全局影響應該是較小的,相比新的feature上線時影響全部用戶的風險,這個冒險還是值得的。

上述暫時只是個人的思路,而且也還沒上線使用,實現方面只完成了nginx獲取key來判斷req轉發的驗證。

關于Nginx+KV db怎么進行AB灰度測試問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗源县| 东台市| 东乌珠穆沁旗| 高雄市| 麦盖提县| 德阳市| 吉木乃县| 浦北县| 嘉定区| 锦州市| 山西省| 定安县| 滕州市| 敦煌市| 上虞市| 东乡族自治县| 宁德市| 兴海县| 谢通门县| 大连市| 鄂尔多斯市| 习水县| 阿坝| 霍城县| 伊宁县| 巧家县| 巴塘县| 鄱阳县| 深州市| 东乡族自治县| 门源| 富阳市| 西青区| 屏东市| 十堰市| 隆尧县| 中江县| 滦南县| 临沂市| 昂仁县| 乐清市|