日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用版本和別名實(shí)現(xiàn)灰度發(fā)布

更新時(shí)間:

您可以為服務(wù)發(fā)布一個(gè)或多個(gè)版本,版本就相當(dāng)于服務(wù)的快照,當(dāng)您發(fā)布版本時(shí),函數(shù)計(jì)算會(huì)為服務(wù)生成快照,并自動(dòng)分配一個(gè)版本號(hào)與其關(guān)聯(lián)。您還可以為服務(wù)的版本創(chuàng)建別名,指向該版本。結(jié)合服務(wù)的版本和別名,您可以輕松實(shí)現(xiàn)發(fā)布、回滾以及灰度發(fā)布等功能。本文介紹如何在函數(shù)計(jì)算控制臺(tái)使用服務(wù)的版本和別名實(shí)現(xiàn)灰度發(fā)布。

視頻演示

灰度發(fā)布流程

image

前提條件

步驟一:準(zhǔn)備函數(shù)并測(cè)試

當(dāng)您初次創(chuàng)建一個(gè)服務(wù)以及該服務(wù)下的函數(shù)時(shí),該服務(wù)的版本號(hào)為L(zhǎng)ATEST。您可以調(diào)試LATEST版本下的函數(shù)直至版本穩(wěn)定運(yùn)行。您可以通過(guò)控制臺(tái)執(zhí)行LATEST版本下的函數(shù)。

  1. 登錄函數(shù)計(jì)算控制臺(tái),在左側(cè)導(dǎo)航欄,單擊服務(wù)及函數(shù)
  2. 在頂部菜單欄,選擇地域,然后在服務(wù)列表頁(yè)面,單擊目標(biāo)服務(wù)。
  3. 函數(shù)管理頁(yè)面,單擊目標(biāo)函數(shù)名稱,然后在函數(shù)詳情頁(yè)面,單擊函數(shù)代碼頁(yè)簽。
  4. 在代碼編輯器中,修改代碼為查看函數(shù)版本的代碼,單擊部署代碼,然后單擊測(cè)試函數(shù)

    查看函數(shù)版本的代碼示例如下。

    module.exports.handler = function(eventBuf, context, callback) {
     var qualifier = context['service']['qualifier']
     var versionId = context['service']['versionId']
     console.log('Qualifier from context:', qualifier);
     console.log('VersionId from context: ', versionId);
     callback(null, qualifier);
    };
    # -*- coding: utf-8 -*-
    
    def handler(event, context):
      qualifier = context.service.qualifier
      versionId = context.service.version_id
      print('Qualifier from context:' + qualifier)
      print('VersionId from context:' + versionId)
      return 'hello world'
    <?php
    function handler($event, $context) {
      $qualifier = $context["service"]["qualifier"];
      $versionId = $context["service"]["versionId"];
      print($qualifier);
      print($versionId);
    
        return "hello world";
    }
    using System;
    using System.IO;
    using Aliyun.Serverless.Core;
    using Microsoft.Extensions.Logging;
    
    namespace Desktop
    {
    
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Hello World!");
            }
        }
    
        class App
        {
            public string Handler(Stream input, IFcContext context)
            {
                ILogger logger = context.Logger;
                var qualifier = context.ServiceMeta.Qualifier;
                var versionId = context.ServiceMeta.VersionId;
                logger.LogInformation("Qualifier from context: {0}", qualifier);
                logger.LogInformation("versionId from context: {0}", versionId);
                return "hello word";
            }
        }
    }

    執(zhí)行完成后,可以查看日志輸出。從日志輸出中,可以看到表示版本信息的字段qualifier的值為L(zhǎng)ATEST,即本次執(zhí)行的函數(shù)為L(zhǎng)ATEST版本下的函數(shù)。

步驟二:發(fā)布版本并測(cè)試

當(dāng)LATEST版本的服務(wù)穩(wěn)定時(shí),就可以發(fā)布該版本的服務(wù),使用穩(wěn)定的版本服務(wù)線上的請(qǐng)求。具體操作,請(qǐng)參見(jiàn)發(fā)布版本

