<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          穩(wěn)定性保障,如何慢慢放量灰度

          共 1584字,需瀏覽 4分鐘

           ·

          2021-12-10 07:39


          點(diǎn)擊上方藍(lán)字“設(shè)為星標(biāo)”



          大家好,我是架構(gòu)擺渡人。這是實踐經(jīng)驗系列的第二篇文章,這個系列會給大家分享很多在實際工作中有用的經(jīng)驗,如果有收獲,還請分享給更多的朋友。

          ?

          上篇文章給大家分享了開關(guān)的應(yīng)用技巧,通過開關(guān)去保證上線時的穩(wěn)定性。但是開關(guān)還是屬于一刀切的那種,如果流量特別大的情況下,影響面還是挺大的,所以今天就給大家再補(bǔ)充一種方式,灰度放量。

          ?

          舉個例子說明下:比如你在重構(gòu)訂單詳情接口,這個接口之前是在A服務(wù)里面,由于后續(xù)服務(wù)拆分更精細(xì)化,新拆了一個服務(wù),需要將這個接口遷移到新服務(wù)里面去。此時最簡單的做法就是把代碼復(fù)制過去,然后讓客戶端用新的詳情接口。

          ?

          但是這樣老版本的APP怎么辦?這個方案只能新版本的APP可以使用。所以對外的接口是不能變的,內(nèi)部需要去做路由動作,那么最方便的肯定是在網(wǎng)關(guān)做了,所以網(wǎng)關(guān)是特別適合做灰度邏輯的地方,下面我們先來看網(wǎng)關(guān)如何做灰度。



          網(wǎng)關(guān)統(tǒng)一灰度





          網(wǎng)關(guān)默認(rèn)是路由的/v1/order/detail接口,現(xiàn)在新加了/v2/order/detail接口,如果全部切過去,萬一有問題,所有用戶都會受到影響,所以需要灰度放量來將風(fēng)險降到最低。

          ?

          ?

          網(wǎng)關(guān)內(nèi)部可以對指定的用戶路由到v2版本的接口,也可以根據(jù)地區(qū)路由,方式有很多種,常用的路由方式有哪些我會在下面進(jìn)行講解。


          應(yīng)用內(nèi)部自己灰度




          除了在網(wǎng)關(guān)進(jìn)行灰度,另一種方案就是應(yīng)用內(nèi)部自己灰度。也就是說APP請求到網(wǎng)關(guān),網(wǎng)關(guān)到具體的服務(wù),這個服務(wù)此時還是之前的老服務(wù),需要在這個老服務(wù)調(diào)用新服務(wù)的接口,然后返回,這就是應(yīng)用內(nèi)部自己灰度的方式。

          ?

          一旦灰度完成,老服務(wù)內(nèi)部的代碼就可以刪除,當(dāng)請求過來的時候只需要路由到請服務(wù)即可。然后可以將網(wǎng)關(guān)路由的地址直接改成新服務(wù)的地址,此時老服務(wù)內(nèi)的接口可以直接刪除,完成遷移動作。

          ?

          ?

          灰度方式介紹




          ?



          用戶白名單灰度

          此方式較為簡單,就是構(gòu)建一個用戶的白名單,可以用手機(jī)號或者用戶ID,白名單可以放在數(shù)據(jù)表里面,也可以放在配置中心。從性能角度考慮放配置中心更合適,更新后也能實時生效。

          ?

          也就是當(dāng)前請求的用戶在你配置的白名單里面,就讓他訪問新版本的接口,不在就默認(rèn)還是舊接口。通過這種方式觀察一段時間,如果沒有問題,就可以加大灰度人數(shù)或者全量放開。

          ?

          ?



          用戶百分比灰度

          提取用戶ID的后兩位,然后產(chǎn)生一個隨機(jī)數(shù),如果匹配上了,這個用戶就灰度中了。




          百分比灰度

          百分比灰度也是一種常用的灰度方式,此方式不會固定用戶,而是采用隨機(jī)的方式進(jìn)行。如果設(shè)置了10%的灰度比例,也就是100次請求中有10次請求會被灰度中,會訪問新的接口。
          ?
          當(dāng)然為了影響降到最低,也可以實現(xiàn)千分比,萬分比,慢慢調(diào)高比例,一點(diǎn)點(diǎn)往上灰度,這種方式非常穩(wěn)妥。
          ?

          偽代碼如下:

          ?

          public static void main(String[] args) {    // 灰度比例,配在配置中心    int grayScale = 10;    int probability = new Random().nextInt(100);    if (probability < grayScale) {        // 調(diào)用 /v2/order/detail    } else {        // 走本地老邏輯    }}

          ?

          大家好,我是從古代穿越過來的美男子:架構(gòu)擺渡人。我將把我的武功秘籍全部傳授與你們,覺得有用請分享給身邊的朋友。來個三連吧,感謝各位!另外我還在B站錄制《真實訂單業(yè)務(wù),億級數(shù)據(jù)帶你實戰(zhàn)分庫分表》的實戰(zhàn)課程,記得去學(xué)習(xí)哦!



          點(diǎn)擊閱讀原文直達(dá)主頁

          瀏覽 37
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操视频网站 | 水蜜桃成人在线 | 成人免费在线视频网站 | 美女艹逼视频网站 | 一级片电影中文字幕 |