国产成人福利在线视频播放下载,成人无码www免费视频在线看,放荡的美妇在线播放,大地资源网最新更新,国产成人精品日本亚洲网站

泡泡網(wǎng)新聞頻道 PCPOP首頁(yè)      /      新聞?lì)l道     /      動(dòng)態(tài)    /    正文

小米基于StarRocks極致性能打造小米式性?xún)r(jià)比數(shù)據(jù)平臺(tái)

小米有品是小米旗下精品生活電商平臺(tái),也是小米“新零售”戰(zhàn)略的重要一環(huán)。依托小米生態(tài)鏈體系,延續(xù)小米的“爆品”模式,致力于將“小米式的性?xún)r(jià)比”延伸到更廣泛的家居生活領(lǐng)域。有品數(shù)據(jù)中心主要負(fù)責(zé)有品電商的數(shù)據(jù)資產(chǎn),提供數(shù)據(jù)分析服務(wù)。數(shù)據(jù)分析幫助做出有效決策,有效決策促進(jìn)業(yè)務(wù)增長(zhǎng),業(yè)務(wù)增長(zhǎng)需要更多的數(shù)據(jù)分析,形成閉環(huán)。

作者:

汪細(xì)勖,小米高級(jí)研發(fā)工程師

陳亦奇,小米有品研發(fā)工程師

歷史架構(gòu)及業(yè)務(wù)痛點(diǎn)

受限于以往業(yè)務(wù)規(guī)模以及技術(shù)條件,曾經(jīng)的小米數(shù)據(jù)中心的架構(gòu)如下圖:

業(yè)務(wù)數(shù)據(jù)和流量數(shù)據(jù)通過(guò)數(shù)據(jù)采集服務(wù)傳送到Talos,實(shí)時(shí)數(shù)據(jù)通過(guò)Spark Streaming進(jìn)行ETL處理,商品數(shù)據(jù)聚合之后寫(xiě)入MySQL中,其他數(shù)據(jù)寫(xiě)入Druid中做預(yù)聚合;離線數(shù)據(jù)直接寫(xiě)入Hive中,通過(guò)Spark SQL提供查詢(xún)服務(wù)。這套架構(gòu)隨著業(yè)務(wù)的快速發(fā)展,已經(jīng)越來(lái)越不滿足用戶需求,主要表現(xiàn)為以下幾點(diǎn):

·數(shù)據(jù)快速膨脹,查詢(xún)性能成為瓶頸

·維護(hù)多套系統(tǒng),運(yùn)維成本,機(jī)器成本高

·Druid去重效果差,不支持明細(xì)數(shù)據(jù)

StarRocks在小米有品的應(yīng)用實(shí)踐

OLAP引擎調(diào)研

為了解決這些問(wèn)題,我們調(diào)研了多款OLAP引擎,沒(méi)有一款引擎能從數(shù)據(jù)規(guī)模,查詢(xún)性能,靈活性三個(gè)方面滿足我們的需求。結(jié)合實(shí)際,綜合考慮,我們選擇了StarRocks作為小米有品數(shù)據(jù)中心的新一代OLAP引擎。主要考慮到StarRocks有以下幾點(diǎn)優(yōu)勢(shì):

·極致查詢(xún)性能:?jiǎn)伪聿樵?xún)性能已經(jīng)超過(guò)ClickHouse,多表Join經(jīng)過(guò)CBO優(yōu)化,性能遠(yuǎn)超ClickHouse

·同時(shí)支持明細(xì)和聚合模型:支持Duplicate/Aggregate/Unique三種數(shù)據(jù)模型,同時(shí)支持物化視圖

·高效數(shù)據(jù)導(dǎo)入:高效支持流式導(dǎo)入和批量導(dǎo)入

·運(yùn)維簡(jiǎn)單,高可用:多副本,一致性協(xié)議支持高可用,自動(dòng)化運(yùn)維,操作簡(jiǎn)單

當(dāng)前架構(gòu)

采用StarRocks作為小米有品數(shù)據(jù)中心的OLAP引擎之后,我們當(dāng)前的架構(gòu)是這樣的:

業(yè)務(wù)數(shù)據(jù)和流量數(shù)據(jù)通過(guò)數(shù)據(jù)采集服務(wù),寫(xiě)入Talos中,實(shí)時(shí)數(shù)據(jù)通過(guò)Flink進(jìn)行ETL,實(shí)時(shí)寫(xiě)入StarRocks中;離線數(shù)據(jù)通過(guò)Spark進(jìn)行ETL,寫(xiě)入Hive中,然后導(dǎo)入到StarRocks中。由StarRocks作為統(tǒng)一的查詢(xún)引擎,架構(gòu)簡(jiǎn)單明了。

