極狐GitLab 功能標志詳解

極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有:

  • 極狐GitLab 中文文檔
  • 極狐GitLab 中文論壇
  • 極狐GitLab 官網

功能標志 (BASIC ALL)

使用功能標志,您可以將應用程序的新功能小批量部署到生產環境中。您可以為部分用戶打開和關閉功能,幫助您實現持續交付。功能標志有助于降低風險,允許您進行受控測試,并將功能交付與客戶發布分開。

工作原理

極狐GitLab 使用 Unleash,一種功能切換服務。
通過在極狐GitLab 中啟用或禁用標志,您的應用程序可以確定啟用或禁用哪些功能。

您可以在極狐GitLab 中創建功能標志并使用應用程序中的 API 來獲取功能標志列表及其狀態。應用程序必須配置為與極狐GitLab 通信,因此開發人員可以使用兼容的客戶端庫并在您的應用程序中集成功能標志。

創建功能標志

要創建和啟用功能標志:

1.在左側邊欄中,選擇 搜索或轉到 并找到您的項目。
2.在左側邊欄中,選擇 部署 > 功能標志。
3.選擇 新建功能標志。
4.輸入名稱。以字母開頭且僅包含小寫字母、數字、下劃線()或破折號(-),且不以破折號(-)或下劃線()結尾。
5.可選。輸入說明(最多 255 個字符)。
6.添加功能標志策略,定義應如何應用標志。對于每個策略,包括 類型(默認為 所有用戶)和 環境(默認為所有環境)。
7.選擇 創建功能標志。

要更改這些設置,請在列表中的任何功能標志旁邊,選擇 編輯 ({pencil})。

最大功能標志數

私有化部署實例上每個項目的最大功能標志數為 200。

功能標志策略

您可以跨多個環境應用功能標志策略,而無需多次定義策略。
極狐GitLab 功能標志使用 Unleash 作為功能標志引擎。在 Unleash 中,策略用于細粒度的功能標志控制。極狐GitLab 功能標志可以有多種策略,支持的策略有:

  • 所有用戶
  • 用戶百分比
  • 用戶 ID
  • 用戶列表

可以在創建功能標志時將策略添加到功能標志,或者在創建后通過導航到 部署 > 功能標志 并選擇 編輯 ({pencil})來編輯現有功能標志。

所有用戶

為所有用戶啟用該功能,它使用標準(默認)Unleash 激活策略。

百分比上線

為一定比例的頁面視圖啟用該功能,并具有可配置的行為一致性。這種一致性也稱為粘性。它使用逐步上線 (flexibleRollout) Unleash 激活策略。
您可以將一致性配置為基于:

  • 用戶 ID:每個用戶 ID 都有一致的行為,忽略會話 ID。

  • 會話 ID:每個會話 ID 都有一致的行為,忽略用戶 ID。

  • 隨機:不保證一致的行為。該功能會隨機啟用選定百分比的頁面瀏覽量。用戶 ID 和會話 ID 將被忽略。

  • 可用 ID:根據用戶的狀態嘗試一致的行為:

    • 如果用戶已登錄,則根據用戶 ID 使行為保持一致。
    • 如果用戶是匿名的,則根據會話 ID 使行為保持一致。
    • 如果沒有用戶 ID 或會話 ID,則隨機啟用選定百分比的頁面視圖的功能。

例如,將基于 可用 ID 的值設置為 15%,以便為 15% 的頁面瀏覽量啟用該功能。對于經過身份驗證的用戶,基于他們的用戶 ID。對于具有會話 ID 的匿名用戶,將基于他們的會話 ID,因為他們沒有用戶 ID。如果未提供會話 ID,則返回隨機。

上線百分比可以從 0% 到 100%。

根據用戶 ID 選擇一致性的功能與 用戶百分比 推出功能相同。

WARNING:
選擇 隨機 將為個別用戶提供不一致的應用程序行為。

用戶百分比

