轉轉運營系統(tǒng)之商品標簽平臺
1. 背景
轉轉作為國內(nèi)領先的二手電商平臺,商品品類橫跨數(shù)碼3C、家電家居乃至奢品、汽車,用戶群體與需求呈現(xiàn)顯著差異化。例如,學生群體側重性價比,白領階層偏好品質服務。為了實現(xiàn)商品與用戶的精準匹配,就需要精細化的運營策略,然而,精細化的運營卻面臨以下難題:
1.1 精細化運營面臨四大難題
- 二手商品數(shù)據(jù)復雜性高:二手商品除了商品本身的標品屬性外,還存在成色、機況、質檢報告等大量的非標屬性。這些屬性描述方式多樣,缺乏統(tǒng)一標準,信息分散在商品描述、圖片、質檢報告等不同地方,導致商品數(shù)據(jù)結構復雜,難以標準化管理。
- 商品管理和篩選效率低下:傳統(tǒng)電商的標準化SPU維度無法有效處理二手商品豐富的非標屬性,平臺難以基于這些關鍵屬性對商品進行精細化管理和篩選。
- 用戶體驗受影響:由于缺乏對非標屬性的有效利用,導致用戶在搜索商品時難以精準定位到符合需求的商品,例如,用戶想要搜索“成色好”的二手手機,傳統(tǒng)篩選系統(tǒng)可能無法有效支持這種基于非標屬性的搜索。
- 運營效率難以提升:由于數(shù)據(jù)復雜且難以有效管理,平臺難以基于數(shù)據(jù)進行深入分析,無法精準了解商品銷售情況、用戶偏好等,從而難以制定有效的數(shù)據(jù)驅動運營策略,限制了運營效率的提升。
1.2 商品標簽平臺旨在解決上述痛點
- 結構化非標屬性數(shù)據(jù):將分散、非結構化的非標屬性信息轉化為結構化的標簽,實現(xiàn)數(shù)據(jù)標準化管理。
- 提高商品管理和篩選效率:基于標簽系統(tǒng),平臺可以高效地篩選和管理商品,提升運營效率。
- 提升用戶體驗:通過基于標簽系統(tǒng)的精準搜索和推薦,幫助用戶快速找到心儀的商品,提升購物體驗。
- 實現(xiàn)數(shù)據(jù)驅動運營:利用標簽數(shù)據(jù)進行深入分析,為平臺運營決策提供數(shù)據(jù)支持,提升運營效率和競爭力。
2. 系統(tǒng)總覽
整個商品標簽平臺大致上可分為三層:
系統(tǒng)架構圖
應用層:應用層作為系統(tǒng)的入口,負責提供用戶操作界面(后臺配置中心、標簽后臺組件)和RPC 接口,是用戶和外部系統(tǒng)與標簽平臺進行交互的通道。
服務層:服務層是系統(tǒng)的核心業(yè)務處理層,負責執(zhí)行關鍵的商品標簽匹配、標簽生命周期管理、離線數(shù)據(jù)管理、商品管理和數(shù)據(jù)互聯(lián)互通等核心業(yè)務邏輯。
數(shù)據(jù)層:數(shù)據(jù)層為服務層提供多樣化的數(shù)據(jù)存儲能力,包括關系型數(shù)據(jù)庫(MySQL)、搜索引擎(ES)、本地緩存(Local Cache)和分布式緩存(Redis),以滿足不同類型數(shù)據(jù)的存儲和高效訪問需求。
3. 系統(tǒng)核心設計之如何保證標簽的實時性
3.1 背景
作為電商平臺,商品的更新和用戶的行為都會時刻發(fā)生,商品標簽的實時性會直接影響到用戶的體驗和整體的運營效率。那么在標簽平臺中,是如何設計來保證實時性呢?
實時性設計示意圖
解釋:增量(給變動的商品重新匹配標簽);存量(給符合標簽規(guī)則的商品進行標簽綁定)
3.2 核心設計
- 流量分離:上圖中,雖然執(zhí)行的都是商品和標簽的匹配操作,但明確區(qū)分了實時性要求高的增量打標和非實時性的存量打標。為什么這么做呢?
流量分離示意圖
- 提升實時打標響應速度:增量打標專注于處理商品變更、價格變更等實時事件,通過消息隊列驅動,可以做到事件發(fā)生時立即觸發(fā)打標流程,大幅降低打標延遲,保證實時性。
- 降低存量打標對實時性的影響:存量打標通常存在不確定性,標簽圈選的商品數(shù)量級未知,將存量與增量打標分離,可以避免存量打標任務對實時打標鏈路造成性能沖擊,保證實時打標的穩(wěn)定性和低延遲。
- 資源隔離,提升系統(tǒng)穩(wěn)定性:將不同類型的打標任務隔離處理,可以更好地進行資源調配和管理,避免資源爭搶,提升系統(tǒng)的整體穩(wěn)定性。
- 事件驅動:通過對商品進行監(jiān)聽,讓系統(tǒng)對商品數(shù)據(jù)的變更事件立即做出反應,而不是被動等待或輪詢。當商品數(shù)據(jù)發(fā)生變化(例如商品創(chuàng)建、更新、價格變動、屬性變更等)時,系統(tǒng)能夠立即捕獲這些事件,并觸發(fā)后續(xù)的打標流程。
事件驅動示意圖
- 引入去重 MQ (Deduplication MQ) 機制:在實踐中發(fā)現(xiàn),一個商品的某一塊數(shù)據(jù)發(fā)生了變化,那么其他數(shù)據(jù)會產(chǎn)生一種聯(lián)動效應,一起發(fā)生變化,所以在增量通道中新增"ES處理去重MQ"和"增量標簽匹配去重MQ"兩種去重消息隊列,減少因消息重復導致的商品與標簽的重復匹配,提升標簽數(shù)據(jù)的準確性和可靠性,降低不必要的資源消耗。
MQ去重示意圖
4. 系統(tǒng)核心設計之如何保證數(shù)據(jù)的一致性
4.1 背景
針對存量打標,是對平臺所有存量商品進行標簽匹配的操作。涉及大量數(shù)據(jù)的批量處理,數(shù)據(jù)量巨大,處理時間長,處理環(huán)節(jié)多,任何環(huán)節(jié)出現(xiàn)異常都有可能導致數(shù)據(jù)不一致的發(fā)生。為了避免這種情況的發(fā)生,平臺建立了一套完整的機制,用于保證數(shù)據(jù)的一致性。
數(shù)據(jù)一致性設計流程圖
4.2 機制拆解
- 全局統(tǒng)一入口:定義打標任務統(tǒng)一入口,確保每次打標任務都能夠按照預設的流程執(zhí)行下去,最終形成任務流的閉環(huán)。
- 全局互斥鎖:每個存量打標任務圈選的商品數(shù)量是不可預測的,可能存在前一個任務還未執(zhí)行完成,后一個任務已經(jīng)啟動的情況,所以采用全局互斥鎖的操作,來保證同一時刻,只有一個任務在執(zhí)行打標任務,避免多任務并發(fā)執(zhí)行導致任務流執(zhí)行紊亂。
- 全局異常捕獲:任務即使做了統(tǒng)一入口的操作,但在任務執(zhí)行過程中,也會出現(xiàn)因為任務內(nèi)部異常導致執(zhí)行流中斷的情況,所以就引入全局異常捕獲機制,并記錄異常任務的執(zhí)行進度,為后續(xù)任務恢復提供數(shù)據(jù)保證。
- 異常任務恢復:每次新任務開始執(zhí)行之前,默認校驗上次任務是否存在異常,如果存在異常,就根據(jù)異常任務的執(zhí)行進度,開展異常任務斷點續(xù)傳的操作,進一步避免由于任務異常中斷而導致數(shù)據(jù)遺漏問題。
- 數(shù)據(jù)異步處理:利用MQ的異步化處理能力,提升系統(tǒng)效率的同時,并結合MQ的持久化和消息可靠投遞機制,保障任務的順利向下游執(zhí)行,降低數(shù)據(jù)丟失的風險。
為了保證數(shù)據(jù)的一致性,在任務執(zhí)行的過程中每個步驟環(huán)環(huán)相扣,嚴密協(xié)作。從任務級別的全局互斥鎖,到流程內(nèi)部的斷點續(xù)傳機制,再到消息隊列的可靠傳輸,以及全局異常監(jiān)控,每一個步驟都指向了同一個目標:確保存量商品標簽數(shù)據(jù)更新的完整性、準確性和可靠性,最終實現(xiàn)系統(tǒng)數(shù)據(jù)的一致性。
5. 系統(tǒng)核心設計之如何消除數(shù)據(jù)讀取瓶頸
5.1 背景
在整個系統(tǒng)中,特別是進行規(guī)則匹配時,往往需要頻繁地根據(jù)規(guī)則去查找、讀取大量的標簽基礎數(shù)據(jù)。如果每次都直接從MySQL讀取,在高并發(fā)、大數(shù)據(jù)量的情況下,MySQL很容易成為性能瓶頸,嚴重影響打標整體效率。為了避免這種現(xiàn)象的發(fā)生,設計了一套健全的多級緩存結構。
多級緩存設計示意圖
5.2 核心理念
- 多級緩存的數(shù)據(jù)維護
- 始終以MySQL為權威源,所有上層緩存都遵循隨MySQL數(shù)據(jù)變而變的基本原則
- 特殊場景主動清理,在“存量打標任務”啟動時,優(yōu)先主動清理本地緩存和Redis緩存,確保任務基于最新數(shù)據(jù)進行
- 數(shù)據(jù)按需加載,緩存數(shù)據(jù)通常在首次訪問時,從更權威的數(shù)據(jù)源 (Redis 或 MySQL) 按需加載并緩存
- 多級緩存的數(shù)據(jù)讀取
性能高度依賴緩存,多級緩存是保證打標效率的重要組件之一,所以在整個標簽系統(tǒng)的匹配流程中,始終遵循緩存優(yōu)先原則
容錯降級能力設計:在整個緩存數(shù)據(jù)使用中,即使部分緩存層失效,系統(tǒng)仍能退回到下層緩存或數(shù)據(jù)庫,以短暫的性能損失來保證整個標簽數(shù)據(jù)的可用性
多級緩存架構在整個打標系統(tǒng)中至關重要。維護上,以MySQL為權威,緩存失效策略為主,輔以特殊場景清理;讀取上,緩存是性能核心,數(shù)據(jù)獲取分層依賴,并具備容錯能力。并且這種設計在性能、一致性和可靠性之間取得了平衡,從而支撐起高效穩(wěn)定的打標流程。
6. 未來構想
標簽平臺作為轉轉運營系統(tǒng)中的重要組成部分之一,未來還有很大的效率提升空間,后續(xù)也將從以下幾部分入手,進一步提升效率:
- 商品維度:支撐商品打標數(shù)量級由百萬級至千萬級
- 標簽維度:標簽數(shù)據(jù)的結構化,如對標簽數(shù)據(jù)樹形化處理,利用樹的特點,提升匹配效率等
7. 總結
轉轉商品標簽平臺的成功實踐,充分證明了結構化非標數(shù)據(jù)對于二手電商平臺精細化運營的重要性。平臺提供了一種技術驅動的解決方案,巧妙地結合了分層架構、事件驅動、消息隊列、多級緩存、和數(shù)據(jù)一致性保障機制等技術手段,有效解決了精細化運營的痛點,并提供強大的技術支持。