天天看點

大資料實時鍊路備戰——資料雙流高保真壓測

作者:京東雲開發者

一、大資料雙流建設

1.1 資料雙流

大資料時代,越來越多的業務依賴實時資料用于決策,比如促銷調整,點選率預估、廣告分傭等。為了保障業務的順利開展,也為了保證整體大資料鍊路的高可用性,越來越多的0級系統建設雙流,以保證日常及大促期間資料流的穩定性。建設核心資料鍊路雙機房,雙流雙活。同時雙流建設需要整條鍊路上的所有環節雙機房部署,占用了雙倍的實體資源;整個建設過程要協同上下遊各環節(資料生産方、數倉加工方、中間處理節點、業務消費方),也會消耗大量的溝通建設成本。為了達到資源消耗和業務穩定性的平衡,特制定雙流建設标準和實施流程以引導業務方合理評估雙流需求,順利開展雙流建設實施。

1.2 資料雙流的建設評估次元和标準

編号 次元 評估标準 标準定義 & 備注
1 系統等級 0級系統 0級系統為公司最核心的業務服務系統,一旦發生不可用會直接影響黃金交易流程或影響公司名譽、品牌、集團戰略、營銷計劃等,可能造成P0-P2級事故發生。0級系統的定義以零售子集團線上事故定級、定責及扣分标準中4.1-4.2定義為準。0級系統會在伺服器資源和人力資源方面有傾斜,但0級系統要確定高可用,會與事故級别緊密關聯。
2 任務等級 L0實時任務 服務線上0級系統的任務具體任務等級細側參見實時資料平台作業分級管理規範協定等級設定參考說明。
3 實體資源 業務方申請并且承擔雙流建設所需要的實體資源消耗實體資源成本合理。備流按照主流80%的承載量建設(資源的80%) 業務方需要提供具體的實體資源資訊:a. 實體資源成本包括存儲資源、計算資源、帶寬、隊列資源等。b. 涵蓋上遊生産系統存儲、數倉加工方、中間處理節點、業務消費方等各個環節。c. 評估流量和交易兩個方面
4 資料時效性 大促0點(或對應相應業務高峰點)資料時效性要求<=20分鐘 或平時資料時效性要求<=40分鐘
5 資料峰值 大促峰值預估(交易、流量)平時峰值預估(交易、流量) 資料峰值作為主要的參考,但是新系統在沒有資料參考情況下,會根據業務是否是集團戰略這一條做适當調整。其它條件滿足,但是資料峰值很小的情況下,一般不建議雙流,特殊情況另讨論。
6 生産源 生産源必須是雙機房部署
7 業務場景 資料缺失會造成XX級事故 業務方提供完整的業務場景和發生故障時的影響以幫助評估

二、大資料雙流憋壩高保真壓測

2.1 雙流憋壩壓測

從21年大促備戰開始,大資料側核心資料鍊路,從單子產品單任務的壓測,轉向全鍊路憋壩壓測,把洩洪閘口上移,壓測範圍覆寫更廣,訂單和交易同時洩洪,高保真大促網絡峰值,資源競争場景,同時資料産品(黃金眼、商智、作戰指揮室大屏)會在洩洪時同時進行讀查詢的壓測,模拟大促讀寫峰值并行的真實大促場景。

2.2 雙流憋壩的壓測目标制定

(1) 壓測目标設定,一般會參照曆史峰值和市場預估,給出核心交易、流量主題鍊路峰值預估,例如22年雙11的1.2倍。關鍵的資料流topic,會給出預估消費峰值供下遊參考,如下表格所示(資料涉及保密不做詳細展示)

大資料實時鍊路備戰——資料雙流高保真壓測

2.3 雙流憋壩的壓測方案

(1)交易的憋壩方式,通過停止同步任務憋單 ,交易雙流架構圖如下所示:

大資料實時鍊路備戰——資料雙流高保真壓測

(2)流量的憋壩方式,流量無損憋壩壓測是通過停止采集服務寫JDQ寫叢集的方式憋流,不參與壓測的業務方,可以切換到“JDQ4瀾滄江_點選流建立流”(壓測期間建立JDQ寫叢集),保證下遊業務可以在憋流壓測期間,正常消費流量實時資料,做到無損。

大資料實時鍊路備戰——資料雙流高保真壓測

2.4 雙流憋壩壓測規範

(1)全鍊路壓測的具體憋單、憋流開始時間以及洩洪時間,每次壓測前,會提前24~48小時發出通知(郵件+工作群),通知發出後,洩洪時間不再調整

(2)全鍊路壓測會進行集團報備,避開重要促銷活動,壓測要避開存儲(hbase、jimdb、ES)、JDQ、JRC 等自身的災備演練,以免無效壓測

2.5 失真場景的高保真壓測

平時訂單中預售訂單占比過低,預售訂單 平日峰值/大促峰值=0.05%~5.9%,峰值也無法達到要求,且不能指定場景,例如付定金和付尾款場景。是以預售訂單無法在雙流憋壩壓測中實作高保真,是以做了大資料預售鍊路的整體改造,聯合線上軍演壓測(業務生産系統的壓測)實作預售鍊路的高保真壓測補充

落地方案:軍演負責提供預售訂單資料和付定金付尾款場景,大資料鍊路進行改造相容壓測進行資料壓測且不污染線上資料

如下圖所示: 黃色部分為線上軍演提供資料的對應存儲——影子庫表 。綠色部分為壓測新增,最上層為壓測資料源(JMQ/JDQ) ,下面是為了壓測搭建的透傳壓測環境以及寫影子存儲。黃金眼預售通用源和商智預售交易通用源對應任務改成雙進雙出,同時可以處理線上資料源和壓測資料源,線上資料寫入線上輸出topic和線上存儲。 壓測資料源的資料處理後輸出壓測資料的topic,寫入影子存儲。這樣線上拓撲不用随着每次壓測改動,同時,下遊業務方也可以靈活選擇是否參與壓測。

大資料實時鍊路備戰——資料雙流高保真壓測

三、大資料憋壩壓測期間,業務方的遷移方案

3.1 雙流憋壩壓測對于業務方的影響

在大資料雙流壓測的憋流和憋單期間,憋流和憋單對應的機房(彙天/廊坊)無實時資料下發,洩洪後恢複。不參與壓測的業務方,需要做對應的切換。

3.2 不參與壓測的業務方的遷移方案

(1)切換叢集:

A、交易不涉及,交易從源頭topic都是雙流雙活,業務可以切換消費到不壓測機房對應的topic即可

B、流量直接消費點選流吐出的topic,需要切換到無損壓測叢集“JDQ4瀾滄江_點選流建立流”。本次切換叢集,支援一鍵遷移,不用重新開機任務,要使用這次功能,需要更新jdq-sdk,jdq sdk版本是jdq4-clients:1.3.0-SNAPSHOT flink:1.10/1.12/1.14-1.0.9-SNAPSHOT。如果遷移過程中看不到叢集“JDQ4瀾滄江_點選流建立流”,可以聯系平運維同學支援

(2)切換topic鑒權

A、交易是雙流,廊坊和彙天都有對應的topic,不參與壓測的業務方可以申請,消費非壓測機房對應的topic即可

B、流量不是消費采集服務直接吐出的topic,消費的是流量實時數倉及一下鍊路的topic,也是雙流雙活,切換消費到非壓測機房對應的topic即可。

作者:京東零售 荊明岚

來源:京東雲開發者社群