數(shù)據(jù)寫(xiě)入

數(shù)據(jù)首先寫(xiě)入STG層,STG層是數(shù)據(jù)緩沖層,包含了訂單Binlog數(shù)據(jù),優(yōu)惠數(shù)據(jù)Binlog,退款數(shù)據(jù)Binlog,流量日志等;ODS層進(jìn)行數(shù)據(jù)的解析,DWD層對(duì)數(shù)據(jù)清洗、過(guò)濾及相關(guān)業(yè)務(wù)邏輯處理;DWS層按照主題或者維度進(jìn)行輕度聚合,最后數(shù)據(jù)寫(xiě)入StarRocks中。

目前在StarRocks之中主要包含了SKU聚合模型、頁(yè)面聚合模型、優(yōu)惠聚合模型、明細(xì)模型以及維度模型,那么聚合數(shù)據(jù)采用Aggregate模型;明細(xì)數(shù)據(jù)采用Duplicate模型,然后在此基礎(chǔ)上再采用物化視圖來(lái)加速;離線數(shù)據(jù)通過(guò)Broker Load方式導(dǎo)入;實(shí)時(shí)數(shù)據(jù)通過(guò)Stream Load方式導(dǎo)入。

經(jīng)過(guò)半年的努力,我們目前已經(jīng)實(shí)現(xiàn)了小米內(nèi)部的各大平臺(tái)與StarRocks的互聯(lián)互通,一鍵操作,從Flink、Hive、Hadoop、Kafka、Spark、MySQL等平臺(tái)上,將數(shù)據(jù)一鍵操作寫(xiě)入StarRocks中,也可以一鍵操作將StarRocks數(shù)據(jù)遷移到Flink、Hive、Hadoop、Spark、Presto中,實(shí)現(xiàn)了StarRocks與各大平臺(tái)的互聯(lián)互通,一鍵操作,讓數(shù)據(jù)在各大平臺(tái)自由流動(dòng),方便用戶操作和使用。

數(shù)據(jù)建模

過(guò)去我們?cè)谶M(jìn)行建模的時(shí)候,廣泛的采用的是大寬表,也就是將指標(biāo)列和維度列都放在同一張表上。這會(huì)帶來(lái)一個(gè)很?chē)?yán)重的問(wèn)題,就是當(dāng)維度修改的時(shí)候,我們需要對(duì)數(shù)據(jù)進(jìn)行重新的回溯,然后重新聚合計(jì)算,這樣的話非常消耗時(shí)間。由于StarRocks良好的多表Join性能,我們改變了過(guò)去大寬表的形式,采用星型關(guān)聯(lián)表來(lái)建模,可以支持維度動(dòng)態(tài)修改,降低回溯成本。

數(shù)據(jù)查詢(xún)

對(duì)于去重,過(guò)去主要是采用Druid來(lái)進(jìn)行數(shù)據(jù)的去重,計(jì)算PV/UV等,由于Druid采用HLL近似算法,精度只能達(dá)到97%到99%,對(duì)于AB實(shí)驗(yàn)以及搜索推薦算法進(jìn)行優(yōu)化效果的評(píng)估已經(jīng)不能滿足用戶的需求了。StarRocks支持Bitmap精確去重算法,精度提升到了100%。

除此之外,相比于傳統(tǒng)的Broadcast/Partition Shuffle Join算法,StarRocks提供了Colocate Join和Bucket Shuffle Join算法。Colocate Join在數(shù)據(jù)寫(xiě)入時(shí),保證多個(gè)表的數(shù)據(jù)按照分桶鍵分布,保持一致,這樣多張表Join時(shí)可以在本地進(jìn)行,減少網(wǎng)絡(luò)傳輸,提升查詢(xún)性能。在生產(chǎn)實(shí)踐中我們發(fā)現(xiàn)能夠帶來(lái)3-4倍以上的產(chǎn)品性能的提升,非常強(qiáng)悍。

另外我們也廣泛的使用了Bucket Shuffle Join,相比于過(guò)去的Broadcast/Partition Shuffle Join需要傳輸多份數(shù)據(jù),Bucket Shuffle Join只用傳輸一份右表的數(shù)據(jù)。當(dāng)Join Key包含左表分桶鍵,可以實(shí)現(xiàn)Join時(shí),只用傳輸一份右表數(shù)據(jù),減少數(shù)據(jù)網(wǎng)絡(luò)傳輸,提高查詢(xún)性能。通過(guò)測(cè)試發(fā)現(xiàn)Bucket Shuffle Join能帶來(lái)提升2-3倍以上的查詢(xún)性能。

