偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Netflix數(shù)據(jù)庫(kù)架構(gòu)變革:縮放時(shí)間序列的數(shù)據(jù)存儲(chǔ)

存儲(chǔ) 存儲(chǔ)軟件
我們挑戰(zhàn)自己,重新思考我們的方法,并設(shè)計(jì)出一種至少能實(shí)現(xiàn)5倍增長(zhǎng)的方法。我們有可以從第一部分的架構(gòu)中重用的模式,但只有這些模式本身是不夠的,還需要新的模式和技術(shù)。

 2016年1月,Netflix在全球范圍內(nèi)擴(kuò)展,向130個(gè)國(guó)家開(kāi)放服務(wù),支持20種語(yǔ)言。2016年晚些時(shí)候,電視體驗(yàn)逐漸演變?yōu)樵跒g覽體驗(yàn)期間包含視頻預(yù)覽。更多的成員,更多的語(yǔ)言和更多的視頻播放將時(shí)間序列數(shù)據(jù)存儲(chǔ)架構(gòu)從***部分(https://medium.com/netflix-techblog/scaling-time-series-data-storage-part-i-ec2b6d44ba39)延伸至其突破點(diǎn)。在本文的第二部分中,我們將探討該架構(gòu)的局限性,并描述如何在演化的下一階段重新構(gòu)建。

[[252656]]

突破點(diǎn)

***部分的架構(gòu)將所有觀看數(shù)據(jù)視為相同,無(wú)論類(lèi)型(完整標(biāo)題播放與視頻預(yù)覽)或年齡(標(biāo)題的查看時(shí)間)。隨著該功能推廣到更多設(shè)備,預(yù)覽與完整視圖的比例迅速增長(zhǎng)。到2016年底,我們看到該數(shù)據(jù)存儲(chǔ)在一個(gè)季度內(nèi)增長(zhǎng)了30%; 由于對(duì)該數(shù)據(jù)存儲(chǔ)的潛在影響,視頻預(yù)覽的推出被推遲。簡(jiǎn)單的解決方案是擴(kuò)展底層的查看數(shù)據(jù)Cassandra(C *)集群以適應(yīng)這種增長(zhǎng),但它已經(jīng)是使用中***的集群,并且接近集群大小限制,很少有C *用戶(hù)成功通過(guò)。必須要做點(diǎn)什么,但那太早了。

重新思考我們的設(shè)計(jì)

我們挑戰(zhàn)自己,重新思考我們的方法,并設(shè)計(jì)出一種至少能實(shí)現(xiàn)5倍增長(zhǎng)的方法。我們有可以從***部分的架構(gòu)中重用的模式,但只有這些模式本身是不夠的,還需要新的模式和技術(shù)。

分析

我們首先分析了數(shù)據(jù)集的訪(fǎng)問(wèn)模式,得到三種不同的數(shù)據(jù)類(lèi)別:

• 完整標(biāo)題播放

• 視頻預(yù)覽播放

• 語(yǔ)言偏好(即播放了哪些字幕/配音,表示成員在播放給定語(yǔ)言的字幕時(shí)的偏好是什么)

對(duì)于每個(gè)類(lèi)別,我們發(fā)現(xiàn)了另一種模式——大多數(shù)訪(fǎng)問(wèn)都是針對(duì)最近的數(shù)據(jù)。隨著數(shù)據(jù)年齡的增長(zhǎng),所需的詳細(xì)程度降低。將這些見(jiàn)解和我們與數(shù)據(jù)消費(fèi)者的對(duì)話(huà)結(jié)合起來(lái),我們討論了哪些數(shù)據(jù)需要詳細(xì)信息以及持續(xù)多長(zhǎng)時(shí)間。

存儲(chǔ)效率低下

對(duì)于增長(zhǎng)最快的數(shù)據(jù)集,視頻預(yù)覽和語(yǔ)言信息,我們的合作伙伴只需要最近的數(shù)據(jù)。我們的合作伙伴正在過(guò)濾非常短暫的視頻預(yù)覽視圖,因?yàn)樗鼈儾皇菚?huì)員對(duì)內(nèi)容意圖的正面或負(fù)面信號(hào)。此外,我們發(fā)現(xiàn)大多數(shù)會(huì)員為他們觀看的大多數(shù)標(biāo)題選擇相同的subs / dubs語(yǔ)言。在每個(gè)查看記錄中存儲(chǔ)相同的語(yǔ)言***項(xiàng)會(huì)導(dǎo)致大量數(shù)據(jù)重復(fù)。

