精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

驚了!1 萬屬性、100 億數據、10 萬吞吐,這樣的系統架構是怎么扛住的?

開發 架構
電商平臺涵蓋眾多商品品類,像數碼產品、服裝鞋帽、家居用品、美妝護膚、食品飲料等,每個品類又包含諸多子品類。而無論哪個品類,“商品信息” 都是最核心的數據,這就類似一個大型的線上商品集市。

有一類業務場景,數據沒有固定的模式(schema)存儲,卻有著海量的數據行數,該如何從架構層面實現這類業務的存儲與檢索呢?比如要處理 1 萬種屬性、100 億條數據,還得支撐每秒 10 萬次的吞吐,今天就和大家聊聊 “電商商品多維度信息業務” 的架構設計實踐。

一、背景與業務介紹

電商平臺的核心數據

電商平臺涵蓋眾多商品品類,像數碼產品、服裝鞋帽、家居用品、美妝護膚、食品飲料等,每個品類又包含諸多子品類。而無論哪個品類,“商品信息” 都是最核心的數據,這就類似一個大型的線上商品集市。

各分類商品信息的特點

經常網購的人很容易發現,這類平臺的商品信息有以下特點:

  • 不同品類的屬性差異極大,數碼產品和服裝的屬性完全不同,就連手機和電腦的屬性也不一樣,目前屬性數量已接近一萬種;
  • 數據量極為龐大,達到 100 億級別;
  • 每個屬性都存在查詢需求,各組合屬性也可能有組合查詢需求,比如手機要查詢品牌、內存、價格范圍,服裝要查詢尺碼、顏色、材質,家居用品要查詢風格、尺寸、功能等;
  • 吞吐量很高,每秒能達到幾十萬次。

那該如何解決 100 億數據量、1 萬種屬性、多屬性組合查詢以及每秒 10 萬次并發查詢的技術難題呢?我們一步步來分析。

二、最容易想到的初始方案

每個電商公司都是從小規模發展起來的,先不考慮并發量和數據量,看看如何先解決:

  • 屬性擴展性需求;
  • 多屬性組合查詢需求。畢竟公司初期并發量和數據量都不大,得先把業務問題解決。

業務存儲需求的滿足方式

最開始,業務只有手機這一個品類,商品表可能是這樣設計的:product(tid, uid, brand, model, memory, price)

多屬性組合查詢需求的滿足方式

最容易想到的是通過組合索引來滿足查詢需求,比如:

  • index_1(brand, model)
  • index_2(model, memory)
  • index_3(brand, price)

業務擴展后的存儲與查詢問題

隨著業務發展,新增了服裝類別,存儲問題可以通過新增若干屬性來解決,此時商品表變成:

product(tid, uid, brand, model, memory, price, size, color, material)其中,brand、model、memory、price是手機類別的屬性,size、color、material是服裝類別的屬性。

對于查詢需求,由于跨業務屬性一般沒有組合查詢需求,只能建立若干組合索引來滿足服裝類別的查詢需求。但想想看,要覆蓋所有兩屬性、三屬性查詢,得建多少索引,這顯然不是長久之計,業務越來越多時,這種方式就難以維系了。

三、垂直拆分的思路與問題

新增屬性是一種擴展方式,新增表也是一種方式,垂直拆分是常見的存儲擴展方案。

可以這樣操作:

  • product_phone(tid, uid, brand, model, memory, price)(手機商品表)
  • product_clothes(tid, uid, size, color, material, price)(服裝商品表)

垂直拆分帶來的問題

在業務多樣、數據量和吞吐量都很大的情況下,垂直拆分存在諸多問題:這些表以及對應的服務由不同部門維護,看似各業務靈活性強、研發閉環,但這恰恰是問題的開端:

  • 商品 ID(tid)如何規范?
  • 屬性如何規范?
  • 按商家 ID(uid)查詢(查詢商家發布的所有商品)該怎么辦?
  • 按時間查詢(最新上架的商品)該怎么辦?
  • 跨品類查詢(比如首頁搜索框)該怎么辦?
  • 技術范圍擴散,有的用 MongoDB 存儲,有的用 MySQL 存儲,有的自研存儲;
  • 重復開發了不少組件;
  • 維護成本過高。就像大型電商平臺的商品表,不可能一個類目一個表,電商商品信息表也一樣。

