開關系統設計方案

一、概念

開關系統: 可以控制某一功能的上下線

二、背景

  • rn建設正在穩步推進中

  • rn頁面的兜底,降級邏輯,有待完善, 確保終端頁面的高可用

  • 如何實現rn頁面內的兜底、降級

三、目標收益

  • 提供緊急逃生能力,確保終端頁面的高可用

  • 為精細化運營提供基礎能力:支持不同的用戶群體做不同的運營策略

  • 結合埋點系統,支持AB實驗

四、使用場景

  • AB實驗

    • 結合埋點系統,切分一部分用戶使用新功能A方案,一部分用戶功能B方案,對比A或者B哪個指標更好

    • 功能入口的顯隱

      • 比如低版本用戶、或某一區域用戶,不顯示某一功能入口
image.png
  • 精細化運營

    • 可以根據不同指標的用戶,匹配不同的跳轉邏輯。

      • 比如羊毛黨,提供福利頁面跳轉

      • 高價值用戶,提供高利潤產品的跳轉

image.png
  • 體驗優化

    • 比如性能低的手機,頁面使用h5呈現,其他手機使用RN呈現
  • 穩定性保障

    • 緊急避險。比如某一頁面由H5改版為RN。上線以后有重大bug,修復耗時較長,可以將該入口立即切換為舊的h5頁面。必現線上出現重大影響

    • 灰度放量。

五、方案內容

5.1、描述

所謂的開關,即是一份配置表。

可以針對不同的手機、不同的系統、不同的版本、不同的app、不同的參數,分別給出對應的配置,由于可以實時控制該配置信息的上下線,以及實時修改配置,命名為開關系統。

5.2、開關類型

  • 終端開關:給h5、Android、iOS、react-native使用的開關

  • 服務端開關: 給后端使用的開關

5.3、構成

方案包括四部分:

  • admin管理后臺: 用來管理開關的增、刪、改、查、上下線

  • 數據管理服務:存儲數據、提供相關操作數據的接口

  • 終端SDK: 用于獲取開關配置信息

  • 后端服務SDK: 用戶獲取開關配置信息

5.3.1、管理后臺

  • 配置頁面
image.png
  • 配置邏輯
image.png

5.3.2、后端服務

  • 提供api

  • 存儲數據

  • 支持測試環境和生產環境

5.3.3、終端SDK

// 根據客戶端公參,獲取開關信息
getSwitchInfo(switchId: string, params:object) {
    return switchInfo
}
  • 客戶端SDK:提供api,方便客戶端開發調用

    • 獲取某一開關的配置信息:id和公參

5.3.4、服務端SDK

// 根據服務端參數,獲取開關信息
getSwitchInfo(switchId: string, params:object) {
    return switchInfo
}
// 根據客戶端信息獲取開關信息,給客戶端使用,一般用于轉發客戶端的請求
getSwitchInfoForFrontEnd(switchId: string, params:object) {
    return switchInfo
}
  • 后端SDK:提供api,方便后端開發調用

    • 獲取某一接口的個性化配置信息:id,公參

5.3、公參

  • 終端

    • 客戶端:OS、appVersion、OSVersion、userId、deviceId、ip、。。。

    • 前端:瀏覽器名稱、瀏覽器版本、userId、deviceId、ip、。。。

  • 后端

    • 可轉發客戶端請求,要求客戶端提供相關的公參

    • 【待定】由后端開發指定

5.4、開關配置

5.4.1、分支配置

用來配置當前開關,允許返回幾種值。可以類比為枚舉值的概念。分支配置,就是用來配置這個枚舉。

  • 分支配置是后續配置的基礎

  • 支持增刪改查

image.png

5.4.2、白名單配置、黑名單配置

用于指定某個用戶,必定命中/不命中某個分支

  • 一般用于測試場景,需要逐個讓測試賬號命中每一個分支,測試不同分支的行為

  • 支持用戶ID和設備ID,不允許多選,默認用戶ID

  • 支持多個id的配置

image.png

5.4.3、通用規則配置

用來配置用戶的分配規則。

例如:

  • 規則1:

    • app版本在2.3.0以上

    • 操作系統為Android

  • 規則2:

    • 操作系統為iOS

    • 地理區域為河北

  • 規則3:

    • 不符合上述規則1/2的用戶
image.png

5.4.4、規則和分支匹配關系

用于指定不同的規則對應的分支

image.png

5.4.5、灰度設置

用來控制不同分支的灰度值,支持0%-100%

image.png

發布

  • 可以一鍵上線到測試環境

  • 上線過測試環境的開關,可以一鍵上線到生產環境,避免需要到生產環境重新創建

六、人員、排期

七、風險

20240725105138.jpg
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容