客戶(hù)端復(fù)雜性

我們研究的另一個(gè)限制因素是查看數(shù)據(jù)服務(wù)的客戶(hù)端庫(kù)如何滿(mǎn)足調(diào)用者對(duì)特定時(shí)間段內(nèi)特定數(shù)據(jù)的特殊需求。調(diào)用者可以通過(guò)指定來(lái)檢索查看數(shù)據(jù):

• 視頻類(lèi)型——完整標(biāo)題或視頻預(yù)覽

• 時(shí)間范圍——***X天/月/年,X對(duì)于各種用例不同

• 詳細(xì)程度——完整或摘要

• 是否包含subs / dubs信息

對(duì)于大多數(shù)用例,在從后端服務(wù)獲取完整數(shù)據(jù)后,這些過(guò)濾器應(yīng)用于客戶(hù)端。正如您可能想象的那樣,這導(dǎo)致了大量不必要的數(shù)據(jù)傳輸。此外,對(duì)于較大的觀看數(shù)據(jù)集,性能會(huì)迅速下降,導(dǎo)致第99個(gè)百分點(diǎn)的讀取延遲發(fā)生巨大變化。

重新設(shè)計(jì)

我們的目標(biāo)是設(shè)計(jì)一個(gè)可以擴(kuò)展到5倍增長(zhǎng)的解決方案,具有合理的成本效率和改進(jìn)以及更容易預(yù)測(cè)的延遲。通過(guò)對(duì)上述問(wèn)題的分析和理解,我們進(jìn)行了這次重大的重新設(shè)計(jì)。以下是我們的設(shè)計(jì)指南:

數(shù)據(jù)類(lèi)別

• 按數(shù)據(jù)類(lèi)型分片

• 將數(shù)據(jù)字段簡(jiǎn)化為基本元素

數(shù)據(jù)時(shí)代

• 按數(shù)據(jù)年齡劃分的碎片。對(duì)于最近的數(shù)據(jù),在設(shè)置TTL后過(guò)期

• 對(duì)于歷史數(shù)據(jù),匯總并旋轉(zhuǎn)到歸檔群集中

性能

• 并行化讀取以提供跨最近和歷史數(shù)據(jù)的統(tǒng)一抽象

群集分片

以前,我們將所有數(shù)據(jù)合并到一個(gè)集群中,客戶(hù)端庫(kù)根據(jù)類(lèi)型/年齡/詳細(xì)程度過(guò)濾數(shù)據(jù)。我們顛倒了這種方法,現(xiàn)在根據(jù)類(lèi)型/年齡/細(xì)節(jié)水平對(duì)聚類(lèi)進(jìn)行分片。這樣可以將每個(gè)數(shù)據(jù)集的不同增長(zhǎng)率彼此分離,簡(jiǎn)化了客戶(hù)端,并改善了讀取延遲。

存儲(chǔ)效率

對(duì)于增長(zhǎng)最快的數(shù)據(jù)集、視頻預(yù)覽和語(yǔ)言信息,我們能夠與合作伙伴保持一致,僅保留***的數(shù)據(jù)。我們不會(huì)存儲(chǔ)非常短暫的預(yù)覽視頻,因?yàn)樗鼈儾皇菚?huì)員對(duì)內(nèi)容感興趣的良好信號(hào)。此外,我們現(xiàn)在存儲(chǔ)初始語(yǔ)言***項(xiàng),然后僅存儲(chǔ)后續(xù)播放的增量。對(duì)于絕大多數(shù)會(huì)員而言,這意味著只存儲(chǔ)一條語(yǔ)言偏好記錄,從而節(jié)省大量存儲(chǔ)空間。對(duì)于預(yù)覽播放和語(yǔ)言偏好數(shù)據(jù),我們也有較低的TTL,因此比完整標(biāo)題播放的數(shù)據(jù)更容易過(guò)期。