綜合比較,相比于之前的架構(gòu),現(xiàn)在的架構(gòu)查詢(xún)性能方面提升明顯。聚合上卷查詢(xún),關(guān)聯(lián)查詢(xún)相較于此前基于MySQL的架構(gòu),基于StarRocks的架構(gòu)性能可以提升20-30倍以上。StarRocks在明細(xì)聚合查詢(xún)方面,相比于Spark SQL,提升4倍以上。存儲(chǔ)成本相比于MySQL+Druid,降低2倍以上。

平臺(tái)展示

下圖是我們基于StarRocks實(shí)現(xiàn)的小米有品數(shù)據(jù)中心的一個(gè)平臺(tái),主要是提供業(yè)務(wù)分析以及看板、報(bào)表等等這些服務(wù)。

未來(lái)規(guī)劃

一、我們打算在小米集團(tuán)內(nèi)部廣泛的推廣StarRocks,與商業(yè)平臺(tái),小米賬號(hào)、MIUI、小愛(ài)等等這些業(yè)務(wù)部門(mén)進(jìn)行一個(gè)深度的合作,發(fā)掘StarRocks潛力,探索StarRocks能力邊界,滿足業(yè)務(wù)部門(mén)豐富的需求。

二、我們準(zhǔn)備攜手StarRocks開(kāi)發(fā)Z-OrderIndexing來(lái)提升多維分析的查詢(xún)性能。目前StarRocks在數(shù)據(jù)寫(xiě)入的時(shí)候,會(huì)在內(nèi)存中將多個(gè)列按照字典的方式來(lái)進(jìn)行排序,然后寫(xiě)入到磁盤(pán)中。這種字典排序的方式在實(shí)際的查詢(xún)過(guò)程中,只有利于第一列的過(guò)濾,但是其他列的過(guò)濾效果都比較差。為了支持多維分析的場(chǎng)景,未來(lái)我們打算開(kāi)發(fā)Z-OrderIndexing來(lái)提升多維分析的查詢(xún)性能。

三、我們準(zhǔn)備攜手StarRocks開(kāi)發(fā)單副本Compaction,減少對(duì)查詢(xún)的影響。目前StarRocks在數(shù)據(jù)寫(xiě)入的時(shí)候會(huì)同時(shí)寫(xiě)多個(gè)副本,多副本Compaction占用資源多,影響查詢(xún)性能,開(kāi)發(fā)單副本Compaction,分發(fā)Compaction結(jié)果,減輕對(duì)查詢(xún)性能的影響。

總結(jié)

總的來(lái)說(shuō),首先我們覺(jué)得StarRocks運(yùn)維簡(jiǎn)單,成本低。由于StarRocks同時(shí)支持明細(xì)和聚合模型,可以滿足大多數(shù)場(chǎng)景,之前采用的多種引擎構(gòu)建數(shù)據(jù)中心的架構(gòu),現(xiàn)在可以采用StarRocks作為唯一引擎,架構(gòu)簡(jiǎn)單明了,運(yùn)維高效便捷。StarRocks相比于Spark引擎,機(jī)器成本降低50%以上。第二StarRocks查詢(xún)性能優(yōu)越,StarRocks近乎實(shí)時(shí)的查詢(xún)性能,針對(duì)很多典型場(chǎng)景進(jìn)行優(yōu)化的各種特性(Colocate Shuffle Join,Bucket Shuffle Join,CBO等),給用戶帶來(lái)了良好的使用體驗(yàn)。第三StarRocks既可存算一體,也可存算分離。目前StarRocks是存算一體的系統(tǒng),但它同時(shí)支持ES/MySQL/Hive等外表功能,可以實(shí)現(xiàn)對(duì)Hadoop生態(tài)的查詢(xún),可以做到存算分離,對(duì)于節(jié)省成本,打通Hadoop生態(tài)很有意義。

特別提醒:本網(wǎng)信息來(lái)自于互聯(lián)網(wǎng),目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對(duì)本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,并請(qǐng)自行核實(shí)相關(guān)內(nèi)容。本站不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。如若本網(wǎng)有任何內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系我們,本站將會(huì)在24小時(shí)內(nèi)處理完畢。
0人已贊

關(guān)注我們

泡泡網(wǎng)

手機(jī)掃碼關(guān)注