四、行業最佳實踐:三大中心服務

第一:統一商品中心服務

對于平臺型電商公司,可能有多個品類,各品類有很多異構數據的存儲需求,無需糾結是分還是合,統一基礎數據和基礎服務是很好的實踐(這里針對平臺型業務)。

異構數據的統一存儲方式

要將不同品類、異構的數據統一存儲,可采用以下方法:

  • 全品類通用屬性統一存儲;
  • 單品類特有屬性,通過品類類型與通用屬性的 JSON 來存儲。

更具體的設計是,商品表結構為:product(tid, uid, time, name, cate, subcate, xxid, ext)。其中:

  • 一些通用字段被單獨抽取出來存儲;
  • 通過cate、subcate、xxid來定義ext的含義;
  • 通過ext來存儲不同業務線的個性化需求。

tid

uid

time

cateid

ext

1

1

123

招聘

{"job":"driver","salary":8000,"location":"bj"}

2

1

456

二手

{"type":"iphone","money":3500}

例如,手機商品的ext可以是:{"brand":"Apple","model":"iPhone 15","memory":"256G","price":6999};服裝商品的ext可以是:{"size":"L","color":"blue","material":"cotton","price":299}。

商品數據有 100 億條,分 256 個庫,通過ext存儲異構業務數據,使用 MySQL 存儲,上層搭建一個商品中心服務,并用 Redis 做緩存,這樣一個并不復雜的架構,就解決了業務的大問題。這就是電商平臺最核心的商品中心服務 PMC(Product Management Center)。

新問題的出現

解決了海量異構數據的存儲問題后,又出現了新問題:

  • 每條記錄的ext內的鍵(key)都需要重復存儲,占用大量空間,能否壓縮存儲?
  • 品類 ID(cateid)已不足以描述ext內的內容,品類有不確定的層級,ext能否具備自描述性?
  • 能否隨時增加屬性,保證擴展性?

解決完海量異構數據的存儲問題,接下來要解決類目的擴展性問題。

第二:統一類目屬性服務

每個業務有多少屬性、這些屬性的含義、值的約束等,如果耦合到商品服務里顯然不合理,那該怎么辦呢?

可以抽象出一個統一的類目、屬性服務,單獨管理這些信息,并且商品庫ext字段里的 JSON 鍵,統一用數字表示,以減少存儲空間。

商品表只存儲元信息,不涉及業務含義。比如,JSON 里的鍵不再是 “brand”“model”“size” 這樣的長字符串,而是用數字 1、2、3、4 代替。這些數字的含義、所屬子分類、值的校驗約束,統一存儲在類目、屬性服務里。

tid

uid

time

cateid

ext

1

1

123

招聘

{"1":"driver","2":8000,"3":"bj"}

2

1

456

二手

{"4":"iphone","5":3500}

類目表存儲業務信息以及約束信息,與商品表解耦。這個表會對商品中心服務里ext字段的數字鍵進行解釋,比如:

圖片圖片

  • 數字 1 代表 “brand”,屬于數碼品類下的手機子品類,其值必須是品牌枚舉值;
  • 數字 4 代表 “size”,屬于服裝品類下的上衣子品類,其值必須是尺碼枚舉值(S、M、L 等)。

這樣,原來商品表的ext擴展屬性就變成了:{"1":"Apple","2":"iPhone 15","3":"256G","4":6999}和{"5":"L","6":"blue","7":"cotton","8":299}(服裝商品),鍵和值都有了統一約束。

此外,如果ext里某個鍵的值不是通過正則校驗,而是枚舉值,就需要有一個枚舉表來對值進行限定校驗。比如,當ext為{"5":"XL","6":"blue","7":"cotton","8":299}時,因為鍵 5 對應的屬性(服裝、上衣尺碼字段)的值需要是固定枚舉值(S、M、L 等),而 “XL” 不符合,所以這個ext是不合法的,合法的應該是{"5":"L","6":"blue","7":"cotton","8":299}。

另外,類目屬性服務還能記錄類目之間的層級關系,比如:

  • 一級類目有數碼、服裝、家居等;
  • 數碼下有二級類目手機、電腦等;
  • 手機下有三級類目蘋果手機、華為手機、小米手機等。