如果需要,我們應(yīng)用***部分中的實(shí)時(shí)和壓縮技術(shù),其中可配置數(shù)量的最近記錄以未壓縮的形式存儲(chǔ),其余記錄以壓縮形式存儲(chǔ)在單獨(dú)的表中。對(duì)于存儲(chǔ)較舊數(shù)據(jù)的集群,我們將數(shù)據(jù)完全以壓縮形式存儲(chǔ),在訪(fǎng)問(wèn)時(shí)以較低的存儲(chǔ)成本換取較高的計(jì)算成本。

***,我們不是存儲(chǔ)歷史完整標(biāo)題播放的所有細(xì)節(jié),而是在單獨(dú)的表中存儲(chǔ)具有較少列的匯總視圖。此摘要視圖也經(jīng)過(guò)壓縮,可進(jìn)一步優(yōu)化存儲(chǔ)成本。

總的來(lái)說(shuō),我們的新架構(gòu)如下所示:

 

查看數(shù)據(jù)存儲(chǔ)架構(gòu)

如上所示,查看數(shù)據(jù)存儲(chǔ)是按類(lèi)型分片的——有完整標(biāo)題播放、預(yù)覽標(biāo)題播放和語(yǔ)言***項(xiàng)的單獨(dú)集群。在完整的標(biāo)題播放中,存儲(chǔ)按年齡分類(lèi)。對(duì)于最近查看數(shù)據(jù)(最近幾天)、過(guò)去查看數(shù)據(jù)(幾天到幾年)和歷史查看數(shù)據(jù)都有單獨(dú)的集群。***,歷史查看數(shù)據(jù)只有一個(gè)摘要視圖,沒(méi)有詳細(xì)的記錄

 

數(shù)據(jù)流

寫(xiě)入

將數(shù)據(jù)寫(xiě)入到最近的集群中。在輸入之前應(yīng)用過(guò)濾器,例如不存儲(chǔ)非常短的視頻預(yù)覽播放或?qū)⒉シ诺淖帜?配音與以前的***項(xiàng)進(jìn)行比較,并且僅在與先前行為發(fā)生變化時(shí)存儲(chǔ)。

讀取

對(duì)***數(shù)據(jù)的請(qǐng)求直接轉(zhuǎn)到***的集群。當(dāng)請(qǐng)求更多數(shù)據(jù)時(shí),并行讀取可以實(shí)現(xiàn)高效檢索。

查看數(shù)據(jù)的***幾天:對(duì)于絕大多數(shù)需要幾天完整標(biāo)題播放的用例,信息僅從“最近”集群中讀取。執(zhí)行對(duì)集群中LIVE和COMPRESSED表的并行讀取。繼續(xù)本博文系列***部分詳細(xì)介紹的實(shí)時(shí)和壓縮數(shù)據(jù)集的模式,如果記錄數(shù)超出可配置的閾值,則在從LIVE讀取期間,將記錄匯總,壓縮并寫(xiě)入COMPRESSED表作為具有相同行鍵的新版本。

另外,如果需要語(yǔ)言偏好信息,則對(duì)“語(yǔ)言偏好”集群進(jìn)行并行讀取。同樣,如果需要預(yù)覽播放信息,則會(huì)對(duì)“預(yù)覽標(biāo)題”集群中的LIVE和COMPRESSED表進(jìn)行并行讀取。與完整標(biāo)題查看數(shù)據(jù)類(lèi)似,如果LIVE表中的記錄數(shù)超過(guò)可配置閾值,則記錄將被匯總,壓縮并作為具有相同行鍵的新版本寫(xiě)入COMPRESSED表。

通過(guò)對(duì)“最近”和“過(guò)去”群集的并行讀取,可以啟用最近幾個(gè)月的完整標(biāo)題播放。

匯總的查看數(shù)據(jù)通過(guò)并行讀取 “最近”,“過(guò)去”和“歷史”集群返回。然后將數(shù)據(jù)拼接在一起以獲得完整的匯總視圖。為了減少存儲(chǔ)大小和成本,“歷史”集群中的匯總視圖不包含成員查看的***幾年的更新,因此需要通過(guò)匯總來(lái)自“最近”和“過(guò)去”集群的查看數(shù)據(jù)來(lái)進(jìn)行擴(kuò)充。

數(shù)據(jù)輪換

