《張俊杰-成本優先的技術架構.pdf》由會員分享,可在線閱讀,更多相關《張俊杰-成本優先的技術架構.pdf(36頁珍藏版)》請在三個皮匠報告上搜索。
1、成本優先的技術架構Shopee海量商品系統的治理挑戰和應對之策/張俊杰關于我關于我 目前負責商品系統商品系統后端研發的工作張俊杰張俊杰 2019年加入Shopee 減肥并不難減肥并不難,關鍵在于找到關鍵在于找到正確的方法并實踐正確的方法并實踐。減肥是一個持續的過程減肥是一個持續的過程,我們可以我們可以借鑒他人借鑒他人的經驗的經驗,避免走彎路避免走彎路,并增強信心并增強信心。目錄目錄1 海量商品系統的海量商品系統的背景和背景和挑戰挑戰2 海量商品系統的應對海量商品系統的應對-緩存篇緩存篇3 海量商品系統的應對海量商品系統的應對-存儲篇存儲篇4 成果和總結成果和總結海量商品系統的背景和挑戰海量商品
2、治理海量商品治理-背景背景Shopee是東南亞領航電商平臺東南亞領航電商平臺,業務范圍覆蓋新加坡、馬來西亞、菲律賓、泰國、越南、巴西等十余個市十余個市場場,為全球用戶提供無縫、有趣且可靠的購物體驗。銷售商品銷售商品購買商品購買商品 買賣雙方通過電商平臺促成商品的交易商品的交易。海量商品治理海量商品治理-現狀現狀服務多市場服務多市場 十余個十余個市場,賣家體量大,潛在客戶人群 10+億億 不同的文化,具有更多元的商品更多元的商品玩法多樣化玩法多樣化 本土和跨境模式本土和跨境模式使得商品能夠同時在多個市場銷售。新興的全托管等多樣化玩法多樣化玩法不斷吸引商家參與百億級百億級 商品商品上千個上千個 商
3、品商品字段字段東南亞市場份額遙遙領先東南亞市場份額遙遙領先海量商品治理海量商品治理-現狀現狀百萬級百萬級 并發請求并發請求商品詳情商品詳情搜索搜索推薦推薦訂單訂單購物車購物車服務服務10+個市場個市場商品系統覆蓋商品系統覆蓋了電商平臺了電商平臺絕大部分絕大部分核心核心路徑路徑商品瀏覽商品瀏覽賣家發貨賣家發貨商品曝光商品曝光用戶下單用戶下單客戶端客戶端商品系統的流量來源復雜商品系統的流量來源復雜眾多相關眾多相關業務團隊業務團隊搜索推薦搜索推薦數據分析數據分析廣告廣告店鋪店鋪管理管理訂單管理訂單管理賣家中心賣家中心/開放平臺開放平臺/買家買家內部系統流量內部系統流量(業務業務、算法算法、數據分析等
4、數據分析等)開放平臺開放平臺履約履約海量商品治理海量商品治理-挑戰挑戰數據庫服務器成本非常高昂數據庫服務器成本非常高昂數據庫數據庫 存儲量大存儲量大 百億級商品存儲,數據規模龐大 隨著業務發展,每個商品數據的體積也不斷膨脹數據庫從庫數據庫從庫 數量多數量多 即使有緩存層存在,流量仍然會對數據庫施加相當大的壓力。數據量數據量 持續增長持續增長 每年都需要增加新的數據庫來存儲更多的數據流量流量 持續持續增長增長 為了承載持續增加的流量,我們不斷增加數據庫的從庫數量。數據數據存儲擴散比例大存儲擴散比例大 除了從庫,還需要考慮離線數據、索引數據等資源的需求應對峰值流量應對峰值流量 為了避免數據庫過載,
5、我們會預留足夠的緩沖空間。海量商品系統的應對-緩存篇普遍接受的事實普遍接受的事實引入緩存服務可以提升系統整體性能提升系統整體性能緩存服務會緩存服務會降低數據庫成本降低數據庫成本嗎嗎?大家項目里面有用緩存大家項目里面有用緩存?100%流量實際情況Server緩存集群ServerVS數據庫集群ServerServerServerServerServerServer緩存的緩存的正確使用正確使用對對數據庫數據庫成本成本影響很大影響很大Server緩存集群Server100%流量數據庫集群ServerServerServerServerServerServer1%流量成本成本:需要更多的數據庫來處理由于
6、緩存不命中緩存不命中引起的數據庫流量(用最壞情況做成本預算)理想情況下為了支持額外的為了支持額外的50%流量流量,需要大量的額需要大量的額外資源外資源。99%命中率命中率風險風險:如果緩存數據大規模大規模受到受到污染污染,可能引發系統故障系統故障50%-99%命中率命中率 24h按請求次數進行緩存續期:2.6-3.24h02緩存命中率、緩存內存使用率緩存的讀寫QPS數據庫壓力指標數據庫壓力指標03用戶行為是未知的,我們以線上實際流量為準進行策略驗證,避免結果失真04參考線上系統環境,保持架構和配置與線上系統一致。編寫腳本,用于執行仿真測試和報告輸出05執行仿真模擬和輸出報告,并優化參數持續迭代
7、訪訪真真驗證驗證(控制變量控制變量)篩選篩選 TTL策略策略選擇決策因子選擇決策因子采集線上流量采集線上流量搭建仿真環境搭建仿真環境運行與調優運行與調優流量與系統行為流量與系統行為關系關系錯綜復雜錯綜復雜 眾多相關業務團隊 業務變化頻繁 流量入口過多,非常復雜 數據特征不穩定內存利用率內存利用率 增加增加緩存命中率緩存命中率數據驅逐數據驅逐降低降低提升提升內存內存不足不足 內存利用率過高會引起數據驅逐,數據驅逐是否引起系統性風險數據庫數據庫 商品數量商品數量緩存緩存 商品數量商品數量流量查詢流量查詢緩存緩存命中命中緩存緩存Miss空閑空閑內存內存治理進度治理進度不變不變數據庫數據庫-主庫主庫成
8、本成本100%數據庫數據庫-從庫成本從庫成本85%減少減少15+%關于緩存關于緩存,除了除了TTL以外以外,還可以通過什么優化來減少數據庫壓力呢還可以通過什么優化來減少數據庫壓力呢?緩存更多的數據緩存更多的數據在不擴容的情況下在不擴容的情況下,減少數據體積減少數據體積可以可以緩存緩存更多的數據更多的數據哪些方式可以哪些方式可以減少數據體積減少數據體積緩存集群緩存集群NodeNodeNodeNodeNodeNodeNodeKey數據庫數據庫 描述信息描述信息 物流信息物流信息 統計信息統計信息 基礎信息基礎信息 描述信息描述信息 物流信息物流信息 統計信息統計信息 基礎信息基礎信息 描述信息描述
9、信息 物流信息物流信息 統計信息統計信息 基礎信息基礎信息減少冗余減少冗余和重復字段和重復字段例如:一對多關系里面重復的ID信息減少冗余和重復字段減少冗余和重復字段通過簡單編碼即可實現減少數據體通過簡單編碼即可實現減少數據體積的目標積的目標,無需涉及復雜的技術設無需涉及復雜的技術設計計。成本低成本低,收益確定性高收益確定性高數據壓縮數據壓縮例如:商品描述等信息成本成本中等中等,收益收益具有不確定性具有不確定性需要找到成本和收益的平衡點需要找到成本和收益的平衡點 尋找業務匹配的壓縮算法并進行性能驗證 考慮算法升級后對系統的兼容性 針對不同的緩存數據類型(例如字符串、數字),進行獨立驗證數據壓縮數
10、據壓縮通過減小數據體積通過減小數據體積,可以增加緩存的容量可以增加緩存的容量,從而提高緩存命中率從而提高緩存命中率。緩存集群緩存集群Key數據庫數據庫 描述信息描述信息 物流信息物流信息 統計信息統計信息 基礎信息基礎信息 描述信息描述信息 物流信息物流信息 統計信息統計信息 基礎信息基礎信息 描述信息描述信息 物流信息物流信息 統計信息統計信息 基礎信息基礎信息數據壓縮數據壓縮例如:商品描述等信息減少冗余減少冗余和重復字段和重復字段例如:一對多關系里面重復的ID信息實體數據實體數據實體數據實體數據Node實體數據實體數據實體數據實體數據算法迭代算法迭代兼容兼容HeaderHeader算法性能
11、對比算法性能對比:壓縮體積壓縮體積,操作耗時操作耗時,CPU開銷開銷治理進度治理進度不變不變85%減少減少10+%75%數據庫數據庫-主庫成本主庫成本數據庫數據庫-從庫成本從庫成本隨著緩存服務承載的流量不斷增加隨著緩存服務承載的流量不斷增加,風險也風險也會相應增加會相應增加,例如例如熱點數據熱點數據的問題的問題。熱點數據問題會影響熱點數據問題會影響緩存成本嗎緩存成本嗎?多級緩存減少緩存成本多級緩存減少緩存成本多級緩存多級緩存:利用利用服務的空閑內存服務的空閑內存,對熱點數據做本地緩存對熱點數據做本地緩存降低系統性風險降低系統性風險:避免避免熱點數據引起緩存節點宕機熱點數據引起緩存節點宕機(CP
12、U過載過載),),用戶將無法訪問該節點的其他數據用戶將無法訪問該節點的其他數據提升提升性能和吞吐性能和吞吐:本本地緩存的數據訪問速度遠超于遠端緩存地緩存的數據訪問速度遠超于遠端緩存,數據數據傳輸速度是千級的差異傳輸速度是千級的差異。以及減少編解碼的性能以及減少編解碼的性能消耗消耗。收益收益非中心化數據,多容器中心化數據中心化數據獲取商品信息獲取商品信息本地緩存本地緩存遠端緩存遠端緩存數據庫數據庫本地緩存本地緩存本地緩存本地緩存流程流程挑戰挑戰Cache Node商品AQPS 商品BQPS商品CQPS正常場景正常場景:每個商品有不同的流量,但整體上看不會超過節點承載的水位為了解決熱點數據導致的緩
13、存節點不可用問題,我們可以考慮提前對緩存集群進行擴容。因為每個節點都可能發生相關的問題,會增加數倍的資源成本Cache Node 對象 BQPS特殊場景特殊場景:熱點數據引起緩存節點不可熱點數據引起緩存節點不可用用商品AQPS商品CQPS 商品BQPS在時間窗口內在時間窗口內QPS超過設定的閾值超過設定的閾值識別熱點數據識別熱點數據1.引入復雜機制的風險和成本2.業務思考:(1)特定時間區間的應用(2)特定場景的應用廣播通知廣播通知&版本對比版本對比 vs 短短TTL數據一致性和數據一致性和更新機制更新機制治理進度治理進度不變不變不變不變緩存成本緩存成本規避熱點問題引起的緩規避熱點問題引起的緩
14、存擴容開銷存擴容開銷數據庫數據庫-主庫成本主庫成本數據庫數據庫-從庫成本從庫成本不變不變海量商品系統的應對-存儲篇存儲成本居高不下存儲成本居高不下百億級百億級 商品商品上千個上千個 商品字段商品字段數據庫已經退化到以存儲數據庫已經退化到以存儲為主為主,但是但是成本還是很高成本還是很高 數據規模大 資源擴散比例大主庫主庫從庫從庫離線數據離線數據索引索引其他其他數據庫數據庫 商品數量商品數量緩存緩存 商品數量商品數量流量查詢流量查詢空閑空閑內存內存緩存緩存命中命中緩存緩存Miss降低存儲成本降低存儲成本數據庫數據庫熱數據熱數據冷數據冷數據把冷數據存儲在更便宜的資源上把冷數據存儲在更便宜的資源上冷熱
15、分離冷熱分離如何落地如何落地?熱數據熱數據冷數據冷數據數據歸檔數據歸檔-冷熱冷熱數據的分類定義數據的分類定義冷數據冷數據低頻訪問的數據低頻訪問的數據 與時間非強相關的數據通過流量比例區分,例如最近 n 月訪問占比不到 x%的數據。具有時間屬性,距今時間久遠,例如 n年前的商品快照。用戶主觀刪除的數據用戶主觀刪除的數據(軟刪軟刪)*業務上要求軟刪除*法務問題無用的日志數據無用的日志數據日志數據具有時間屬性,結合業務上的訴求定義規則,例如n年前的商品變更記錄。沒有價值且耗費大量資源的業務數據沒有價值且耗費大量資源的業務數據對于一些長期不活躍的用戶,例如幾年都沒有登錄的賣家的商品數據。用戶維度活躍的
16、數據用戶維度活躍的數據 與時間沒有強相關的數據,通過流量比例區分,例如最近 n 月訪問占比超過 x%的數據。具有時間屬性,例如 最近n年的商品快照。熱數據熱數據被在線系統被在線系統低頻訪問的數據低頻訪問的數據不會被在線不會被在線系統系統訪問的數據訪問的數據數據歸檔數據歸檔-冷熱數據冷熱數據存儲存儲成本的對比成本的對比冷數據冷數據冷數據冷數據不需要考慮事務等寫能力的支持不需要考慮事務等寫能力的支持對讀的性能要求低對讀的性能要求低(延遲延遲,QPS)事務能力保證事務能力保證 性能要求高性能要求高能力高頻讀頻率寫約束低低頻頻ALLInsert OnlyInsert Only不讀不讀MYSQL 部署在
17、高規格部署在高規格的服務器的服務器MYSQL 部署在部署在更更廉價廉價的服務器上的服務器上數據倉庫數據倉庫更高的數據壓縮比更高的數據壓縮比,存儲更多的數據存儲更多的數據降低存儲成本降低存儲成本磁盤磁盤:便宜的方案內存內存:更小的內存 CPU:更少的核數熱數據庫熱數據庫被在線系統被在線系統低頻訪問的數據庫低頻訪問的數據庫不會被在線系統不會被在線系統訪問的數據庫訪問的數據庫 超大磁盤服務超大磁盤服務器器不同系統之間的不同系統之間的兼容性處理兼容性處理數據歸檔數據歸檔-可能出現的問題可能出現的問題數據實體往往是多張表以及多個數據庫數據實體往往是多張表以及多個數據庫,涉及不同的系統與團隊涉及不同的系統
18、與團隊熱數據庫熱數據庫被在線系統被在線系統低頻訪問的數據庫低頻訪問的數據庫數據歸檔數據歸檔-兼容性兼容性(低頻訪問的冷數據低頻訪問的冷數據)商品ID為主鍵 具有外鍵指向商品數據查詢商品系統商品系統外部系統外部系統(例如價格/庫存)系統支持查詢熱庫和冷庫系統支持查詢熱庫和冷庫(一般先熱后冷一般先熱后冷)支持冷庫查詢降級支持冷庫查詢降級數據歸檔本質上是把數據從數據歸檔本質上是把數據從熱數據庫搬到冷數據庫熱數據庫搬到冷數據庫相關系統需要兼容數據庫物理刪除消息訪問數據訪問數據熱數據熱數據被在線系統被在線系統低頻訪問的數據庫低頻訪問的數據庫數據歸檔數據歸檔-兼容性兼容性(不被訪問的冷數據不被訪問的冷數據
19、)查詢商品系統商品系統外部系統外部系統(例如價格/庫存)系統服務系統服務 系統不能出現未知異常 全局ID不能被復用 避免緩存穿透業務流程業務流程 業務應該正常運行,沒有未知的異常用戶體驗用戶體驗 APP不能crash 友好的提示APP商品詳情商品詳情查詢內部系統內部系統查詢查詢查詢訪問數據不會被不會被在線系在線系統統訪問的數據庫訪問的數據庫熱數據庫熱數據庫被在線系統被在線系統低頻訪問的數據庫低頻訪問的數據庫不會被不會被在線系在線系統統訪問的數據庫訪問的數據庫熱數據庫熱數據庫被在線系統被在線系統低頻訪問的數據庫低頻訪問的數據庫訪問數據數據歸檔數據歸檔-方法方法業務法規風險進度管理與溝通01定義規
20、則定義規則 深刻理解數據 決策存儲架構02系統兼容系統兼容 洞悉兼容問題 保障用戶體驗03數據歸檔數據歸檔 分離冷熱數據 釋放富余資源存儲存儲應對應對-治理治理進度進度75%減少減少50+%25%100%減少減少50+%50%數據庫數據庫-主庫成本主庫成本數據庫數據庫-從庫成本從庫成本成果與總結成果與成果與總結總結減少支撐讀流量的服務器成本減少支撐讀流量的服務器成本減少海量數據存儲的服務器成本減少海量數據存儲的服務器成本通過仿真驗證選擇最優TTL,數據庫成本減少 15+%通過減少緩存對象體積,增加最大緩存數量,數據庫成本減少 10+%通過多級緩存避免了緩存擴容引起的額外成本開銷把“低頻訪問數據”分離到低規格服務器,把“不被訪問的數據”分離到數據倉庫,數據庫成本減少 50+%減少減少 千萬級人民幣千萬級人民幣 服務器成本服務器成本2.規則是可變的規則是可變的。隨著業務的發展,我們可以重新審視重新審視這些規則,并從成本優先的角度靈活調整它們。1.資源限制是客觀存在的資源限制是客觀存在的。資源無法無限的增長,我們需要接受它,并充分利用充分利用已有的資源。Q&A