為一定比例的經過身份驗證的用戶啟用該功能。它使用 Unleash 激活策略 gradualRolloutUserId。

例如,將值設置為 15% 可為 15% 的經過身份驗證的用戶啟用該功能。
上線百分比可以從 0% 到 100%。

粘性(同一用戶的一致應用行為)對登錄用戶有保證,但對匿名用戶則不保證。

請注意,具有基于 用戶 ID 的一致性的上線百分比具有相同的行為。我們建議使用百分比部署,因為它比用戶百分比更靈活。

WARNING:
如果選擇了用戶百分比策略,則必須為 Unleash 客戶端提供一個用戶 ID 才能啟用該功能。請參閱下面的 Ruby 示例。

用戶 ID

為目標用戶列表啟用該功能。它是使用 Unleash UserIDs (userWithId) 激活策略。

以逗號分隔的值列表形式輸入用戶 ID(例如,user@example.com、user2@example.com 或 username1,username2,username3 等)。請注意,用戶 ID 是應用程序用戶的標識符。他們不需要是極狐GitLab 用戶。

WARNING:
Unleash 客戶端必須被賦予一個用戶 ID,以便為目標用戶啟用該功能。請參閱下面的 Ruby 示例。

用戶列表

為在功能標志 UI 中或使用功能標志用戶列表 API 創建的用戶列表啟用功能。

與用戶 ID 類似,它使用 Unleash UsersID (userWithId) 激活策略。
不可能禁用用戶列表成員的功能,但您可以通過為不包含排除用戶的用戶列表,啟用功能來實現相同的效果。
例如:

  • Full-user-list = User1A, User1B, User2A, User2B, User3A, User3B, …

  • Full-user-list-excluding-B-users = User1A, User2A, User3A, …

創建用戶列表

要創建用戶列表:

1.在左側邊欄中,選擇 搜索或轉到 并找到您的項目。
2.在左側邊欄中,選擇 部署 > 功能標志。
3.選擇 查看用戶列表
4.選擇 新建用戶列表。
5.輸入列表名稱。
6.選擇 創建。

您可以通過選擇列表旁邊的 編輯 ({pencil}) 來查看列表的用戶 ID。查看列表時,您可以通過選擇 編輯 ({pencil}) 對其進行重命名。

添加用戶到用戶列表

要將用戶添加到用戶列表:

1.在左側邊欄中,選擇 搜索或轉到 并找到您的項目。
2.在左側邊欄中,選擇 部署 > 功能標志。
3.選擇要添加用戶的列表旁邊的 編輯 ({pencil})。
4.選擇 添加用戶。
5.以逗號分隔的值列表的形式輸入用戶 ID。 例如,user@example.com、user2@example.com 或username1,username2,username3 等。
6.選擇 添加。

從用戶列表刪除用戶

從用戶列表中刪除用戶:

1.在左側邊欄中,選擇 搜索或轉到 并找到您的項目。
2.在左側邊欄中,選擇 部署 > 功能標志。
3.選擇要更改的列表旁邊的 編輯 ({pencil})。
4.選擇要刪除的 ID 旁邊的 刪除 ({remove})。

搜索代碼引用 (PREMIUM ALL)

搜索您的項目并在您的代碼中找到任何功能標志的引用,以便您在需要刪除功能標志時清理它。
要搜索功能標志的代碼引用:

1.在左側邊欄中,選擇 搜索或轉到 并找到您的項目。
2.在左側邊欄中,選擇 部署 > 功能標志。
3.編輯要刪除的功能標志。
4.選擇 更多操作 ({ellipsis_v})。
5.選擇 搜索代碼引用。

禁用特定環境的功能標志

要禁用特定環境的功能標志:

1.在左側邊欄中,選擇 搜索或轉到 并找到您的項目。

2.在左側邊欄中,選擇 部署 > 功能標志。

3.對于要禁用的功能標志,選擇 編輯 ({pencil})。