對(duì)于完整的標(biāo)題播放,不同年齡組之間的記錄移動(dòng)是異步發(fā)生的。在從“最近”集群中讀取會(huì)員的查看數(shù)據(jù)時(shí),如果確定存在超過(guò)配置天數(shù)的記錄,則任務(wù)排隊(duì)以將該會(huì)員的相關(guān)記錄從“最近”移動(dòng)到“過(guò)去”集群。在任務(wù)執(zhí)行時(shí),相關(guān)記錄與“過(guò)去”集群中COMPRESSED表的現(xiàn)有記錄組合在一起。然后壓縮組合的記錄集并將其存儲(chǔ)在具有新版本的COMPRESSED表中。新版本寫(xiě)入成功后,將刪除先前的版本記錄。

如果壓縮后的新版本記錄集的大小大于可配置的閾值,則將記錄集分塊并且多個(gè)塊被并行寫(xiě)入。這些記錄從一個(gè)集群到另一個(gè)集群的后臺(tái)傳輸是批處理的,因此每次讀取時(shí)都不會(huì)觸發(fā)它們。所有這些都類(lèi)似于***部分中詳述的實(shí)時(shí)壓縮存儲(chǔ)方法中的數(shù)據(jù)移動(dòng)。

 

 

群集之間的數(shù)據(jù)輪換

類(lèi)似的記錄到“歷史”集群的移動(dòng)是在讀取“過(guò)去”集群時(shí)完成的。使用現(xiàn)有摘要記錄重新處理相關(guān)記錄以創(chuàng)建新的摘要記錄。然后將它們壓縮并寫(xiě)入具有新版本的“歷史”集群中的COMPRESSED表。成功寫(xiě)入新版本后,將刪除以前的版本記錄。

性能調(diào)優(yōu)

與之前的體系結(jié)構(gòu)一樣,LIVE和COMPRESSED記錄存儲(chǔ)在不同的表中,并進(jìn)行不同的調(diào)整以獲得更好的性能。由于LIVE表具有頻繁的更新和少量的查看記錄,因此壓縮會(huì)頻繁運(yùn)行,并且gc_grace_seconds很小,以減少SSTable的數(shù)量和數(shù)據(jù)大小。經(jīng)常運(yùn)行讀取修復(fù)和全列族修復(fù)以提高數(shù)據(jù)一致性。由于對(duì)COMPRESSED表的更新很少,因此手動(dòng)和不頻繁的完全壓縮足以減少SSTable的數(shù)量。在罕見(jiàn)的更新期間檢查數(shù)據(jù)的一致性。這樣就不需要進(jìn)行讀取修復(fù)以及全列修復(fù)。

緩存層更改

由于我們對(duì)來(lái)自Cassandra的大數(shù)據(jù)塊進(jìn)行了大量并行讀取,因此擁有緩存層有很大的好處。EVCache緩存層架構(gòu)也進(jìn)行了更改,以模擬后端存儲(chǔ)架構(gòu),如下圖所示。所有緩存都有接近99%的***率,并且在最小化對(duì)Cassandra層的讀取請(qǐng)求數(shù)量方面非常有效。

緩存層架構(gòu)

緩存和存儲(chǔ)體系結(jié)構(gòu)之間的一個(gè)區(qū)別是“摘要”緩存集群存儲(chǔ)整個(gè)查看數(shù)據(jù)的壓縮摘要以進(jìn)行完整標(biāo)題播放。緩存***率約為99%,只有一小部分請(qǐng)求被發(fā)送到Cassandra層,在該層中,需要并行讀取3個(gè)表,并將記錄拼接在一起,以便跨整個(gè)查看數(shù)據(jù)創(chuàng)建摘要。

遷移:初步結(jié)果

團(tuán)隊(duì)已經(jīng)完成了一半以上的更改。已經(jīng)遷移了利用按數(shù)據(jù)類(lèi)型分片的用例。因此,雖然我們沒(méi)有完整的結(jié)果可以分享,但初步的結(jié)果和經(jīng)驗(yàn)教訓(xùn)如下:

• Cassandra的操作特性(壓縮,GC壓力和延遲)的大幅改進(jìn)僅基于按數(shù)據(jù)類(lèi)型分割群集。

