1、走近百度智能小程序開源背后服務端建設的那些事Agenda 百度智能小程序開源進展 開源分發體系建設 統一分發服務建設 雙向選擇/私有化分發 用戶體系的建設與探索 開源聯盟帳號體系建設 開源oauth能力 流量分發建設 監控與風控能力的建設 云能力打通(開放AI能力到開源宿主APP,云開發)百度智能小程序開源進展https:/ 11月宣布全面開月宣布全面開源源百度智能小程序服務端開源建設總覽開源宿主服務端平臺百度智能小程序 開源服務端平臺包管理服務開源聯盟帳號服務OAUTH授權服務端能力接入建設端到端AI能力實時日志平臺(Ceres)開源聯盟APP統一管理建設流量&分發建設運營&安全建設標準化實
2、時體驗一致高效低成本靈活高可擴展物料分發服務實時分發推薦服務小程序應用市場服務實時檢索服務實時異常日志監控巡檢服務運營管控服務小程序元數據分發服務統一審核平臺運營活動下發服務宿主管理開發管理CTS兼容性測試報表分析服務流量分發管理私有化小程序管理小程序開源全網分發服務建設 挑戰如何在全網復雜的環境下,保障小程序包實時,精準分發,授權控制與高效的風控監管觸達?小程序開發者統一審核平臺包管理服務巡檢服務開源聯盟APP實時包分發請求(包簽名/授權)基于長鏈接實時狀態下發運營監管實時異常日志監控長鏈接日志上報包上線進入巡檢池小程序開源宿主平臺干預下發干預數據服務端同步發包送審統一分發標準&服務實時干預
3、&觸達能力巡檢&實時監控同步保障自動觸發人工干預人工復查服務端自主干預小程序全網統一包分發服務 挑戰承接全網每日30億+包分發請求開源聯盟APPPMS包服務三層存儲查詢優化MEM LRUREDISDB95%99%BOS 對象存儲服務包分發服務分發策略包依賴管理包數據小程序Meta信息包分發請求Https包下載CDN分發規則查詢包狀態實時同步長連接簽名加密包發布數據校驗模塊BinLog同步小程序校驗簽名解密小程序運行多維度分發策略支持實時分發狀態校驗多版本適配機制長連接主動干預機制全網統一包分發服務小程序雙向選擇&私有分發 背景小程序雙向選擇&私有分發,是開源建設中非常需要的一個能力雙向選擇:開
4、發者可以選擇小程序可發布的開源宿主,宿主APP可以選擇分發的小程序私有分發:限定某個小程序只分發到某個宿主APP上小程序開發者包管理服務開源聯盟APP實時包分發請求(服務端分發過濾)基于長鏈接實時狀態下發運營監管小程序開源宿主平臺干預數據服務端同步開源宿主管理員開發者平臺雙向選擇私有化雙向選擇私有化授權確認同步分發策略同步分發策略主數據服務小程序開源宿主平臺分發策略數據分發策略數據宿主服務端數據分發(過濾)服務端自主干預小程序開源用戶體系建設目標:針對開發者一次代碼開發,所有開源APP上的小程序獲得同構帳號服務能力1.建立統一的開源聯盟用戶帳號服務2.建立開源OAUTH帳號認證與授權機制OAU
5、TH授權服務開源帳號服務模塊百度核心帳號服務開源聯盟APP用戶1.手機號驗證登錄APP1.1綁定/創建帳號,返回開源登錄session(短時間有效)2用戶打開訪問小程序(開源登錄session)小程序2.1 請求登錄授權,用戶確認授權小程序開發者服務端2.2 請求login操作(開源登錄session)2.3 驗證登錄信息,請求獲取session安全憑證2.4 在小程序設置一個新生成的登錄標識session小程序3.在小程序內獲取用戶帳號信息 swan.getUserInfo()(小程序登錄標識)3.1 請求獲取用戶信息,信息通過session安全憑證加密3.2 根據session安全憑證解密
6、數據,獲取用戶信息獲取用戶信息完成小程序開源物料分發建設物料定義:指用于小程序分發展現時所需要的內容,基本的物料形式包括文字、圖片、視頻、子鏈等類型。物料在小程序展現給用戶時非常關鍵的介紹,物料建設也是開發者必須要參與的工作之一。挑戰:數億級的標準化物料數據,如何高效,精準的全網分發,為用戶與開發者,宿主都帶來價值?小程序開發者提交物料數據物料接入服務物料加工服務物料核心服務審核服務小程序WEB化服務單條/批量提交自動化抓取服務結構化提取加工策略化分析精加工策略機審圖文,視頻,鏈接人工審核物料正排存儲MOLA分布式KV存儲物料倒排檢索ES集群結構化數據管理DB存儲正排API服務審核服務API更
7、新物料物料檢索服務消息隊列同步服務物料管理服務消息隊列開源物料分發服務物料推薦服務物料同步服務(在線/離線)開源APP聯盟Server小程序開源風控與監控體系建設 挑戰:如何在全網復雜環境下,及時發現出問題的小程序,并實現高時效的監管能力?風控建設事前處理實時監控事中干預聯盟APP用戶訪問小程序(異常:白屏,性能慢,服務出錯,代碼運行異常)日志收集SDK集成日志服務日志接入Http2 PB 長鏈接順序寫落盤異步訂閱數據清洗BaiduRPC 長連接可持久能力Ring buffer集成消息隊列多topic實時質量分析服務白屏檢測奔潰檢測性能檢測服務請求異常檢測支撐每日數百億條日志請求巡檢服務巡檢調
8、度引擎運營干預策略干預物料服務篩選/取獲風頁面URL真機檢測WEB化檢測消息隊列Diff檢測.質量干預(運營)下發到所有方.小程序開放端直聯的AI能力 BDTLS:由百度內部研發,基于HTTP協議上增加了一層安全校驗協議,基于DH(密鑰交換算法),實現了一套動態換算生成密鑰的機制,保障在開放全部源代碼的前提下,仍能確保通信安全1.能夠實現雙向認證,通信內容加密。2.支持前向安全,若發生密鑰泄露,也不能破解出歷史請求的數據。3.滿足1-RTT通信目標。設計要求:實現端內直聯百度云AI API服務能力支持,保證開源生態內一致的API開發體驗BDTLS支撐端直連AI服務實現 基于BDTLS安全方案,
9、實現端內直聯百度云AI API服務能力支持聯盟APPSwan-Cloud-AISDKBDTLS SDK百度公有云API Gate WayAI Service安全通訊服務握手服務通信服務BDTLS SDK1.兩次安全握手,基于DH算法,獲取加密密鑰算子a1.1 根據客戶端交換算子b,同步算出共享的密鑰2.基于DH交換算法,基于算子a算出共享的密鑰2.1 發送數據,根據密鑰加密數據發送給服務端2.2 根據服務端算出的密鑰,解密數據后,發送給內部服務小程序應用AI Swan.ai.rquest完整調用流程詳解集成百度公有云賦能小程序開源建設云開發能力智能小程序云開發可以為開發者提供一種 Server
10、less 的小程序開發模式,開發者無需服務器的維護經驗,既可開發上線一個服務端功能完備的智能小程序。功能包括:云數據庫云數據庫:云開發提供了基于 JSON 數據格式存儲的云端數據庫,開發者可以在智能小程序前端對云數據庫進行增刪改查的操作,同時也可以在云函數中對數據庫進行操作。云存儲云存儲:開發者可以在智能小程序前端直接上傳/下載文件,無需自建存儲。云函數云函數:云函數是指在云端可執行的代碼,開發者無需服務器的管理成本,可在開發者工具中對云函數進行開發、部署、同步。https:/ 支持端到云直達的連接能力,確保開源APP下使用方式一致性實現任何開源小程序APP端安全使用 swan.cloud API調用.聯盟APPSwan-CloudSDKBDTLS SDK百度公有云云函數BDTLS SDK云開發 小程序Swan.cloud云數據庫云存儲APIGateWay集成https權限驗證+數據簽名http+BDTLS