新版本發(fā)布后,您可以通過(guò)控制臺(tái)執(zhí)行新版本下的函數(shù)。

  1. 登錄函數(shù)計(jì)算控制臺(tái),在左側(cè)導(dǎo)航欄,單擊服務(wù)及函數(shù)
  2. 在頂部菜單欄,選擇地域,然后在服務(wù)列表頁(yè)面,單擊目標(biāo)服務(wù)。
  3. 函數(shù)管理頁(yè)面,在版本下拉框選擇新版本的版本號(hào)。

    version1

  4. 單擊目標(biāo)函數(shù)名稱,單擊函數(shù)代碼頁(yè)簽,然后單擊測(cè)試函數(shù)

    執(zhí)行完成后,可以查看執(zhí)行日志。從日志輸出中,可以看到函數(shù)執(zhí)行時(shí)的版本信息qualifier為1,解析出的versionId為1,即本次執(zhí)行的函數(shù)為版本1下的函數(shù)。

步驟三:使用別名切換流量

新版本上線后,您可以創(chuàng)建一個(gè)別名,設(shè)置別名指向該版本。當(dāng)該版本更新時(shí),可將別名指向的版本更改為更新的版本。調(diào)用方無(wú)需關(guān)心服務(wù)的具體版本,只需要使用正確的別名即可。關(guān)于創(chuàng)建別名的具體步驟,請(qǐng)參見(jiàn)創(chuàng)建別名

別名創(chuàng)建完成后,您可以通過(guò)控制臺(tái)驗(yàn)證是否執(zhí)行了正確版本的函數(shù)。

本文以別名alias1指向版本1為例。

  1. 登錄函數(shù)計(jì)算控制臺(tái),在左側(cè)導(dǎo)航欄,單擊服務(wù)及函數(shù)
  2. 在頂部菜單欄,選擇地域,然后在服務(wù)列表頁(yè)面,單擊目標(biāo)服務(wù)。
  3. 函數(shù)管理頁(yè)面,單擊目標(biāo)函數(shù)名稱。
  4. 在函數(shù)詳情頁(yè)面的右上方,在版本或別名下拉列表中選擇新創(chuàng)建的別名alias1

    choose alias

  5. 單擊函數(shù)代碼頁(yè)簽,然后單擊測(cè)試函數(shù)

    執(zhí)行完成后,可以查看日志輸出。從日志輸出中,可以看到函數(shù)執(zhí)行時(shí)的版本信息qualifieralias1,解析出的versionId1,即本次執(zhí)行的函數(shù)為別名alias1下的函數(shù),該別名指向版本1