• 完整標(biāo)題的巨大空間,查看數(shù)據(jù)Cassandra集群,使團(tuán)隊(duì)能夠擴(kuò)展至少5倍的增長(zhǎng)。

• 由于更積極的數(shù)據(jù)壓縮和數(shù)據(jù)TTL,大幅節(jié)省了成本。

• 重新架構(gòu)是向后兼容的?,F(xiàn)有的API將繼續(xù)有效工作,并且預(yù)計(jì)會(huì)有更好和更可預(yù)測(cè)的延遲。為訪(fǎng)問(wèn)數(shù)據(jù)子集而創(chuàng)建的新API將帶來(lái)顯著的額外延遲優(yōu)勢(shì),但需要更改客戶(hù)端。這使得在獨(dú)立于客戶(hù)端更改的情況下推出服務(wù)器端更改變得更加容易,并且可以根據(jù)客戶(hù)端的業(yè)務(wù)帶寬在不同的時(shí)間遷移不同的客戶(hù)端。

結(jié)論

在過(guò)去幾年中,查看數(shù)據(jù)存儲(chǔ)架構(gòu)已經(jīng)取得了很大的進(jìn)步。我們逐步發(fā)展到使用實(shí)時(shí)數(shù)據(jù)和壓縮數(shù)據(jù)并行讀取的模式來(lái)查看數(shù)據(jù)存儲(chǔ),并將該模式用于團(tuán)隊(duì)中的其它時(shí)間序列數(shù)據(jù)存儲(chǔ)需求。最近,我們對(duì)存儲(chǔ)集群進(jìn)行了分片,以滿(mǎn)足不同用例的獨(dú)特需求,并為一些集群使用了實(shí)時(shí)和壓縮數(shù)據(jù)模式。我們擴(kuò)展了實(shí)時(shí)和壓縮數(shù)據(jù)移動(dòng)模式,以便在年齡分片群集之間移動(dòng)數(shù)據(jù)。

設(shè)計(jì)這些可擴(kuò)展的構(gòu)建塊以一種簡(jiǎn)單而有效的方式擴(kuò)展我們的存儲(chǔ)層。雖然我們重新設(shè)計(jì)了5倍于當(dāng)前用例增長(zhǎng)的產(chǎn)品,但我們知道Netflix的產(chǎn)品體驗(yàn)在不斷變化和改進(jìn)。我們也正密切關(guān)注可能需要進(jìn)一步進(jìn)化的變化。

責(zé)任編輯:武曉燕 來(lái)源: LiveVideoStack
相關(guān)推薦

2023-02-16 17:44:13

2022-11-14 07:52:14

時(shí)間序列數(shù)據(jù)庫(kù)CPU

2011-08-29 16:27:16

MySQL時(shí)間類(lèi)型

2021-01-06 08:14:21

時(shí)間序列數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)

2023-05-22 11:20:27

數(shù)據(jù)庫(kù)MySQL關(guān)系數(shù)據(jù)

2022-03-22 09:00:00

數(shù)據(jù)庫(kù)SingleStor技術(shù)

2020-02-18 16:07:17

物聯(lián)網(wǎng)表存儲(chǔ)數(shù)據(jù)庫(kù)

2018-07-30 10:34:14

時(shí)間序列數(shù)據(jù)庫(kù)

2022-09-30 10:31:06

Python時(shí)間序列數(shù)據(jù)

2012-12-10 10:57:04

IBMdW

2019-06-12 08:23:21

數(shù)據(jù)庫(kù)時(shí)間序列開(kāi)源

2018-12-26 15:00:56

數(shù)據(jù)庫(kù)行式存儲(chǔ)列式存儲(chǔ)

2023-08-22 13:16:00

分布式數(shù)據(jù)庫(kù)架構(gòu)數(shù)據(jù)存儲(chǔ)

2011-08-03 13:28:08

Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)控制文件

2011-03-23 16:26:30

數(shù)據(jù)變革

2018-07-13 09:20:30

SQLite數(shù)據(jù)庫(kù)存儲(chǔ)

2018-11-12 15:15:32

MySQL數(shù)據(jù)庫(kù)命令

2019-12-09 12:39:58

數(shù)據(jù)庫(kù)技術(shù)機(jī)器學(xué)習(xí)

2022-03-07 07:18:18

Netflix機(jī)器學(xué)習(xí)架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)