业务赋能利器之外卖特征档案
應用背景及現狀
美團外賣業務自2013年9月啟動至今已運營三年時間。截至2016年12月,美團點評整個外賣平臺的日訂單超過900萬。從發展速度和體量上看,外賣業務仍處在迅猛發展的上升期。與早期飛速增長的狀態相比,隨著規模的不斷擴大,業務的發展需要更健康、高效,這就對業務對象、業務環節的整體業務運營管理提出更高的要求。
特征檔案平臺向各業務提供了用戶/商戶篩選和檔案管理服務,同時提供了數據查詢、存儲、生成、導出等數據管理功能,能夠提高運營工作效率。當前用戶特征檔案平臺覆蓋全部的外賣用戶,有特征標簽近200個,商戶特征檔案平臺覆蓋全部的外賣商戶,有特征標簽400多個。
特征檔案的用戶希望通過平臺及時獲取到滿足篩選條件的結果集,并保存固定的篩選邏輯,實現定制化篩選。抽象出來,主要有以下幾個核心訴求: * 便捷的篩選方式。通過點擊頁面可視化的標簽,進行便捷查詢。 * 即時自助查詢。不同的使用者可隨時執行各種各樣的標簽查詢。 * 查詢結果全量獲取。對滿足查詢條件的結果全集進行全量獲取。
面對上面的需求,開發人員需要解決以下幾個核心問題: * 將海量數據處理加工成標簽,并實現完善的標簽體系。 * 使用合適的存儲查詢引擎實現即時查詢海量數據。 * 使用合適的存儲查詢引擎實現查詢結果的全量獲取,并提供接口服務。
特征檔案的標簽生產,在外賣數據倉庫中完成。針對主題加工出需要的標簽,圍繞用戶以及商戶建立完善的標簽體系,支撐上層應用。我們使用了ES(Elastic Search)存儲單天的特征數據,極大的改善了系統的查詢性能,實現了即時查詢海量數據。對于特征檔案查詢結果的存儲與查詢,我們可以借助于HBase的非結構化存儲和強大的存儲能力,將數據服務進行包裝,提供統一的服務客戶端進行數據交互,業務系統根據需求調用相應的服務,解耦與業務系統的邏輯。
目前特征檔案平臺主要提供以下服務: * 通過特征標簽篩選目標用戶/商戶,提供任意標簽組合邏輯的即時查詢服務; * 將篩選條件保存成為檔案,支持檔案的保存、修改、刪除等操作; * 通過檔案生成當前滿足條件的數據實例,支持實例的查看、導出、離線上傳等操作; * 提供服務化接口,支持通過Thrift接口調用的方式查詢用戶/商戶特征,或通過檔案、實例獲取用戶/商戶集合。
系統介紹
系統架構
特征檔案服務的系統架構如下圖所示。主要分為三個部分:數據加工層(數據倉庫)、數據服務層(waimai_data_feature_service服務)、數據應用層。
在數據加工層中,特征檔案的數據源主要為離線數據。離線數據源存儲在Hive中,主要收集了外賣數據倉庫中的用戶、商戶相關的業務數據、外賣流量數據。離線數據在數據開放平臺進行加工處理,將標簽結果數據寫入線上ES集群中。在離線數據寫入線上ES集群的過程中,進行了數據去重處理(唯一性檢驗),保證了線上篩選結果的唯一性。
在數據倉庫之上,我們建立了數據服務層,并針對不同的應用選擇了差異化的數據存儲和查詢引擎。數據服務層中,使用ES作為特征存儲和查詢引擎,使用HBase存儲用戶/商戶實例(這里的實例是指為業務方通過特征檔案服務勾選出篩選條件并生成的數據結果集)。使用了MySQL數據庫存儲特征檔案平臺相關的檔案、實例、標簽管理、平臺操作日志等信息。
waimai_data_feature_service是數據服務層的核心,使用了公司提供的分布式服務通信框架及服務治理系統框架,對外提供Thrift接口。它提供的主要服務包括:特征篩選的預覽查詢,檔案創建及管理,實例生成及管理,實例導出,離線上傳實例,標簽管理。
最上層是數據產品和應用,基于外賣數據平臺的特征檔案平臺提供了可視化的功能,并針對不同的業務需求方提供不同的數據應用服務,主要分為兩大類: * 精準營銷:提供用戶和商戶的營銷策略支持。 * 運營管理:提供商戶的管理支持。
服務架構
waimai_data_feature_service服務架構如下圖所示,整體上分為六個部分:服務配置、MySQL服務、HBase服務、ES服務、AOP(Aspect Oriented Programming)、標簽管理。
服務配置:服務使用了美團統一配置中心(MCC)實現了服務配置管理。
MySQL服務:為特征檔案平臺相關的檔案、實例、標簽管理、平臺操作日志等信息提供存儲和查詢服務。
HBase服務:使用HBase實現實例的存儲和查詢。
ES服務:提供兩種ES查詢方式。FromToQuery即傳統的分頁查詢,適合小數據量的淺分頁查詢,它的典型使用場景是特征檔案平臺中通過勾選某些篩選條件來預覽數據結果(預覽查詢)。ScrollQuery即深分頁查詢,用于一次性查詢大量的數據甚至是全部數據,它的典型使用場景是通過篩選條件獲取到全部數據結果集(實例生成)。
AOP服務:提供了兩種切面,日志上報和服務開關。日志上報即日志收集(埋點),適用于方法級別。服務開關實現了對不同服務的開關管理。
標簽管理:標簽管理模塊將標簽分成了多種類型,不同的類型實現了不同的標簽管理方法(這里的標簽管理方法是指標簽實現頁面展示邏輯的方法,標簽的篩選邏輯轉換成可供ES查詢的過濾器方法,通過關聯標簽維表將標簽的查詢結果轉換成適合的結果形式方法)。FeatureShow提供了特征檔案平臺中的特征標簽展示服務,GenESFilter實現了將標簽查詢語言解析成ESFilter的功能,ParseQueryResult則實現了將ES查詢結果解析成最終可展示的友好的結果形式。
特征標簽
標簽體系,標簽的生產、存儲與查詢,是我們在系統開發過程中最核心的技術問題,也直接影響著整個特征檔案平臺的性能和用戶體驗。在本文前面提到的幾個核心問題,就是我們需要解決的: * 海量數據處理加工成標簽,并實現完善的標簽體系; * 使用合適的存儲查詢引擎實現即時查詢海量數據; * 使用合適的存儲查詢引擎實現查詢結果的全量獲取,并提供接口服務。
標簽體系
特征檔案平臺的標簽體系如下圖所示。標簽分為兩大類:商戶特征標簽和用戶特征標簽。每一大類標簽中,我們又繼續劃分了維度。商戶特征包含已合作外賣商戶和未合作外賣商戶兩個維度。用戶特征包含外賣用戶和外賣設備兩個維度。
在維度劃分的基礎上,繼續按照標簽的屬性進行分組。商戶特征屬性包含:基本屬性、經營能力等。用戶特征屬性包含:用戶自然屬性、用戶交易屬性等。在各個屬性內部是具體的特征標簽,特征標簽是一個或多個具有相似業務含義的初級標簽的聚合形式。初級標簽是指在數據倉庫中最先生產出來的細粒度的標簽。標簽的全部行為由標簽管理方法決定,標簽的行為包含:標簽的展示樣式(新增、更改、刪除等)、標簽的使用邏輯等。
標簽體系為特征檔案平臺提供了可靠、穩定、規范的標簽管理服務,通過標簽體系我們可以規范數據開發流程、簡化和統一標簽的生產方式。我們使用ES搜索引擎來實現面向應用的標簽數據存儲,ES自身有很強大的實時搜索和分析性能。標簽管理服務便于開發人員靈活的配置平臺中的可用標簽,未來可以支持定制化的標簽管理,也可以結合其他服務深入分析挖掘特征檔案平臺的標簽。
標簽生產
特征檔案標簽的生產在外賣數據倉庫中完成,標簽生產數據流如下圖所示。數據流主要包括三大部分,數據源、Hive數據倉庫、數據應用。其中Hive倉庫中又分為四個部分,ODS表群、基礎表群(FACT表、DIM表、維度快照表)、集市層表群(AGGR表)、應用層表群(TOPIC表)。數據應用層分為兩個部分,應用緩沖層和應用層。標簽生產過程分六步:源數據獲取(Extract)、ODS層表群向基礎層表群轉換(Transform)、基礎層向集市層的數據匯總、集市層向主題層的數據集成、主題層向應用層的緩沖、最終形成應用數據。
數據源當前主要包含外賣各個業務線的業務庫和外賣日志。我們將這一部分數據同步到Hive數據倉庫中,形成ODS層表群(和源系統同構的表群)。從ODS層向基礎層表群轉換,得到我們的基礎數據層,其中包含事實表、維度表、快照表。基礎數據層中的表是我們生產標簽數據的核心基礎表,也是我們形成初級數據聚合表的直接數據源。基礎數據層包含的數據例如訂單事實、商戶事實、行為事實等。
聚合層是我們形成初級數據聚合的地方,也是初級標簽生成的地方。在聚合層,我們將初級標簽劃分成了不同的屬性,依據標簽屬性分組,不同的分組對應不同的聚合表。
初級標簽生成后,我們將初級標簽集成到主題層。主題層是我們數據倉庫產出的可面向應用的最終結果表群。
數據應用部分我們首先進行了一層緩沖,即主題層過度到最終線上應用數據的應用緩沖層。在這一層,我們將初級標簽聚合成終極標簽,存儲結構選用了Hive的Map結構存儲。這樣的好處是將一個或多個具有相似業務含義的初級標簽統一管理,并在標簽體系中具有相同的標簽行為。應用緩沖層僅存儲了最新一天的數據。
最后的應用層,我們將緩沖好的數據寫入線上的ES集群中,每天都會進行重建索引的流程。
標簽存儲與查詢
我們在Hive中完成特征數據的加工與存儲,整體特征檔案系統幾乎涵蓋了外賣業務的所有指標。我們首先將指標按照主題歸類,針對主題加工出需要的標簽,然后建立層次準確清晰的數據底層模型,將不同主題的數據進行集成,圍繞用戶以及商家建立完善的標簽體系,支撐上層應用。
在數據倉庫之上的數據服務層,并針對不同的應用選擇了差異化的數據存儲和查詢引擎。數據服務層中,我們決定使用ES作為特征存儲和查詢引擎,主要有以下理由: * ES整個系統設計和架構非常簡潔,運維方案簡單,也有專門的工具支持; * ES具有強大的實時搜索和分析性能,針對大規模數據提供了優秀的查詢性能(秒級查詢); * ES便捷的數據交互方式(Restful API)配合上完善的標簽管理體系,使特征檔案的標簽擴展性很強(通過JSON格式可以靈活變更標簽的存儲邏輯)。
標簽查詢語言
特征檔案平臺支持的查詢語言是在標簽上定義的一階謂詞邏輯標簽查詢語言。傳統意義上的標簽通常僅具有“是否”邏輯,如:“成熟用戶、北京市”。特征檔案中的標簽突破了傳統意義上標簽的定義,自身支持多種查詢邏輯:大于、小于、是、否。在標簽自身的查詢邏輯基礎上,標簽與標簽之間也支持與、或、非及組合邏輯。
舉例來說,特征檔案支持如下的查詢語言:
“(物理城市名稱:淮北)與((是否有營業執照:是)或(是否有餐飲許可證:是))與(交易額:大于80))”。
當前的標簽查詢語言,極大的豐富了標簽之間的查詢可能組合。以用戶成熟度標簽舉例說明,包含三種傳統標簽:初級用戶、成長用戶、成熟用戶。特征檔案平臺支持對這三種傳統標簽進行直接篩選查詢,也支持通過對歷史訂單數的范圍自定義完成用戶成熟度標簽的自定義篩選查詢。
總結與展望
特征檔案平臺主要的使用場景是營銷、運營管理等領域。隨著美團外賣業務的發展,特征檔案平臺持續的遇到新的問題和挑戰。總結開發經驗,我們歸納出以下數據系統設計的要點: * 數據倉庫 特征檔案系統涵蓋的指標范圍廣,為了整合系列指標,我們首先將指標按照主題歸類,針對主題加工出需要的標簽,然后建立層次化的數據底層模型,將不同主題的數據進行集成,圍繞用戶以及商家建立標簽體系,支撐上層應用。 * 數據存儲 針對不同場景,需要合理地選擇存儲組件。對于特征檔案實例的存儲,由于數據量巨大,同時需要通過追溯歷史來進行營銷效果分析等深入的數據分析工作,我們借助于HBase的非結構化存儲和強大的存儲能力。對于特征檔案的生成和查詢,我們使用ES來存儲,借助于ES的索引機制,我們可以快速的查詢和提取符合條件的用戶或者商戶。對于系統的管理以及效果報表的展示數據等結構化的數據,我們選擇了結構化的MySQL。 * 數據服務 在數據服務上,借助于分層和SOA的思想,我們針對不同的存儲來源提供不同的服務組件,實現數據查詢和數據提取。同時,我們將數據服務進行包裝,提供統一的服務客戶端進行數據交互,業務系統根據需求調用相應的服務,解耦與業務系統的邏輯。
未來,外賣特征檔案平臺將持續為外賣運營系統提供數據支持,將從以下幾個方面進行優化: * 接入第三方標簽 未來應用將依托于公司內外部數據,獲取更加準確的特征標簽。 * 支持個性化的定制標簽使用 當前系統的標簽還僅僅局限于事先預計算的用戶特征,未來將支持用戶自定義標簽,然后從數據集中篩選出用戶,更加靈活、自由的提取滿足特征的群體。 * 數據挖掘 未來將會對常用的特征檔案進行深入挖掘,分析該群體的行為特征,更加準確定位,滿足用戶需求。
總結
以上是生活随笔為你收集整理的业务赋能利器之外卖特征档案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蚂蚁三面题目(java开发岗):Java
- 下一篇: 【思考】PHP——成也Web,败也Web