4.禁用標志:

  • 對每一種應用的策略,在 環境 下,刪除環境。

5.選擇 保存修改。

為所有環境禁用功能標志

要為所有環境禁用功能標志:

1.在左側邊欄中,選擇 搜索或轉到 并找到您的項目。
2.在左側邊欄中,選擇 部署 > 功能標志。
3.對于要禁用的功能標志,將狀態切換開關滑動到 已禁用。

功能標志顯示在 已禁用 選項卡上。

將功能標志與您的應用程序集成

要在您的應用程序中使用功能標志,請從極狐GitLab 獲取訪問憑證。
然后使用客戶端庫準備您的應用程序。

獲取訪問憑證

要獲取您的應用程序與極狐GitLab 通信所需的訪問憑據:

1.在左側邊欄中,選擇 搜索或轉到 并找到您的項目。
2.在左側邊欄中,選擇 部署 > 功能標志。
3.選擇 配置 查看以下內容:

  • API URL:客戶端(應用程序)連接以獲取功能標志列表的 URL。

  • 實例 ID:授權檢索功能標志的唯一令牌。

  • 應用程序名稱:應用程序運行的環境名稱(不是應用程序本身的名稱)。

例如,如果應用程序為生產服務器運行,應用程序名稱 可以是 production 或類似名稱。該值用于環境 spec 評估。

請注意,這些字段的含義可能會隨著時間而改變。例如,我們不確定 實例 ID 是分配給 環境 的單個令牌還是多個令牌。此外,應用程序名稱 可以描述應用程序版本而不是運行環境。

選擇客戶端庫

極狐GitLab 實現了一個與 Unleash 客戶端兼容的后端。
使用 Unleash 客戶端,開發人員可以在應用程序代碼中定義標志的默認值。

如果提供的配置文件中不存在標志,則每個功能標志評估都可以表達所需的結果。

Unleash 目前為各種語言和框架提供了許多 SDK。

功能標志 API 文檔

對 API 內容,可以查看:

  • 功能標志 API
  • 功能標志用戶列表 API

Go 應用示例

以下是如何在 Go 應用程序中集成功能標志的示例:

package mainimport ("io""log""net/http""github.com/Unleash/unleash-client-go/v3"
)type metricsInterface struct {
}func init() {unleash.Initialize(unleash.WithUrl("https://gitlab.com/api/v4/feature_flags/unleash/42"),unleash.WithInstanceId("29QmjsW6KngPR5JNPMWx"),unleash.WithAppName("production"), // Set to the running environment of your applicationunleash.WithListener(&metricsInterface{}),)
}func helloServer(w http.ResponseWriter, req *http.Request) {if unleash.IsEnabled("my_feature_name") {io.WriteString(w, "Feature enabled\n")} else {io.WriteString(w, "hello, world!\n")}
}func main() {http.HandleFunc("/", helloServer)log.Fatal(http.ListenAndServe(":8080", nil))
}

Ruby 應用示例

下面是如何在 Ruby 應用程序中集成功能標志的示例。
Unleash 客戶端獲得一個用戶 ID,用于 百分比上線 (登錄用戶) 上線策略或 目標用戶 列表。

#!/usr/bin/env rubyrequire 'unleash'
require 'unleash/context'unleash = Unleash::Client.new({url: 'http://gitlab.com/api/v4/feature_flags/unleash/42',app_name: 'production', # Set to the running environment of your applicationinstance_id: '29QmjsW6KngPR5JNPMWx'
})unleash_context = Unleash::Context.new
# Replace "123" with the ID of an authenticated user.
# Note that the context's user ID must be a string:
# https://unleash.github.io/docs/unleash_context
unleash_context.user_id = "123"if unleash.is_enabled?("my_feature_name", unleash_context)puts "Feature enabled"
elseputs "hello, world!"
end

Unleash 代理示例

從 Unleash Proxy 0.2 版開始,代理與功能標志兼容。要運行 Docker 容器以連接到項目的功能標志,請運行以下命令:

docker run \-e UNLEASH_PROXY_SECRETS=<secret> \-e UNLEASH_URL=<project feature flags URL> \-e UNLEASH_INSTANCE_ID=<project feature flags instance ID> \-e UNLEASH_APP_NAME=<project environment> \-e UNLEASH_API_TOKEN=<tokenNotUsed> \-p 3000:3000 \unleashorg/unleash-proxy
變量
UNLEASH_PROXY_SECRETS用于配置 Unleash Proxy 客戶端 的共享密鑰。
UNLEASH_URL您項目的 API URL。有關更多詳細信息,請閱讀獲取訪問憑證。
UNLEASH_INSTANCE_ID您的項目的實例 ID。有關更多詳細信息,請閱讀獲取訪問憑證。
UNLEASH_APP_NAME應用程序運行環境的名稱。有關更多詳細信息,請閱讀獲取訪問憑證。
UNLEASH_API_TOKEN需要啟動 Unleash 代理,但不用于連接到極狐GitLab。可以設置為任何值。

使用 Unleash 代理時存在一個限制,其中每個代理實例只能為 UNLEASH_APP_NAME 中命名的環境請求標志。Proxy 代表客戶端將其發送到極狐GitLab,客戶端無法覆蓋它。

功能標志關聯議題 (PREMIUM ALL)

您可以將相關議題鏈接到功能標志。 在 相關議題 部分,單擊 + 按鈕并輸入議題參考編號或議題的完整 URL。

然后議題出現在相關的功能標志中,反之亦然。
此功能類似于鏈接議題功能。

性能因素

一般來說,功能標志可以在任何應用程序中使用,但是,如果它是一個大型應用程序,則可能需要提前進行額外配置。
本節介紹性能因素,幫助您的組織確定在使用該功能之前需要完成的工作。

在深入了解詳細信息之前,請閱讀工作原理部分。

應用程序節點中支持的最大客戶端數

極狐GitLab 盡可能多地接受客戶端請求,直到達到速率限制。
目前,Feature Flag API 屬于 SaaS 特定限制中的 未經身份驗證的流量(來自給定 IP 地址),因此限制為 500 個請求/分鐘。

請注意,輪詢速率可在 SDK 中配置。假設所有客戶端都從同一個 IP 請求:

  • 每分鐘請求一次 … 可以支持 500 個客戶端。
  • 每 15 秒請求一次 … 可以支持 125 個客戶端。

對于尋求更具可擴展性的解決方案的應用程序,我們建議使用 Unleash Proxy。

此代理服務器位于服務器和客戶端之間。它代表客戶端組向服務器請求,因此可以大大減少出站請求的數量。

從網絡錯誤中恢復

一般來說,Unleash 客戶端在服務器返回錯誤碼時有一個回退機制。

例如,unleash-ruby-client 從本地備份中讀取標志數據,以便應用程序可以在當前狀態下繼續運行。

請閱讀 SDK 項目中的文檔以獲取更多信息。

私有化部署實例

在功能方面, SaaS 和私有化部署實例沒有區別。
在可擴展性方面,取決于實例的規范。

例如,SaaS 在 HA 架構上運行,因此它可以同時處理大量請求,但是,在低規格機器上運行的私有化部署實例不能期望相同的結果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77315.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77315.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77315.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI與無人駕駛汽車:如何通過機器學習提升自動駕駛系統的安全性?

引言 想象一下&#xff0c;在高速公路上&#xff0c;一輛無人駕駛汽車正平穩行駛。突然&#xff0c;前方的車輛緊急剎車&#xff0c;而旁邊車道有一輛摩托車正快速接近。在這千鈞一發的瞬間&#xff0c;自動駕駛系統迅速分析路況&#xff0c;判斷最安全的避險方案&#xff0c;精…

【NLP 63、大模型應用 —— Agent】

人與人最大的差距就是勇氣和執行力&#xff0c;也是唯一的差距 —— 25.4.16 一、Agent 相關工作 二、Agent 特點 核心特征&#xff1a; 1.專有場景&#xff08;針對某個垂直領域&#xff09; 2.保留記憶&#xff08;以一個特定順序做一些特定任務&#xff0c;記憶當前任務的前…

RAGFlow本地部署教程 :多模態檢索+動態生成,用AI重構企業知識生產力

RAGFlow是一款基于檢索增強生成&#xff08;RAG&#xff09;技術的智能工作流平臺&#xff0c;通過整合多源數據檢索與生成式AI模型&#xff0c;優化企業知識管理、智能問答及自動化報告生成&#xff0c;核心功能包括&#xff1a; 多源數據融合&#xff1a;支持數據庫、文檔庫、…

【C/C++】深入理解指針(二)

文章目錄 深入理解指針(二)1.const修飾指針1.1 const修飾變量1.2 const修飾指針變量 2.野指針2.1 野指針成因1.指針未初始化2. 指針越界訪問3.指針指向的空間釋放 2.2 如何規避野指針2.2.1 指針初始化2.2.2 小心指針越界2.2.3 指針變量不再使?時&#xff0c;及時置NULL&#x…

【verilog】在同一個 always 塊中寫了多個“看起來獨立”的 if / if-else,到底誰先誰后,怎么執行?會不會沖突?

&#x1f50d; 問題本質 在一個 always (posedge clk) 塊中&#xff0c;所有的代碼都是順序執行的。但這不意味著它就像軟件一樣“一條一條執行”&#xff0c;因為最終是電路&#xff01;電路是并行存在的&#xff01; Verilog 是硬件描述語言&#xff08;HDL&#xff09;&am…

【React】什么是 Hook

useStateuseEffectuseRef 什么是hook&#xff1f;16.8版本出現的新特性。可以在不編寫class組件的情況下使用state以及其它的React特性 為什么有hook&#xff1f;class組件很難提取公共的重用的代碼&#xff0c;然后反復使用&#xff1b;不編寫類組件也可以使用類組件的狀態st…

如何查看自己抖音的IP屬地?詳細教程及如何修改

在當今互聯網時代&#xff0c;IP屬地信息已成為各大社交平臺&#xff08;如抖音、微博、快手等&#xff09;展示用戶真實網絡位置的重要功能。以下是關于如何查看抖音IP屬地的詳細教程及常見問題解答&#xff0c;幫助您快速了解相關信息&#xff1a; 一、如何查看抖音賬號的IP屬…

深度學習算力革新:AI服務器在運維工作中的智能化實踐

【導語】作為IT基礎設施服務領域的從業者&#xff0c;我們在日常工作中發現&#xff0c;AI服務器的智能化運維能力正在重塑傳統IDC的管理模式。本文將以DeepSeek系列服務器為例&#xff0c;分享智能算力設備在真實運維場景中的創新應用。 一、傳統服務器集群的運維痛點 在數據…

安裝部署RabbitMQ

一、RabbitMQ安裝部署 1、下載epel源 2、安裝RabbitMQ 3、啟動RabbitMQ web管理界面 啟用插件 rabbitmq數據目錄 創建rabbitmq用戶 設置為管理員角色 給用戶賦予權限 4、訪問rabbitmq

中間件--ClickHouse-4--向量化執行(什么是向量?為什么向量化執行的更快?)

1、向量&#xff08;Vector&#xff09;的概念 &#xff08;1&#xff09;、向量的定義 向量&#xff1a;在計算機科學中&#xff0c;向量是一組同類型數據的有序集合&#xff0c;例如一個包含多個數值的數組。在數據庫中&#xff0c;向量通常指批量數據&#xff08;如一列數…

Python PDF 轉 Markdown 工具庫對比與推薦

根據最新評測及開源社區實踐&#xff0c;以下為綜合性能與適用場景的推薦方案&#xff1a; 1. ?Marker? ?特點?&#xff1a; 轉換速度快&#xff0c;支持表格、公式&#xff08;轉為 LaTeX&#xff09;、圖片提取&#xff0c;適配復雜排版文檔?。依賴 PyTorch&#xff0c…

Vue 和 Spring boot 和 Bean 不同生命周期

一、Vue 組件生命周期 父子組件生命周期順序&#xff1a; 創建時&#xff1a; 父 beforeCreate → 父 created → 父 beforeMount → 子組件生命周期 → 父 mounted 更新時&#xff1a; 父 beforeUpdate → 子組件更新 → 父 updated。 銷毀時&#xff1a; 父 beforeDestroy…

Microsoft Azure 基礎知識簡介

Microsoft Azure 基礎知識簡介 已完成100 XP 2 分鐘 Microsoft Azure 是一個云計算平臺&#xff0c;提供一系列不斷擴展的服務&#xff0c;可幫助你構建解決方案來滿足業務目標。 Azure 服務支持從簡單到復雜的一切內容。 Azure 具有簡單的 Web 服務&#xff0c;用于在云中托…

C語言鏈接數據庫

目錄 使用 yum 配置 mysqld 環境 查看 mysqld 服務的版本 創建 mysql 句柄 鏈接數據庫 使用數據庫 增加數據 修改數據 查詢數據 獲取查詢結果的行數 獲取查詢結果的列數 獲取查詢結果的列名 獲取查詢結果所有數據 斷開鏈接 C語言訪問mysql數據庫整體源碼 通過…

【Maven】手動安裝依賴到本地倉庫

【Maven】手動安裝依賴到本地倉庫 【一】下載依賴【二】安裝 JAR 文件到本地倉庫【三】驗證安裝【四】在項目中使用該依賴【1】注意事項【2】額外提示 【一】下載依賴 登錄到中央倉庫下載依賴&#xff0c;中央倉庫地址&#xff1a;https://mvnrepository.com/ 搜搜你的依賴的a…

騰訊云golang一面

go垃圾回收機制 參考自&#xff1a;https://zhuanlan.zhihu.com/p/334999060 go 1.3 標記清除法 缺點 go 1.5 三色標記法 屏障機制 插入屏障 但是如果棧不添加,當全部三色標記掃描之后,棧上有可能依然存在白色對象被引用的情況(如上圖的對象9). 所以要對棧重新進行三色標記掃…

跨平臺嵌入式音視頻開發指南:EasyRTC音視頻通話的多場景適配與AI擴展能力

在數字化通信技術飛速發展的今天&#xff0c;實時音視頻通信已成為眾多智能設備和應用的核心功能。從智能家居到遠程辦公&#xff0c;從在線教育到智能安防&#xff0c;音視頻通信技術的應用場景不斷拓展&#xff0c;對低延遲、高穩定性和跨平臺兼容性的需求也在持續增長。在這…

Android 11 去掉性能受到影響通知

源碼位置: frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java final void finishBooting() {TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG + "Timing",Trace.TRACE_TAG_ACTIVITY_MANAGER);t.traceBegin("Finis…

Mac idea WordExcel等文件git modify 一直提示修改狀態

CRLF LF CR 換行符自動轉換問題 查看狀態&#xff1a;git config --global --list Mac需要開啟&#xff0c;window下需要關閉 關閉命令&#xff1a;git config --global core.autocrlf false 命令解釋&#xff1a; autocrlf true 表示要求git在提交時將crlf轉換為lf&a…

Apache Commons CLI 入門教程:輕松解析命令行參數

文章目錄 Apache Commons CLI 入門教程&#xff1a;輕松解析命令行參數一、什么是 Commons CLI&#xff1f;二、為什么選擇 Commons CLI&#xff1f;三、快速開始1. 添加依賴2. 基礎示例3. 運行示例1. 在Idea中運行2. 命令行中運行3. 使用 Maven/Gradle 運行&#xff08;推薦&a…