新版本開(kāi)發(fā)完成后,需要使用灰度版本幫助新版本的穩(wěn)定發(fā)布。

  1. 發(fā)布新版本2。具體操作,請(qǐng)參見(jiàn)發(fā)布版本

    發(fā)布完成后,可在版本列表中查看新發(fā)布的版本。

  2. 在左側(cè)導(dǎo)航欄,單擊別名管理

  3. 在別名列表中找到指向版本1的別名alias1,在其操作列,單擊編輯

  4. 在編輯服務(wù)的別名面板,將新版本2設(shè)置為灰度版本,設(shè)置灰度類型,然后單擊確定

    • 按百分比隨機(jī)灰度

      需填寫灰度版本權(quán)重,如下圖所示。

      edit-alias1

      設(shè)置完成后,調(diào)用別名alias1驗(yàn)證是否已將部分線上流量切換到新版本2。本示例中,如果共調(diào)用別名alias1執(zhí)行函數(shù)10次,結(jié)果中將有3次調(diào)用版本2,7次調(diào)用版本1

    • 按指定規(guī)則灰度

      說(shuō)明

      按指定規(guī)則灰度目前僅支持HTTP函數(shù)。

      edit-alias1

      本示例中,僅當(dāng)參數(shù)key取值為x-test-uid時(shí),將請(qǐng)求消息路由至灰度版本。

    創(chuàng)建灰度發(fā)布規(guī)則的參數(shù)說(shuō)明如下。

    參數(shù)名稱

    參數(shù)說(shuō)明

    名稱

    要?jiǎng)?chuàng)建的別名的名稱。

    主版本

    設(shè)置別名的主版本。

    啟用灰度版本

    是否啟用灰度版本。

    灰度版本

    設(shè)置別名的灰度版本。

    灰度類型

    根據(jù)不同的灰度策略分為按百分比隨機(jī)灰度按指定規(guī)則灰度

    • 按百分比隨機(jī)灰度:設(shè)置一定的權(quán)重切換流量到灰度版本。

    • 按指定規(guī)則灰度:設(shè)置一定的規(guī)則,并按照指定的規(guī)則模式進(jìn)行灰度發(fā)布。

    灰度版本權(quán)重

    當(dāng)灰度類型按百分比隨機(jī)灰度時(shí),需配置此參數(shù)。

    表示切換流量至灰度版本的百分比。例如,設(shè)置該參數(shù)的值為5%,函數(shù)計(jì)算將分配5%的流量到灰度版本,95%的流量到主版本。

    規(guī)則模式

    當(dāng)灰度類型按指定規(guī)則灰度時(shí),需配置此參數(shù)。

    表示對(duì)設(shè)置的規(guī)則的選擇模式,取值如下:

    • 同時(shí)滿足下列規(guī)則

    • 滿足下列任意規(guī)則

    規(guī)則列表

    當(dāng)灰度類型按指定規(guī)則灰度時(shí),需配置此參數(shù)。

    表示具體的規(guī)則內(nèi)容,包含以下三部分:

    • 參數(shù)類型:取值包含Header、Cookie和Query。

    • 參數(shù):控制灰度發(fā)布的參數(shù)名。

    • 條件:計(jì)算條件。函數(shù)計(jì)算參數(shù)的實(shí)際值與您填寫的參數(shù)值按照您設(shè)置的條件進(jìn)行計(jì)算,如果滿足條件,則本條請(qǐng)求被路由至灰度版本。包含以下枚舉值:

      • =、!=、>、<、>=、<=:運(yùn)算符比較條件。例如,設(shè)置條件=,表示僅當(dāng)請(qǐng)求參數(shù)實(shí)際值等于設(shè)置的參數(shù)時(shí),將本條請(qǐng)求路由至灰度版本。

      • in:字符串匹配條件,僅當(dāng)請(qǐng)求參數(shù)實(shí)際值包含在設(shè)置的參數(shù)以內(nèi)時(shí),將本條請(qǐng)求路由至灰度版本。

      • 值分布百分比:表示按照參數(shù)值的特定百分比灰度發(fā)布。例如,設(shè)置參數(shù)類型為Header,參數(shù)user-id20,表示根據(jù)HTTP請(qǐng)求Headeruser-id的具體分布,取其中20%分布值對(duì)應(yīng)的請(qǐng)求路由至灰度版本。

    • :控制灰度發(fā)布的參數(shù)值。

    單擊下方的+添加規(guī)則,可以添加更多其他規(guī)則。

    高級(jí)選項(xiàng)

    預(yù)留實(shí)例灰度比例

    用于控制預(yù)留模式的灰度實(shí)例比例。當(dāng)預(yù)留的實(shí)例數(shù)量大于1時(shí),會(huì)按照該參數(shù)設(shè)置的比例生成預(yù)留模式的實(shí)例數(shù)量,否則,按照默認(rèn)的1%生成預(yù)留模式的實(shí)例數(shù)量。

    重要

    僅當(dāng)您預(yù)留的實(shí)例數(shù)量大于1時(shí),該參數(shù)的值有效。

    待灰度版本運(yùn)行穩(wěn)定后,可以將線上流量全部切換到新版本2

常見(jiàn)問(wèn)題

如何確定被調(diào)用的服務(wù)的版本?

使用灰度發(fā)布功能時(shí),函數(shù)計(jì)算按照您指定的權(quán)重來(lái)分配流量。您可以通過(guò)以下方式來(lái)確定被調(diào)用的服務(wù)的版本:

  • 通過(guò)context入?yún)⒋_定

    每次函數(shù)調(diào)用,context入?yún)⒌?span data-tag="parmname" id="parmname-9qq-na2-7ct" class="parmname">service參數(shù)中會(huì)包括qualifierversionId兩個(gè)字段。

    • qualifier:調(diào)用函數(shù)時(shí)傳入的版本信息,可以是版本號(hào),也可以是別名。

    • versionId:函數(shù)執(zhí)行時(shí)根據(jù)qualifier解析出的具體版本號(hào)。

  • 通過(guò)同步函數(shù)調(diào)用響應(yīng)確定

    同步函數(shù)調(diào)用的響應(yīng)包含x-fc-invocation-service-version Header,可以指示已調(diào)用的服務(wù)版本。