一、京東小程序是什么
京東小程序平臺(tái)能夠提供開放、安全的產(chǎn)品,成為品牌開發(fā)者鏈接京東內(nèi)部核心產(chǎn)品的橋梁,致力于服務(wù)每一個(gè)信任我們的外部開發(fā)者,為不同開發(fā)能力的品牌商家提供合適的服務(wù)和產(chǎn)品,讓技術(shù)開放成為品牌的新機(jī)會(huì)?!癘nce Build, Run Anywhere”,一個(gè)小程序可以在多個(gè)APP運(yùn)行,引擎層抹平差異,一套代碼,相同頁(yè)面,云端下發(fā),多端運(yùn)行。
可能大家還不太了解我們的京東小程序,京東小程序到底是什么呢?它和微信小程序有什么區(qū)別?首先呢,需要明確的是,京東小程序不是運(yùn)行在微信端的京東商城購(gòu)物小程序,而是運(yùn)行在京東APP的,基于京東小程序引擎的一套京東系的小程序。
它是和支付寶小程序或者微信小程序?qū)?biāo)的一類京東化的小程序。
舉個(gè)例子,大家可以體驗(yàn)一下,比如在主站搜索寶格麗,會(huì)通過(guò)搜索直達(dá)直接跳轉(zhuǎn)到寶格麗小程序上,我們可以在這里購(gòu)買奢侈品,或者在首頁(yè)的同城Tab頁(yè)下,可以瀏覽到非常多的到家門店類的小程序,總之,京東小程序所覆蓋的業(yè)務(wù)還是極其廣泛的!
當(dāng)然,京東小程序不僅僅可以運(yùn)行在京東APP上,只要宿主在運(yùn)行時(shí)依賴了我們的小程序SDK引擎,就可以實(shí)現(xiàn)在各類其他宿主APP上的運(yùn)行,譬如,在京東小家APP上,可以通過(guò)小程序去控制智能IOT設(shè)備,在京ME的APP上,可以遠(yuǎn)程操作打印機(jī),實(shí)現(xiàn)一鍵打印。小程序作為一種輕量級(jí)的即用即走的工具,用戶群體廣泛,早已覆蓋到了我們生活的方方面面。
京東小程序是鏈接商家和京東內(nèi)部核心產(chǎn)品的重要橋梁,也是助力商家實(shí)現(xiàn)流量增長(zhǎng)、業(yè)務(wù)發(fā)展的一個(gè)重要方式。
那么,小程序平臺(tái)是怎么保證商家業(yè)務(wù)的穩(wěn)定、健康發(fā)展,服務(wù)好這些外部商家的呢?這里面非常重要的是我們平臺(tái)對(duì)小程序基本流量的運(yùn)營(yíng)與監(jiān)控。如何不讓業(yè)務(wù)的小程序在線上裸奔?如何幫助業(yè)務(wù)對(duì)自身小程序流量的沖高回落有一種直觀的把握和監(jiān)測(cè)?如何基于海量數(shù)據(jù)指導(dǎo)業(yè)務(wù)去進(jìn)行一個(gè)精細(xì)化的運(yùn)營(yíng)?實(shí)際上,京東小程序數(shù)據(jù)中心就扮演了一個(gè)這樣的小程序數(shù)據(jù)問(wèn)題終結(jié)者的角色,充分利用各類數(shù)據(jù)手段,解決這些痛點(diǎn)問(wèn)題。
二、京東小程序數(shù)據(jù)中心建設(shè)里程碑
京東小程序數(shù)據(jù)中心的建設(shè),主要經(jīng)歷了四個(gè)階段,從最開始的由0到1搭建了數(shù)據(jù)基礎(chǔ)能力,到豐富拓展各類數(shù)據(jù)指標(biāo),接著下鉆分析到用戶,幫助商家實(shí)現(xiàn)基于用戶的精細(xì)化的運(yùn)營(yíng),到目前的小程序數(shù)智化建設(shè),在整個(gè)小程序的迭代建設(shè)的過(guò)程中,都從各個(gè)維度為小程序的業(yè)務(wù)發(fā)展實(shí)現(xiàn)了保駕護(hù)航。
三、京東小程序數(shù)據(jù)中心業(yè)務(wù)全景圖
?從功能角度,京東小程序運(yùn)營(yíng)數(shù)據(jù)分析,京東小程序監(jiān)控?cái)?shù)據(jù)分析;
?從展現(xiàn)角度,開發(fā)者控制臺(tái),管理后臺(tái),移動(dòng)端小程序助手,宙斯開放能力;
?從功能領(lǐng)域角度,用戶行為分析,交易鏈路數(shù)據(jù)分析,用戶畫像,流失率監(jiān)控,流量監(jiān)控等;
?從上報(bào)通道角度,子午線,自定義上報(bào),服務(wù)端埋點(diǎn);
?從數(shù)據(jù)存儲(chǔ)角度,JED,JimDB,ES,HBase等;
目前京東小程序數(shù)據(jù)中心功能范圍廣泛,我們?cè)诟鶕?jù)業(yè)務(wù)發(fā)展的需求,不斷完善整個(gè)京東小程序數(shù)據(jù)中心的功能架構(gòu)。
從展現(xiàn)角度看,包括開發(fā)者控制臺(tái),管理后臺(tái),移動(dòng)端小程序助手,實(shí)時(shí)數(shù)據(jù)大屏, 開放openApi能力;
其次是從功能領(lǐng)域角度看,主要包括運(yùn)營(yíng)數(shù)據(jù)分析,監(jiān)控?cái)?shù)據(jù)分析。
運(yùn)營(yíng)數(shù)據(jù)分析,包括用戶行為分析,比如小程序基礎(chǔ)的pv和uv;
來(lái)源分析,可以去分析小程序在各個(gè)廣告投放渠道下的營(yíng)銷轉(zhuǎn)化效果;
用戶畫像分析,可以分析到瀏覽過(guò)小程序的人群中的哪些是高凈值用戶群體,以及性別以及年齡等基礎(chǔ)的用戶畫像數(shù)據(jù)。
監(jiān)控?cái)?shù)據(jù)分析,主要是針對(duì)線上運(yùn)行的小程序的奔潰異常,網(wǎng)絡(luò)請(qǐng)求異常,啟動(dòng)性能數(shù)據(jù)的分析,用戶流失率的實(shí)時(shí)監(jiān)測(cè)等,可以在小程序出現(xiàn)異常時(shí)第一時(shí)間通知到開發(fā)者。
四、京東小程序數(shù)據(jù)中心技術(shù)架構(gòu)圖
對(duì)于整體的架構(gòu)設(shè)計(jì),其實(shí)在我看來(lái),數(shù)據(jù)的分析,主要是解決三個(gè)問(wèn)題,第一個(gè)要解決的是數(shù)據(jù)如何上報(bào)的問(wèn)題,第二個(gè)是解決數(shù)據(jù)如何存儲(chǔ)的問(wèn)題?第三個(gè)才是解決數(shù)據(jù)如何分析的問(wèn)題?
1、京東小程序數(shù)據(jù)中心的數(shù)據(jù)上報(bào)主要包括三個(gè)途徑,主要包括客戶端埋點(diǎn),服務(wù)端埋點(diǎn)或者其他外部的數(shù)據(jù)源,客戶端埋點(diǎn)主要利用的是子午線,服務(wù)端埋點(diǎn)主要是我們服務(wù)之間采集數(shù)據(jù),服務(wù)之間消費(fèi)和同步。
2、數(shù)據(jù)存到哪里去,這個(gè)需要基于我們業(yè)務(wù)上對(duì)這些數(shù)據(jù)的實(shí)時(shí)性要求,判斷是實(shí)時(shí)還是離線,進(jìn)而采用不同的數(shù)據(jù)源進(jìn)行存儲(chǔ),數(shù)據(jù)指標(biāo)是要秒級(jí)的?分鐘級(jí)的?還是T+1l類型的,實(shí)時(shí)性要求不同,那么存儲(chǔ)的數(shù)據(jù)源自然也就不同。
3、數(shù)據(jù)如何分析,實(shí)際上就是我們的業(yè)務(wù)邏輯,在設(shè)計(jì)時(shí)也需要充分考慮數(shù)據(jù)模型的復(fù)用性和可拓展性。
小程序數(shù)據(jù)中心對(duì)于來(lái)自子午線客戶端埋點(diǎn)數(shù)據(jù),以離線的方式構(gòu)建小程序自己的業(yè)務(wù)數(shù)倉(cāng),一層一層地進(jìn)行數(shù)據(jù)的降噪,清洗和計(jì)算,將聚合好的維度數(shù)據(jù)再推送到關(guān)系型數(shù)據(jù)庫(kù),方便業(yè)務(wù)快速接入。對(duì)于來(lái)自自建通道的實(shí)時(shí)數(shù)據(jù)以及外部系統(tǒng)的埋點(diǎn)數(shù)據(jù),通過(guò)統(tǒng)一上報(bào)服務(wù)將數(shù)據(jù)上報(bào)到消息隊(duì)列,進(jìn)行流量數(shù)據(jù)的異步處理和消峰,采用專門的消費(fèi)者服務(wù)對(duì)上報(bào)數(shù)據(jù)進(jìn)行消費(fèi)落庫(kù),存儲(chǔ)到ES和HBase數(shù)據(jù)庫(kù),便于平臺(tái)進(jìn)行多維度的明細(xì)或者匯總數(shù)據(jù)查詢;同時(shí),也會(huì)基于Flink對(duì)消息隊(duì)列中的數(shù)據(jù)進(jìn)行流式實(shí)時(shí)計(jì)算,實(shí)現(xiàn)異常波動(dòng)流量的告警和分析。
五、它山之石可以攻玉,借助集團(tuán)數(shù)據(jù)工具打造小程序業(yè)務(wù)數(shù)倉(cāng)
痛點(diǎn)問(wèn)題:
1.京東小程序的數(shù)據(jù)來(lái)源多樣化,數(shù)據(jù)量級(jí)龐大,如何立足業(yè)務(wù)數(shù)據(jù),發(fā)揮數(shù)據(jù)價(jià)值,幫助商家實(shí)現(xiàn)精細(xì)化的運(yùn)營(yíng)?
2.如何復(fù)用主站已有的數(shù)據(jù)模型和能力,讓更多的小程序商家參與到京東主站的流量場(chǎng),讓數(shù)據(jù)驅(qū)動(dòng)商家精準(zhǔn)營(yíng)銷?
3.業(yè)務(wù)指標(biāo)紛繁復(fù)雜,如何沉淀和抽離通用數(shù)據(jù)模型,減少重復(fù)工作?
如何解決:
基于集團(tuán)BDP平臺(tái),自上而下構(gòu)建京東小程序的業(yè)務(wù)數(shù)倉(cāng),借助BDP平臺(tái)豐富的數(shù)據(jù)產(chǎn)品工具,多維度地構(gòu)建小程序的數(shù)據(jù)能力。離線計(jì)算+實(shí)時(shí)計(jì)算相結(jié)合,小程序業(yè)務(wù)數(shù)據(jù)+集團(tuán)模型數(shù)據(jù)相結(jié)合。
1.數(shù)據(jù)分類化,將小程序流量進(jìn)行主題劃分,拆分為點(diǎn)擊、瀏覽、曝光、訂單等大維度的主題模型,方便數(shù)據(jù)定位,增加業(yè)務(wù)理解;
2.數(shù)據(jù)分層化,同一個(gè)流量主題下,進(jìn)一步按照ODS->DWD->DWS->ADS的層級(jí)結(jié)構(gòu)進(jìn)行分層,方便追蹤數(shù)據(jù)血緣,減少重復(fù)數(shù)據(jù)模型的開發(fā);
3.數(shù)據(jù)多元化,下游系統(tǒng)可從小程序數(shù)據(jù)倉(cāng)庫(kù)拉取符合業(yè)務(wù)需要的領(lǐng)域數(shù)據(jù),比如數(shù)紡,搜推廣等系統(tǒng),利用下游系統(tǒng)成熟穩(wěn)定的數(shù)據(jù)能力,為商家營(yíng)銷充分賦能;
在京東小程序的業(yè)務(wù)數(shù)倉(cāng)搭建過(guò)程中,主要還是應(yīng)用了集團(tuán)BDP大數(shù)據(jù)平臺(tái)提供的豐富的產(chǎn)品工具和通用能力。
幾種典型的使用案例是:
1、離線hive表數(shù)據(jù)同步到j(luò)ed等關(guān)系型業(yè)務(wù)庫(kù),使用buffalo任務(wù)中的出庫(kù)算子;
2、業(yè)務(wù)產(chǎn)生的實(shí)時(shí)MQ數(shù)據(jù)同步到hive數(shù)倉(cāng),使用DTS,實(shí)時(shí)數(shù)據(jù)傳輸任務(wù),可以把業(yè)務(wù)數(shù)據(jù)同步到數(shù)倉(cāng);
3、我們需要在數(shù)倉(cāng)中構(gòu)建業(yè)務(wù)維表,比如構(gòu)建小程序基本信息的維表,業(yè)務(wù)數(shù)據(jù)需要同步到hive表,可以采用數(shù)據(jù)直通車DataBus,在表記錄的生成上,可以根據(jù)業(yè)務(wù)的需要,采用全量表,增量表,快照表,拉鏈表或者流水表的不同的記錄生成方式。
京東小程序客戶端埋點(diǎn)統(tǒng)一上報(bào)的子午線,需要從最原始的gdm層底表提取小程序自己的業(yè)務(wù)數(shù)據(jù),原始底表數(shù)據(jù)量級(jí)非常大,不可能每次直接對(duì)原始底表查詢,這樣的話耗費(fèi)計(jì)算資源,效率較低。所以,我們盡量提高底層數(shù)據(jù)模型的復(fù)用度,對(duì)數(shù)據(jù)進(jìn)行分類化和分層化處理。
所謂分類話,就是將小程序流量進(jìn)行主題劃分,拆分為點(diǎn)擊、瀏覽、曝光、訂單等大維度的主題模型,方便數(shù)據(jù)定位,增加業(yè)務(wù)理解;
所謂分層化,就是在同一個(gè)流量主題下,進(jìn)一步按照ODS->DWD->DWS->ADS的層級(jí)結(jié)構(gòu)進(jìn)行數(shù)據(jù)分層,方便追蹤數(shù)據(jù)血緣,減少重復(fù)數(shù)據(jù)模型的開發(fā)。
所謂多元化,就是復(fù)用度,加工好的這些數(shù)據(jù),可以給下游的團(tuán)隊(duì)接入使用,比如商智,黃金眼,數(shù)紡這些團(tuán)隊(duì)。以小程序廣告投放為例,在小程序數(shù)倉(cāng)中我們構(gòu)建了各個(gè)類型的用戶群體,在數(shù)紡注冊(cè)了用戶群體標(biāo)簽,比如關(guān)注用戶,粉絲用戶或者提單用戶等,下游的廣告精準(zhǔn)通系統(tǒng)會(huì)基于我們的這些標(biāo)簽進(jìn)行人群的圈選,進(jìn)而實(shí)現(xiàn)小程序廣告的投放。
總之,根據(jù)業(yè)務(wù)特點(diǎn),充分利用好集團(tuán)BDP的數(shù)據(jù)工具,幫助我們實(shí)現(xiàn)數(shù)倉(cāng)的搭建。
六、基于FLINK實(shí)時(shí)計(jì)算,落地小程序異常奔潰監(jiān)控利器
痛點(diǎn)問(wèn)題:京東小程序在線上運(yùn)行時(shí),需要實(shí)時(shí)監(jiān)測(cè)到小程序的業(yè)務(wù)代碼崩潰異常、性能數(shù)據(jù)波動(dòng),網(wǎng)絡(luò)請(qǐng)求耗時(shí)等,在有異常崩潰的情況下,保證可以第一時(shí)間通知到商家開發(fā)者,幫助業(yè)務(wù)及時(shí)止損。
如何解決:
1.報(bào)警規(guī)則可配置,基于Zookeeper分布式配置中心存儲(chǔ)小程序自定義的告警規(guī)則,實(shí)時(shí)監(jiān)聽規(guī)則節(jié)點(diǎn)變化,當(dāng)節(jié)點(diǎn)數(shù)據(jù)變化時(shí),實(shí)時(shí)聚合到業(yè)務(wù)流;
2.自定義滑動(dòng)窗口,每個(gè)小程序的告警窗口大小不一樣,拓展實(shí)現(xiàn)WindowAssigner,基于用戶動(dòng)態(tài)規(guī)則確定告警窗口開始時(shí)間和截止時(shí)間;
3.廣播變量,broadcast機(jī)制,將告警配置信息廣播到各個(gè)Task任務(wù)內(nèi)存,廣播變量就是一個(gè)公共的共享變量,將一個(gè)數(shù)據(jù)集廣播后,不同的Task都可以在節(jié)點(diǎn)上獲取到,每個(gè)節(jié)點(diǎn)只存一份,否則,每一個(gè)Task都會(huì)拷貝一份數(shù)據(jù)集,會(huì)造成內(nèi)存資源浪費(fèi)。
對(duì)于小程序的實(shí)時(shí)監(jiān)控能力,我們采用flink作為實(shí)時(shí)計(jì)算的框架,小程序在線上運(yùn)行時(shí),需要實(shí)時(shí)監(jiān)測(cè)到小程序的業(yè)務(wù)代碼崩潰異常、這種異常很可能會(huì)導(dǎo)致小程序白屏或者閃退,需要在探測(cè)到有異常崩潰的情況下,保證第一時(shí)間通知到商家開發(fā)者,幫助業(yè)務(wù)及時(shí)止損。
這里的難點(diǎn)在于告警的規(guī)則是支持用戶自定義的,比如配置觀測(cè)多長(zhǎng)時(shí)間窗口內(nèi)的異常數(shù)據(jù),當(dāng)達(dá)到多少的異常閾值,應(yīng)該去觸發(fā)告警,應(yīng)該判定為異常,這里是需要把告警規(guī)則配置的的主動(dòng)權(quán)交給用戶的,在這樣的背景下,
1、 我們采用的是將告警規(guī)則放到分布式的統(tǒng)一配置中心,實(shí)時(shí)監(jiān)聽節(jié)點(diǎn)規(guī)則的變化,將業(yè)務(wù)流和規(guī)則流進(jìn)行connet雙流合并;
2、 然后根據(jù)告警規(guī)則,實(shí)現(xiàn)windowAssigner生成自定義的動(dòng)態(tài)計(jì)算窗口,從而實(shí)現(xiàn)窗口動(dòng)態(tài)化;
3、 最后,采用廣播變量的broadcast機(jī)制,當(dāng)告警規(guī)則變更時(shí),可以高效地將告警配置廣播刷新到各個(gè)Task任務(wù)內(nèi)存,提高資源利用率,保證計(jì)算時(shí)效性。
七、探索OLAP領(lǐng)域的黑馬,基于ClickHouse搭建自定義數(shù)據(jù)分析引擎
痛點(diǎn)問(wèn)題:小程序內(nèi)部的數(shù)據(jù)波動(dòng)如何自由埋點(diǎn)分析?京東內(nèi)部業(yè)務(wù)直接基于子午線埋點(diǎn)上報(bào),業(yè)務(wù)團(tuán)隊(duì)內(nèi)部自行分析;外部的開發(fā)者需要依賴神策,GA等外部的分析系統(tǒng),無(wú)法將數(shù)據(jù)回流京東,且復(fù)用京東現(xiàn)有流量工具進(jìn)行精細(xì)化運(yùn)營(yíng)。
如何解決:
1.選擇合適的表存儲(chǔ)引擎:采用多副本的ReplicatedMergeTree,保證查詢性能和數(shù)據(jù)存儲(chǔ)的高可用;
2.按天分區(qū)存儲(chǔ)數(shù)據(jù):PARTITION BY:分區(qū)鍵,PARTITION BY toYYYYMMDD(EventDate),不同分區(qū)下的數(shù)據(jù)會(huì)分開存儲(chǔ),合理建立分區(qū)可以加快查詢的速度;
3.統(tǒng)一上報(bào)協(xié)議:生成全局唯一事件ID,事件ID綁定業(yè)務(wù)數(shù)據(jù);
4.動(dòng)態(tài)數(shù)據(jù)解析:基于visitParamExtract函數(shù)解析json動(dòng)態(tài)業(yè)務(wù)數(shù)據(jù);
5.查詢腳本下推:Sql引擎生成查詢Sql,下沉至ClickHouse完成查詢;
小程序內(nèi)部的數(shù)據(jù)波動(dòng)如何自由埋點(diǎn)分析?京東內(nèi)部業(yè)務(wù)是可以直接基于子午線埋點(diǎn)上報(bào),業(yè)務(wù)團(tuán)隊(duì)內(nèi)部自行分析,但是子午線這種產(chǎn)品本身不對(duì)外開放,外部的開發(fā)者如果想分析小程序自身的內(nèi)部數(shù)據(jù),需要依賴神策,GA等外部的數(shù)據(jù)分析系統(tǒng),這樣的話,小程序的數(shù)據(jù)無(wú)法回流京東,那么也就無(wú)法復(fù)用京東現(xiàn)有流量工具進(jìn)行小程序的精細(xì)化運(yùn)營(yíng)。
在這樣的背景下,我們落地了小程序的自定義分析引擎,底層采用了clickhouse這種適合做即席查詢的olap引擎,用來(lái)存儲(chǔ)小程序上報(bào)數(shù)據(jù).
為什么采用clickhouse? clickhouse是基于列式來(lái)存儲(chǔ)數(shù)據(jù),查詢性能非常高,在億級(jí)數(shù)據(jù)的體量下,可以做到秒級(jí)的響應(yīng),適合做在線的OLAP。
同時(shí),ck支持水平的拓展,適合大數(shù)據(jù)量的存儲(chǔ),支持按天進(jìn)行數(shù)據(jù)的分區(qū)存儲(chǔ),在建表時(shí),根據(jù)記錄的創(chuàng)建時(shí)間劃分partition,在查詢數(shù)據(jù)時(shí),可以只查某些partition分區(qū)的數(shù)據(jù),也可以加快查詢的效率。
包括本地表和分布式表,本地表運(yùn)行在各個(gè)具體的數(shù)據(jù)節(jié)點(diǎn),分布式表負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)發(fā)和路由。寫入數(shù)據(jù)只寫本地表,50-200M/S ,對(duì)于大量的數(shù)據(jù)更新非常實(shí)用。
在小程序自定義分析引擎中,規(guī)范了數(shù)據(jù)上報(bào)協(xié)議,首先由用戶配置需要上報(bào)的事件ID和業(yè)務(wù)指標(biāo),按照協(xié)議約定調(diào)用前端jsAPI上報(bào)業(yè)務(wù)數(shù)據(jù)。在自助查詢區(qū)域,當(dāng)用戶觸發(fā)查詢時(shí),先基于規(guī)則引擎利用自定義事件ID生成查詢規(guī)則SQL腳本,將規(guī)則下推至服務(wù)端執(zhí)行引擎,執(zhí)行引擎從CK獲取業(yè)務(wù)數(shù)據(jù),完成業(yè)務(wù)數(shù)據(jù)的一次自定義查詢。
八、巧用Elasticsearch特性,讓用戶行為分析不再困難
痛點(diǎn)問(wèn)題:需要實(shí)時(shí)分析小程序的pv、uv、新增用戶數(shù)、累計(jì)用戶數(shù)以及關(guān)注用戶數(shù)等用戶行為類指標(biāo),幫助小程序商家掌握自身小程序的用戶波動(dòng)情況。
如何解決:
1.實(shí)時(shí)性,從小程序的用戶行為埋點(diǎn)數(shù)據(jù)上報(bào)到可訪問(wèn),支持秒級(jí)響應(yīng);
2.全文檢索,基于倒排索引,支持靈活的搜索分析,支持按照小程序不同業(yè)務(wù)維度進(jìn)行聚合分析,滿足不同的業(yè)務(wù)需要;
3.易于運(yùn)維,小程序的日均DAU在300W+,可以基于天、月等維度創(chuàng)建索引,方便進(jìn)行冷熱數(shù)據(jù)分析;
創(chuàng)建ES模板:周期性按天創(chuàng)建ES索引:
利用索引主鍵碰撞實(shí)現(xiàn)新增&累計(jì)用戶統(tǒng)計(jì):
語(yǔ)法:
index語(yǔ)法: PUT miniapps/_doc/1
create語(yǔ)法: PUT miniapps/_create/1
語(yǔ)義:
index自動(dòng)生成id,多次創(chuàng)建,會(huì)生成多個(gè)document;
index多次索引同一個(gè)id,會(huì)刪除重建,版本號(hào)一直++,上個(gè)版本刪除,保留最新版本;
create自動(dòng)生成id,多次創(chuàng)建,會(huì)生成多個(gè)document;
create的重復(fù)創(chuàng)建指定文檔id的內(nèi)容,第二次執(zhí)行創(chuàng)建會(huì)報(bào)錯(cuò)(主鍵碰撞),而不是版本號(hào)++;
我們是如何做小程序的實(shí)時(shí)用戶行為分析的呢?行為分析需要實(shí)時(shí)計(jì)算小程序的pv、uv、新增用戶數(shù)、累計(jì)用戶數(shù)以及關(guān)注用戶數(shù)等用戶行為類指標(biāo),幫助小程序商家掌握自身小程序的用戶波動(dòng)情況。我們將這些數(shù)據(jù)統(tǒng)一放在ES中進(jìn)行查詢,主要考慮到ES支持靈活的搜索分析,支持按照不同維度進(jìn)行聚合分析,保證了數(shù)據(jù)查詢的靈活性和實(shí)時(shí)性的需要。
在創(chuàng)建索引時(shí),不是將數(shù)據(jù)都堆放到一個(gè)索引,而是將按天去創(chuàng)建,基于索引模板,周期性地創(chuàng)建ES索引,保證索引查詢效率。
在構(gòu)建小程序的新增用戶的指標(biāo)時(shí),利用了ES索引碰撞的原理,設(shè)置操作類型operateType為create,create的語(yǔ)義是重復(fù)創(chuàng)建指定文檔id的內(nèi)容,第二次執(zhí)行創(chuàng)建會(huì)報(bào)錯(cuò)(出現(xiàn)主鍵碰撞),這樣的話,保證新增用戶的記錄在ES索引中只出現(xiàn)一次。
九、不足和展望
1、沉淀小程序行業(yè)數(shù)據(jù)解決方案
沉淀比如車企、保險(xiǎn)、3C家電等行業(yè)類數(shù)據(jù),形成統(tǒng)一的京東小程序行業(yè)數(shù)據(jù)解決方案
2、技術(shù)沉淀復(fù)用
后續(xù)可以把成型的京東小程序數(shù)據(jù)分析技術(shù)方案推廣到其他技術(shù)棧,比如RN等平臺(tái)系統(tǒng)
3、智能化建設(shè)
考慮如何基于機(jī)器學(xué)習(xí)、人工智能、ChatGPT等技術(shù)手段,加強(qiáng)京東小程序數(shù)據(jù)的智能化建設(shè),如何結(jié)合機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、人工智能AI等技術(shù)手段,繼續(xù)實(shí)現(xiàn)京東小程序數(shù)據(jù)中心的智能化建設(shè)。
?預(yù)測(cè)性分析能力:
小程序的智能告警,基于時(shí)間序列預(yù)測(cè)算法,比如Facebook Prophet算法等,做一些告警預(yù)判,提升告警的智能性和準(zhǔn)確率;
?數(shù)據(jù)挖掘算法:
在小程序的預(yù)下載場(chǎng)景,可以基于協(xié)同過(guò)濾算法,做小程序偏好人群的判斷,實(shí)現(xiàn)預(yù)下載的千人千面,從而減少網(wǎng)絡(luò)帶寬,節(jié)省資源成本等;
?語(yǔ)義引擎:
如何將ChatGpt這種AI智能模型,可以分析和理解大量的數(shù)據(jù),自動(dòng)提取和歸類數(shù)據(jù),使得小程序數(shù)據(jù)運(yùn)維更加高效、準(zhǔn)確;
審核編輯 黃宇
-
數(shù)據(jù)中心
+關(guān)注
關(guān)注
16文章
4517瀏覽量
71628
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論