目前很多人對三級頁面的質量分因子不是很了解,不知道有多少個權重,特此京濤老師從京東三級列表頁架構師那獲悉到京東三級類目權重架構開發工作。京東分類頁面的入口
分類列表入口,可以通過京東首頁首屏左側導航進入,是用戶購買商品的幾大入口之一。
分類列表,展示各個分類的商品,有綜合排序、價格排序、銷量排序、上架時間排序、圖書還有出版時間排序。可以按照品牌、價格和各種擴展屬性篩選出想要的商品。下圖以空調列表為例。
分類列表特點
-- 分類多,全站大概幾千個分類;
-- 商品多,每個分類商品多,有的分類能達到上千萬的商品;
-- 需求多樣化,不同分類需求不一樣,例如大家電、圖書需求各不一樣;
-- 請求量大,實時性要求高。
京東分類升級新架構權重
新架構設計目標
-- 分布式,數據可以做多個分片,服務各層可以做到水平擴容;
-- 高可用,雙機房雙活部署;
-- 響應迅速;
-- 數據閉環,線上服務主要數據不依賴于外部API;
-- 運維便捷,方便切換集群,方便分類管理配置;
-- 數據提升,通過優化排序算法,提升GMV、訂單轉化率、客單價等。
新架構功能模塊如上圖所示:
-- 頁面渲染:采用OpenResty(Nginx+Lua)來作模板渲染,方便頁面邏輯的調整;
-- 業務處理:采用golang,所有的篩選、過濾邏輯都是在這一層處理的;
-- 數據異構:頁面渲染需要相關的數據、過濾篩選需要的數據,都是通過異構過來的;
-- 消息處理:通過接入MQ消息,可以實時處理商品上下架、庫存更新、價格修改等消息;
-- 質量分計算:通過大數據平臺計算商品質量分,為綜合排序提供依據;
-- 配置管理中心:負責后臺調度、分類配置等。
新架構功能模塊上線情況
新架構離線數據流程如下圖
其中:
-- 數據集市,使用的是京東的大數據平臺;
-- JSS,是京東自研分布式文件存儲系統;
-- JIMDB,是京東自研KV存儲系統,可當分布式Redis使用。
詳解各個模塊的權重
* 質量分計算
由于每個分類的商品非常多,個別分類達千萬量級的SKU,而用戶瀏覽的SKU有限,我們需要將用戶最可能買的商品排在前面;為每個分類的所有sku進行質量分計算,涉及到幾十個指標(包括銷量、評價、瀏覽、轉化率等);根據質量分的高低進行排序;由于涉及數據量很大,所有計算都在大數據平臺完成;將計算結果推送到JSS。
由于還有一些特殊規則,例如品牌穿插、店鋪穿插、特殊排序等,這些規則的實現是通過worker實現,讀取jss,并進行特殊規則處理。將處理后的數據推送到MYSQL。
* 異構服務
異構服務主要是異構過濾和展示需要的商品數據;調用外部各個接口,形成一張商品寬表。如下圖所示:
業務處理子系統介紹
上圖展示了列表各種篩選邏輯,排序邏輯。
業務處理子系統提供前端所需要的所有過濾篩選接口,以及展示數據。該系統采用golang開發,所有篩選數據都存在內存中,提高檢索速度;展示的數據都放在jimdb中,目的減少占用內存大小,縮短golang的GC時間。下圖展示了內存中存儲的數據。
* 消息處理系統
該系統接收處理相關消息(商品變更,上下架,價格變更,庫存變更),并實時更新到線上,如下圖所示:
更多干貨內容分享盡在京濤老師QQ:207331567分享!