概述
在物流系統(tǒng)相關(guān)的大屏中,供應(yīng)鏈大屏復(fù)雜度較高,數(shù)據(jù)鏈路較長(zhǎng),穩(wěn)定性要求較高,當(dāng)前大屏已經(jīng)經(jīng)過(guò)2年時(shí)間的打磨,整體表現(xiàn)已經(jīng)相對(duì)比較成熟穩(wěn)定。
本文描述了物流供應(yīng)鏈業(yè)務(wù)較復(fù)雜的業(yè)務(wù)場(chǎng)景下,結(jié)合了大數(shù)據(jù)計(jì)算相關(guān)技術(shù),總結(jié)了實(shí)時(shí)監(jiān)控大屏指標(biāo)建設(shè)和服務(wù)構(gòu)建的框架和經(jīng)驗(yàn),為后續(xù)其他核心大屏的高可用和高實(shí)時(shí)性建設(shè)提供建設(shè)思路。以下幾點(diǎn)需要重點(diǎn)關(guān)注:
1、基于Flink的數(shù)據(jù)加工鏈路和OLAP的數(shù)據(jù)分析引擎
基于目前較為成熟的實(shí)時(shí)計(jì)算Flink,結(jié)合ClickHouse搭建基礎(chǔ)模型,借助雙流和EasyData實(shí)現(xiàn)一鍵切換。
2、指標(biāo)的一致性
加工和展示分離,可基于單倉(cāng)原子指標(biāo)進(jìn)行區(qū)域和品類上卷,既保障了指標(biāo)的維度一致性(單倉(cāng)-區(qū)域-全國(guó)),又保障了同一個(gè)數(shù)據(jù)版本的時(shí)間一致性。
同時(shí)借助緩存庫(kù)/表,來(lái)滿足不同的業(yè)務(wù)場(chǎng)景。
3、穩(wěn)定性建設(shè)
?數(shù)據(jù)鏈路的穩(wěn)定性
?接口服務(wù)的兜底
?指標(biāo)準(zhǔn)確性的驗(yàn)證機(jī)制
?重算機(jī)制
本文內(nèi)容有限,很多設(shè)計(jì)的小細(xì)節(jié)未能體現(xiàn),感興趣的可隨時(shí)與我交流,希望上述內(nèi)容對(duì)正在從事大屏建設(shè)的同學(xué)有一些新的啟發(fā)和思考。
一、背景
供應(yīng)鏈大屏是供應(yīng)鏈?zhǔn)聵I(yè)部重要的看數(shù)工具,尤其在大促期間,為業(yè)務(wù)管理層掌握大促實(shí)時(shí)動(dòng)態(tài)提供了支撐,為事業(yè)部的目標(biāo)達(dá)成、排產(chǎn)提供重要的數(shù)據(jù)支持。
特點(diǎn):
?指標(biāo)較多,170+;
?刷新頻率,1分鐘;
?數(shù)據(jù)來(lái)源較多,大件、逆向、冷鏈、服務(wù)+、Udata、離線等;
?鏈路長(zhǎng):10+個(gè)計(jì)算傳輸節(jié)點(diǎn)
?重要性高,穩(wěn)定性要求高,準(zhǔn)確性要求高;
二、方案
2.1 數(shù)據(jù)模型存儲(chǔ)選型
供應(yīng)鏈大屏涉及模型較多,消息量較大,對(duì)寫入性能和查詢性能要求較高,主要基于Elasticsearch和ClickHouse進(jìn)行對(duì)比選型,對(duì)比項(xiàng)如下:
比較項(xiàng) | Elasticsearch | ClickHouse |
實(shí)現(xiàn)原理 | 基于Lucene的分布式搜索引擎,ES通過(guò)分布式技術(shù),利用分片與副本機(jī)制,解決了集群下搜索性能與高可用的問(wèn)題。 | 基于MPP(Massively Parallel Processing)架構(gòu)的分布式ROLAP(關(guān)系OLAP)分析引擎,擁有完備的管理功能,是列式數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)。通過(guò)使用日志合并樹(shù),稀疏索引和向量化執(zhí)行引擎(CPU的SIMD單指令多數(shù)據(jù))充分發(fā)揮了硬件優(yōu)勢(shì),實(shí)現(xiàn)高效的計(jì)算。 |
寫入性能 | 中等,有寫入延遲問(wèn)題 | 較高,吞吐量大,經(jīng)測(cè)試是ES的5倍以上 |
查詢性能 | 中等 | 高,經(jīng)測(cè)試查詢速度比ES快5-30倍以上 |
多表聯(lián)合查詢 | 不支持 | 支持 |
服務(wù)器成本 | 高 | 相同數(shù)據(jù)占用的磁盤空間只有ES的1/3到1/30,節(jié)省了磁盤空間的同時(shí),也能有效的減少磁盤IO;另一方面ClickHouse比ES占用更少的內(nèi)存,消耗更少的CPU資源 |
SQL查詢 | 不支持 | 支持 |
高并發(fā)支持 | 較好,經(jīng)過(guò)優(yōu)化可以支持上萬(wàn)QPS | 官方建議qps為100 |
全文檢索 | 支持 | 不支持 |
由上面的比較可以看出,作為OLAP數(shù)據(jù)庫(kù),CH的寫入,查詢性能都優(yōu)于ES,但是唯一的問(wèn)題是高并發(fā)支持問(wèn)題。所以對(duì)于不需要高并發(fā)和全文檢索的場(chǎng)景,選擇CH是更合適的。針對(duì)某些需要高并發(fā)的場(chǎng)景,可以選擇ES,或者CH+緩存層實(shí)現(xiàn)。
?
2.2 整體架構(gòu)
?
由于數(shù)據(jù)來(lái)源多、復(fù)雜度高,為了提升指標(biāo)服務(wù)的穩(wěn)定性,降低代碼復(fù)雜度提升可維護(hù)性,提升指標(biāo)的復(fù)用性,整體架構(gòu)分5層,包括模型加工層、數(shù)據(jù)處理層、單倉(cāng)指標(biāo)加工層、區(qū)域指標(biāo)加工層和展示層。各層的職責(zé)如上圖所示。
2.3 指標(biāo)分層及一致性設(shè)計(jì)
以倉(cāng)訂單相關(guān)指標(biāo)為例,所有指標(biāo)加工保持1套邏輯,同一主任務(wù)觸發(fā),加工完成之后,基于單倉(cāng)指標(biāo)上卷加工區(qū)域等更高維度的指標(biāo),保證指標(biāo)數(shù)據(jù)的一致性。
針對(duì)不同的業(yè)務(wù)報(bào)表,根據(jù)不同的場(chǎng)景,進(jìn)行指標(biāo)查詢,通過(guò)指標(biāo)緩存表的方式,減少數(shù)據(jù)量,提升指標(biāo)的查詢性能。
?
2.4 穩(wěn)定性設(shè)計(jì)
由于數(shù)據(jù)鏈路長(zhǎng),穩(wěn)定性較差,問(wèn)題主要集中在Flink、CH環(huán)節(jié),恢復(fù)周期長(zhǎng)。對(duì)于大屏等核心任務(wù),數(shù)據(jù)的實(shí)時(shí)性和準(zhǔn)確性要求較高,以下是歷史發(fā)生過(guò)的問(wèn)題:
?CK分區(qū)太多,寫入阻塞
?CK rename操作,節(jié)點(diǎn)太多,表結(jié)構(gòu)同步慢,導(dǎo)致寫入報(bào)錯(cuò),大量消息積壓,丟消息
?Flink機(jī)房網(wǎng)絡(luò)故障
?flink 偶發(fā)丟消息,未定位到原因
?checkpoint失敗
?jdq分片不均,單個(gè)分區(qū)消息增加400倍,消息積壓
?維表數(shù)據(jù)未更新,導(dǎo)致丟失字段
?上游運(yùn)單模型積壓,丟失部分字段
?數(shù)據(jù)積壓
?加工邏輯復(fù)雜,偶發(fā)亂序問(wèn)題
?state未保存,丟數(shù)據(jù)
?CK跨分區(qū)字段查詢明細(xì),性能較低
?代碼編寫使用了Flink序列化未支持的格式、循環(huán)過(guò)多,導(dǎo)致算子背壓嚴(yán)重
?邏輯復(fù)雜,上線風(fēng)險(xiǎn)高且回滾困難
從整個(gè)鏈路中,針對(duì)易出問(wèn)題的flink-CK鏈路進(jìn)行雙流,物理隔離,遇到問(wèn)題可一鍵切換至備流。
?
?
?
2.5 擴(kuò)展性設(shè)計(jì)
基于UCC配置,通過(guò)配置靈活適配業(yè)務(wù)訴求,節(jié)約開(kāi)發(fā)成本,方便定位問(wèn)題和恢復(fù);
包括4H/24H/28H、同環(huán)比日期配置、預(yù)測(cè)日期配置、單倉(cāng)兜底配置、展示配置等;
(1)28小時(shí)模式配置化:可通過(guò)配置將任意一天切換為28小時(shí)、4小時(shí)模式,為業(yè)務(wù)和研發(fā)側(cè)提供了充分的線上驗(yàn)證機(jī)會(huì);
(2)閾值開(kāi)關(guān)配置化:可通過(guò)閾值開(kāi)關(guān)進(jìn)行數(shù)據(jù)兜底邏輯管控,確保數(shù)據(jù)平穩(wěn);
(3)自動(dòng)刷新白名單配置化:靈活配置大屏自動(dòng)刷新白名單,支持封版期間人員白名單權(quán)限控制;
(4)歷史日期配置化:計(jì)算預(yù)測(cè)全天指標(biāo)使用指定歷史日期的單量占比作為對(duì)比項(xiàng),數(shù)據(jù)庫(kù)里包含部分歷史大促日單量數(shù)據(jù),可靈活配置修改對(duì)比的歷史日期;
(5)重算機(jī)制:可基于某一時(shí)間段進(jìn)行數(shù)據(jù)重算。
?
參數(shù)配置:
?
{ "thresholdEnable": "false", //大促預(yù)測(cè)上下線是否開(kāi)啟,開(kāi)啟后upperLimit與lowerLimit生效, "upperLimit": "1.6d", //上限 "lowerLimit": "0.6d", //下限 "zyShowFlag": true, //中小件產(chǎn)品維度-自營(yíng)是否展示開(kāi)關(guān) "swShowFlag": true, //中小件產(chǎn)品維度-商務(wù)是否展示開(kāi)關(guān) "jjShowFlag": true, //中小件產(chǎn)品維度-經(jīng)濟(jì)是否展示開(kāi)關(guān) "wdShowFlag": true, //中小件產(chǎn)品維度-外單是否展示開(kāi)關(guān) "todayTradeCleanRateShowFlag": true, //今日交易清理率展示開(kāi)關(guān) "promotionTradeCleanRateShowFlag": true,//大促交易清理率展示開(kāi)關(guān) "isDebug": true, //是否debug,目前還沒(méi)使用 "isCacheOn": true, //是否打開(kāi)緩存,默認(rèn)開(kāi) "isWriteMinuteAndHour": true, //是否雙寫分鐘表和小時(shí)表,代表是否寫 wms_order_analysis_report_minute_2023 和 wms_order_analysis_report_hour_2023 "isMinuteWrite": true, //是否寫分鐘表wms_order_analysis_report_minute_2023 開(kāi)關(guān) "isHourWrite": true, //是否寫wms_order_analysis_report_hour_2023 開(kāi)關(guān) "isMinuteNotice": false, //是否分鐘表寫完發(fā)mq "isHourNotice": false,//是否小時(shí)表寫完發(fā)咚咚推送mq }
?
對(duì)比策略配置:
{ "sTime": "2023-06-17 00:00:00", // 大屏策略時(shí)間開(kāi)始 "eTime": "2023-06-17 19:59:59", // 大屏策略時(shí)間結(jié)束 "tbSTime": "2022-06-17 00:00:00", //同比開(kāi)始 "tbETime": "2022-06-17 19:59:59",//同比結(jié)束 "hbSTime": "2022-11-10 00:00:00",//環(huán)比開(kāi)始 "hbETime": "2022-11-10 19:59:59",//環(huán)比結(jié)束 "showType": "24h",//類型,24h同20h小時(shí),都可以 "special24hCompDateStr": "2022-06-17",//大促24h特殊對(duì)比日期,(4h,28h不使用) 主要影響預(yù)測(cè);主要用作非 4h/28h 的預(yù)測(cè)不使用昨日了; "specialCompDateStr": "" //大促4h/28h預(yù)測(cè)對(duì)比天數(shù) }
2.6 數(shù)據(jù)監(jiān)控
多種驗(yàn)證及監(jiān)控手段組合保證數(shù)據(jù)準(zhǔn)確性
1)前端自動(dòng)化模型,定時(shí)截取每個(gè)大屏關(guān)鍵節(jié)點(diǎn)截圖。
2)自動(dòng)化抓包,分鐘級(jí)記錄接口調(diào)用情況,結(jié)合定時(shí)截圖,便用問(wèn)題排查及定位。
3)大屏結(jié)果分鐘級(jí)落庫(kù),并通過(guò)Grafana,創(chuàng)建大屏數(shù)據(jù)監(jiān)控看板,持續(xù)監(jiān)控大屏數(shù)據(jù),通過(guò)異常拐點(diǎn)發(fā)現(xiàn)問(wèn)題點(diǎn),避免遺漏問(wèn)題。并結(jié)合不同看板分析數(shù)據(jù)趨勢(shì)及變化原因。
4)結(jié)合大屏計(jì)算邏輯,通過(guò)京東動(dòng)力搭建測(cè)試模型,做到自由指定時(shí)間計(jì)算大屏指標(biāo)明細(xì),驗(yàn)證分析大屏數(shù)據(jù)。
?審核編輯 黃宇
-
監(jiān)控
+關(guān)注
關(guān)注
6文章
2162瀏覽量
55041 -
供應(yīng)鏈
+關(guān)注
關(guān)注
3文章
1647瀏覽量
38775 -
數(shù)據(jù)鏈
+關(guān)注
關(guān)注
2文章
38瀏覽量
15766
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論