類目服務解釋了商品數據,描述了品類層級關系,保證了各類目屬性的擴展性,也保證了各屬性值的合理性校驗,這就是電商平臺另一個統一的核心服務 CMC(Category Management Center)。

這就類似于電商系統里的商品屬性擴展服務:

  • 品類層級關系對應電商里的類別層級體系;
  • 屬性擴展對應電商里各類別商品的屬性;
  • 枚舉值校驗對應屬性的枚舉值,比如手機品牌有蘋果、華為、小米等。

通過品類服務,解決了鍵的壓縮、描述、擴展以及值的校驗、品類層級等問題,但還有一個問題沒解決:每個品類下商品的屬性不同,查詢需求也不同,如何解決 100 億數據量、1 萬種屬性的檢索與聯合檢索需求呢?

第三:統一檢索服務

當數據量很大時,不同屬性上的查詢需求,不可能通過組合索引來滿足所有查詢需求,“外置索引,統一檢索服務” 是常用的實踐方法:

  • 數據庫提供 “商品 ID” 的正排查詢需求;
  • 所有非 “商品 ID” 的個性化檢索需求,統一通過外置索引來滿足。

圖片圖片

元數據與索引數據的操作遵循以下規則:

  • 對商品進行商品 ID(tid)正排查詢,直接訪問商品服務;
  • 對商品進行修改時,商品服務通知檢索服務,同時修改索引;
  • 對商品進行復雜查詢時,通過檢索服務來滿足需求。

這個檢索服務承擔了電商平臺 80% 的請求,不管請求來自 PC 還是 APP,也不管是來自首頁、分類頁、搜索頁、商品列表頁還是詳情頁,最終都會轉化為一個檢索請求。

搜索引擎架構說明

為了應對 100 億級別的數據量、幾十萬級別的吞吐量以及業務線各種復雜的檢索查詢,擴展性是設計的重點:

圖片圖片

  • 統一的代理層作為入口,由于其無狀態性,增加機器就能擴充系統性能;
  • 統一的結果聚合層,同樣因為無狀態性,增加機器也能擴充系統性能;
  • 搜索內核檢索層,服務和索引數據部署在同一臺機器上,服務啟動時可將索引數據加載到內存,請求訪問時從內存中讀取數據,訪問速度很快。為滿足數據容量的擴展性,索引數據進行了水平切分,增加切分份數就能無限擴展性能;為滿足一份數據的性能擴展性,同一份數據進行了冗余,理論上增加機器就能無限擴展性能。系統時延方面,100 億級別商品檢索,包含請求分合、拉鏈求交集等操作,從聚合層可以做到 10 毫秒返回。

在商品業務中,一致性不是主要矛盾,檢索服務會定期全量重建索引,以確保即使數據存在不一致,也不會持續很長時間

責任編輯:武曉燕 來源: 二進制跳動
相關推薦

2019-07-29 14:40:26

架構存儲檢索

2019-05-05 09:28:59

架構數據查詢

2020-03-26 08:07:28

紅包架構請求

2017-01-19 18:20:59

數據架構數據庫

2025-09-29 09:49:26

2017-03-20 16:13:31

微信紅包高并發紅包系統

2020-08-20 08:11:15

程序員技術網絡

2020-03-20 11:51:54

運維監控技術

2025-08-22 09:06:57

2025-01-12 13:06:45

2022-08-03 10:57:23

服務網格字節跳動流量治理

2012-02-10 09:34:02

2021-03-04 07:59:40

壓測代碼日志

2010-12-07 11:24:45

跳槽

2015-03-02 13:10:53

IT技術周刊

2020-12-30 09:45:50

MySQL數據分離數據庫

2023-09-12 14:40:41

2025-09-28 01:50:00

2025-06-23 08:23:04

2013-09-27 09:59:52

云計算大數據Salesforc
點贊
收藏

51CTO技術棧公眾號

青草青草久热精品视频在线网站| 久久久久久麻豆| 亚洲国产天堂久久国产91 | 国产精品三区在线观看| 精品一区二区三区免费看| 中文字幕乱码日本亚洲一区二区| 97在线视频免费| 新91视频在线观看| 91中文字幕在线播放| 久久亚洲国产| 日韩精品一区二| 精品一区二区三区毛片| 性猛交xxxx| 麻豆成人免费电影| 国模精品视频一区二区| 亚洲美女精品视频| 美女写真久久影院| 一区二区三区四区不卡视频 | 啦啦啦免费高清视频在线观看| 亚洲精品v亚洲精品v日韩精品| 亚洲欧美日本韩国| 久久精品国产精品国产精品污 | 国产日韩欧美视频在线| 久久成人国产精品入口| 国产乱人伦精品一区| 一区二区三区欧美久久| 成人激情黄色网| 成人福利网站在线观看11| 日本一二三区在线| 亚洲播播91| 婷婷一区二区三区| 国产乱码精品一区二区三区不卡| 黄色小视频在线免费看| 久久中文亚洲字幕| 亚洲区免费影片| 成年人三级视频| 青青草免费在线视频| 国产激情一区二区三区桃花岛亚洲| 日韩大片免费观看视频播放| 欧美 日韩 亚洲 一区| 午夜精品久久久久久久96蜜桃 | 国产成人精品影视| 国产精品国产三级国产aⅴ9色| 1024在线看片| 外国成人在线视频| 欧美区视频在线观看| 日韩亚洲在线视频| 涩涩涩视频在线观看| 成人天堂资源www在线| 久久久久久久久91| 天天色天天综合网| 69堂精品视频在线播放| 成人欧美一区二区三区白人 | 亚洲精品中字| www.黄色一片| 日韩国产网站| 亚洲欧洲美洲国产香蕉| 欧美日韩国产综合久久| 亚洲色精品三区二区一区| 一级毛片久久久| 99久久精品国产一区二区三区| 欧美极品在线视频| 欧美日韩大片在线观看| 精品盗摄女厕tp美女嘘嘘| 欧美性受xxxx黑人xyx| 久久人妻精品白浆国产| 成人免费福利| 欧美日韩视频在线观看一区二区三区| 黄色三级中文字幕| 菠萝蜜视频在线观看www入口| 久久久99精品久久| 日韩欧美在线电影| 成人三级黄色免费网站| 国产精品视频第一区| 先锋在线资源一区二区三区| 亚洲麻豆精品| 亚洲另类在线制服丝袜| 香港三级日本三级a视频| 丁香高清在线观看完整电影视频| 国产精品午夜电影| 夜夜春亚洲嫩草影视日日摸夜夜添夜 | 亚洲第一福利社区| 国产一区二区三区免费视频| 国产精品视频看看| 韩国三级成人在线| 欧美mv和日韩mv的网站| 色综合天天色综合| 成人高潮aa毛片免费| 亚洲午夜免费电影| 精品99在线视频| 91tv亚洲精品香蕉国产一区| 在线不卡欧美精品一区二区三区| 欧美 日韩精品| avav成人| 欧美岛国在线观看| 干b视频在线观看| 国产成人一二| 亚洲三级 欧美三级| 极品色av影院| 99riav1国产精品视频| 国产精品久久久久久久久久ktv| 少妇一级淫片免费放中国| 日韩成人av影视| 日本在线观看天堂男亚洲| 最近国语视频在线观看免费播放| 久久久成人网| 日本伊人精品一区二区三区介绍| 男人日女人网站| 狠狠网亚洲精品| 欧美久久电影| 久草在线新免费首页资源站| 亚洲国产三级在线| 五月天av在线播放| **国产精品| 亚洲区一区二区| 国产在线观看99| 蜜桃精品在线观看| 成人黄色午夜影院| 久久精品蜜桃| 亚洲国产精品尤物yw在线观看| 日本中文字幕亚洲| 国产精品99精品一区二区三区∴| 在线亚洲高清视频| 天天爽天天爽夜夜爽| 欧美一区二区三区久久| 欧美成人精品一区二区三区| 高潮无码精品色欲av午夜福利| 另类人妖一区二区av| 精品伦精品一区二区三区视频| 日韩一二三四| 欧美国产禁国产网站cc| 成人免费性视频| 国内精品久久久久久野外| 狠狠躁夜夜躁人人爽超碰91| 免费在线激情视频| av综合网址| 精品中文字幕乱| 日韩女同强女同hd| 国产精品白丝jk白祙喷水网站| 国产精品嫩草在线观看| www国产在线观看 | 一区二区三区视频| 日韩免费电影| 亚洲免费视频一区二区| 日韩熟女精品一区二区三区| 国产成人99久久亚洲综合精品| 国内精品一区二区| 青春草在线视频| 日韩亚洲欧美成人一区| 日本黄色特级片| 欧美专区18| 免费一区二区三区| av网站大全在线| 在线播放91灌醉迷j高跟美女| 丰满岳乱妇一区二区| 欧美日韩一二三四| 高清一区二区三区四区五区| 精品美女www爽爽爽视频| 一区二区三区在线不卡| 日本少妇xxx| aaa国产精品视频| 欧美国产日韩免费| 日韩乱码一区二区三区| 国产亚洲欧美在线| 亚洲一区日韩精品| 久久久久国产精品| 99电影网电视剧在线观看| 欧美1—12sexvideos| 亚洲第一福利网| 91免费在线看片| 开心九九激情九九欧美日韩精美视频电影 | 国产精品69xx| 亚洲国产欧美自拍| www亚洲视频| 国产精品欧美久久久久无广告| 中文字幕日本最新乱码视频| 在线成人动漫av| 国产一区视频在线| 第一福利在线| 亚洲乱码国产乱码精品精98午夜 | 婷婷综合网站| 99在线免费观看视频| 8x8ⅹ拨牐拨牐拨牐在线观看| 在线成人av影院| 久久免费视频99| 日产国产欧美视频一区精品| 国产伦精品一区二区三区高清版 | 久久国产精品影片| 中文在线字幕av| 久久久精品免费观看| 亚洲精品手机在线观看| 午夜精品久久久久久毛片| 精品美女被调教视频大全网站| 国产精品国产三级国产专业不| 亚洲精品综合| 亚洲高清乱码| jazzjazz国产精品久久| 久99久在线视频| 蜜桃视频在线入口www| 欧美精品丝袜久久久中文字幕| 日韩一卡二卡在线观看| 成人小视频免费在线观看| 精品国产成人av在线免| 一区二区免费不卡在线| 久久久久久久久四区三区| **欧美日韩在线| 日韩av手机在线| 欧美hdxxx| 日韩最新在线视频| 91在线精品入口| 亚洲黄色av一区| 中文字幕在线1| 丁香五精品蜜臀久久久久99网站| www.日本在线视频| 欧美va久久久噜噜噜久久| 国产一区免费视频| 亚洲不卡在线| 国产日产欧美精品| 激情开心成人网| 日韩综合视频在线观看| 乱精品一区字幕二区| 9191成人精品久久| 成人黄色免费网| 亚洲精品亚洲人成人网在线播放| 免费在线观看日韩av| 麻豆视频观看网址久久| 300部国产真实乱| 日韩中文字幕高清在线观看| 免费看污久久久| 老牛精品亚洲成av人片| 国产精品欧美激情在线播放| 僵尸再翻生在线观看免费国语| 亚洲性猛交xxxxwww| 日本韩国免费观看| 欧美中文字幕一区| 成人免费视频毛片| 天天综合天天做天天综合| 看片网站在线观看| 自拍偷拍国产精品| 欧美激情视频在线| 神马久久精品综合| 欧美激情在线观看视频免费| 亚洲天堂网一区二区| 黑人精品欧美一区二区蜜桃| 国产精品一线二线三线| 欧美国产激情| 69精品丰满人妻无码视频a片| 免费视频国产一区| 欧美日韩在线高清| 国产精品美女久久久久久不卡| 91美女片黄在线观| 亚洲精品中文字幕| 欧洲亚洲妇女av| 九九热线视频只有这里最精品| 毛片精品免费在线观看| 免费黄网站在线观看| 亚洲精品网站在线播放gif| 天堂91在线| 狠狠躁夜夜躁人人爽超碰91| 久久久免费看片| 国产精品精品国产色婷婷| www成人啪啪18软件| 99re这里只有精品首页| caoporm在线视频| 韩国av一区二区三区| 免费看三级黄色片| 99久久精品国产毛片| 国产在线观看h| 国产精品沙发午睡系列990531| 三叶草欧洲码在线| 久久精品视频在线看| 成人一级片免费看| 亚洲男帅同性gay1069| 国产大片aaa| 日韩欧美亚洲综合| 久久久99精品| 午夜伦理一区二区| 天天射天天干天天| 欧美精品久久天天躁| 久久这里只有精品9| 51精品视频一区二区三区| 亚洲精品字幕在线观看| 亚洲欧美日韩另类| 成人影院www在线观看| 国模私拍一区二区三区| 午夜av在线免费观看| 欧美在线亚洲一区| 一个人看的www视频在线免费观看 一个人www视频在线免费观看 | 精品久久亚洲| 成人福利免费观看| 国产综合中文字幕| 婷婷综合久久| 91猫先生在线| 韩国成人精品a∨在线观看| 日韩中文字幕免费在线| 国产在线播放一区| 国产三级国产精品| 亚洲欧美日韩国产另类专区| 国产又爽又黄的视频| 欧美区视频在线观看| 亚洲欧美日韩精品永久在线| 亚洲美女性生活视频| 麻豆网站在线看| 69影院欧美专区视频| 91精品在线免费视频| 免费成人深夜夜行视频| 亚洲天堂免费| 亚洲成人动漫在线| 欧美国产免费| 国产高潮免费视频| 精品综合久久久久久8888| 精品国产一区在线| 亚洲欧美日韩一区二区三区在线观看| 日本中文在线视频| 亚洲一区在线视频| 91精品国产高潮对白| 欧美日韩电影一区| 午夜精品一区二区三| 伊人久久五月天| 蜜桃视频www网站在线观看| 91久久久久久国产精品| 欧美日韩性在线观看| 一本—道久久a久久精品蜜桃| 欧美成人嫩草网站| 亚洲一级免费观看| 久久久久久9999| 91麻豆精品久久毛片一级| 亚洲视频 欧洲视频| 欧美人妻精品一区二区三区| 欧美日韩国产三级| 精品乱码一区二区三四区视频 | 91在线高清视频| 久久99性xxx老妇胖精品| 成年人视频网站免费| 国产一区二区三区香蕉| 日本一区二区在线免费观看| 国产欧美一区二区在线| 亚洲黄色小说图片| 亚洲黄色片网站| av2020不卡| 国产一区二区三区四区五区在线| 精品国产精品国产偷麻豆| 国产亚洲精品网站| 99久久久国产精品免费蜜臀| 国产在线观看成人| 欧美日韩精品高清| 天堂中文在线官网| 97国产精品久久| 欧美18免费视频| 99久久久无码国产精品性色戒| 国产日韩欧美一区| 成年人在线观看av| 亚洲欧美偷拍另类a∨色屁股| 一级片视频在线观看| 国产网站欧美日韩免费精品在线观看 | 日日夜夜天天综合| 亚洲va韩国va欧美va精四季| 伊人成人在线视频| 波多野结衣先锋影音| 色婷婷av一区二区三区软件| 国内精品在线视频| 国产精品久久久久久久久久东京| 欧美国产极品| 一区二区传媒有限公司| 久久综合中文字幕| 蜜臀尤物一区二区三区直播| 中文字幕日本精品| 国产精品一区二区精品| 老司机激情视频| 91麻豆免费看| 五月激情丁香网| 亚洲精品中文字幕有码专区| 成人在线视频播放| 一本色道久久综合亚洲精品婷婷 | 免费看欧美一级片| jizz一区二区| 久久久国产精品人人片| 日韩精品免费在线| 欧美人体视频xxxxx| 91在线无精精品一区二区| 亚洲午夜在线| 色无极影院亚洲| 欧美精品免费视频| 6699嫩草久久久精品影院| 欧洲亚洲一区二区| 乱码第一页成人| 午夜激情视频在线播放| 日韩精品一区二区三区中文精品| 3d玉蒲团在线观看| 久久99导航| 狠狠色综合播放一区二区| 好吊妞视频一区二区三区| 最近2019免费中文字幕视频三| 欧美电影h版| 法国空姐在线观看免费| 国产原创一区二区| 特级毛片www| 欧美成人午夜激情在线| 国产乱码精品一区二区三区四区| 青青青国产在线视频|