考慮到代碼和數(shù)據(jù)與Oracle進行交互的數(shù)目,Netflix的宗旨之一就是將基于Oracle系統(tǒng)的解決方案分離到一個基于服務的架構中。Netflix的API其中一些需要跨區(qū)域性和高可用性。因此它們決定將數(shù)據(jù)分離到多個數(shù)據(jù)存儲庫。用戶數(shù)據(jù)被遷移到Cassandra數(shù)據(jù)庫。支付處理集成需要ACID事務操作.因此所有相關數(shù)據(jù)都被遷移到MYSQL。以下是Netflix貼出的遷移架構表現(xiàn)形式。

6252

挑戰(zhàn)

隨著Netflix著手遷移這項龐大任務,也意味著它要所面臨許多挑戰(zhàn)。

遷移最好不要影響到面向用戶的流量。

為了迅速發(fā)展用戶群,AWS內(nèi)的新架構必須要進行擴展。

自1997年Netflix成立以來,產(chǎn)生了幾十億行數(shù)據(jù),不斷地改變和組成歷史數(shù)據(jù)。Oracle內(nèi)Netflix的大型共享數(shù)據(jù)庫數(shù)據(jù)分分鐘都在增長。將這些數(shù)據(jù)遷移到AWS,首先要傳輸并將其實時同步到云內(nèi)兩位數(shù)TB的RDBMS。

作為一個SOX系統(tǒng)這又增加了一層復雜性,因為整個遷移和工具作業(yè)需要遵循Netflix的SOX流程。

Netflix正是向全球擴展業(yè)務的時候,Billing的遷移絕不能影響為自身遷移和全球發(fā)布忙的焦頭爛額地其它團隊。

方案

Netflix遷移方案是按照簡單的原則進行——幫助Netflix確定前進的方向。以下概述了最重要的部分:

挑戰(zhàn)復雜性與簡化:雖然簡單接受復雜的傳統(tǒng)系統(tǒng)比挑戰(zhàn)它要容易得多,但當你“仰望”海量數(shù)據(jù)和代碼的時候,簡化就成了關鍵。Netflix耗費了幾天時間開發(fā)并且反復要求自身進行簡化。

清理代碼:Netflix開始將現(xiàn)有代碼清理到更小的有效模塊中,并率先遷移一些重要的相關方案——將稅務解決方案遷移到云。

接下來,Netflix不再從Oracle系統(tǒng)表格中提取會員計費歷史記錄,而是構建了一個新的應用程序捕獲計費事件,只將所需數(shù)據(jù)遷移到新的Cassandra數(shù)據(jù)庫,然后開始在云內(nèi)提供全球計費歷史記錄。

Netflix花了大把時間編寫數(shù)據(jù)遷移工具,以便將會員計費屬性跨Oracle系統(tǒng)內(nèi)表格轉(zhuǎn)換為更簡單的Cassandra數(shù)據(jù)結構。之后與DVD技術團隊合作進一步簡化集成,然后清除過時的代碼。

清除數(shù)據(jù):Netflix認真審查了所有表格,確保遷移所需數(shù)據(jù)。歷史計費數(shù)據(jù)對法律和客戶服務團隊很有價值。Netflix的目標是僅將所需數(shù)據(jù)遷移到云。因此需要與受影響的團隊合作找出它們真正需要的歷史數(shù)據(jù)部分。Netflix還確定了另一種數(shù)據(jù)存儲方案來服務這些團隊的舊數(shù)據(jù)。之后再開始清除無意義數(shù)據(jù)。

構建工具來實現(xiàn)彈性與兼容性:Netflix的目標是零宕機遷移應用程序。為了實現(xiàn)這一目標而構建了代理和重定向工具以便將數(shù)據(jù)傳輸回數(shù)據(jù)中心,幫助Netflix保持數(shù)據(jù)中心內(nèi)的應用程序不受變化影響,直到Netflix準備遷移這些數(shù)據(jù)。

Netflix必須要構建工具,支持SOX系統(tǒng)與Billing云基礎設施兼容,并確保應對意料之外的開發(fā)者操作和操作審核。

Netflix的云部署工具Spinnaker提高了對Chronos和大數(shù)據(jù)平臺捕獲部署信息和通道事件的能力以便審核。Netflix還強化了Cassandra客戶端用于身份驗證和審核操作。此外,采用Atlas寫入新通知用于監(jiān)控云內(nèi)應用程序和數(shù)據(jù)。

在數(shù)據(jù)分析團隊的幫助下,Netflix針對Oracle內(nèi)的數(shù)據(jù)制作了比較器,根據(jù)國家和報告不匹配度來協(xié)調(diào)Cassandra數(shù)據(jù)庫里用戶數(shù)據(jù)。為了實現(xiàn)以上目標,Netflix頻繁使用其大數(shù)據(jù)平臺捕獲部署事件,采用sqoop將它的Oracle數(shù)據(jù)庫和Cassandra集群傳輸?shù)紿ive。Netflix還寫入了Hive查詢和MapReduce工作用于所需報告和儀表盤。

首先是用有限的新數(shù)據(jù)集進行測試。隨著Netflix向新的國家進軍,雖然提供了一個利用新數(shù)據(jù)測試Netflix云基礎設施的機會,不會降低權重,但仍伴隨著很多挑戰(zhàn)。因此Netflix在云里針對所有面向用戶功能構建了一個新的計費基礎架構,集成了數(shù)據(jù)中心應用程序來完成這個計費流程。一旦新的國家數(shù)據(jù)在云內(nèi)被成功處理,那么向大型傳統(tǒng)國家拓展云業(yè)務也就信心十足了。尤其是在美國,Netflix不僅支持流媒體還有DVD計費。

分離面向用戶的流量避免宕機或其它遷移影響客戶體驗:Netflix在準備將現(xiàn)有會員數(shù)據(jù)導入Cassandra時,需要停機來暫停處理同時將用戶數(shù)據(jù)從Oracle遷移到Cassandra用于API和云內(nèi)批處理更新。所有的工具都是圍繞按需遷移一個國家隧道流量的能力構建的。

Netflix致力于電子商務和會員服務將用戶工作流程集成改變?yōu)橐环N異步模式。Netflix構建重試能力,重新運行失敗處理然后按需重復此步驟。Netflix增加了積極的客戶狀態(tài)管理確保在處理被中止時,會員不受影響。

以上,Netflix遷移了數(shù)百萬行數(shù)據(jù),且用戶未受到任何明顯的影響。

遷移一個數(shù)據(jù)庫需要自身策略規(guī)劃:規(guī)劃數(shù)據(jù)庫遷移,同時還要以最終目標為準繩,否則可能會出錯。遷移有很多決策制定,從存儲預測到吸收至少一年的數(shù)據(jù)增長——轉(zhuǎn)化成若干所需實例,認證成本用于產(chǎn)品和測試環(huán)境,采用RDS服務對應管理大型EC2實例,確保數(shù)據(jù)庫架構可解決數(shù)據(jù)的擴展性,可用性以及可靠性。構建災備計劃,計劃可能的最低遷移宕機時間等等。作為遷移的一部分,Netflix決定從認證的Oracle遷移到開源MYSQL數(shù)據(jù)庫,運行Netflix管理的EC2實例。

雖然Netflix的訂閱處理采用了Cassandra數(shù)據(jù)庫數(shù)據(jù),但支付處理器需要RDBMS 的ACID功能進行處理費用交易。Netflix仍有一個多TB型數(shù)據(jù)庫由于TB局限性不適用于AWSRDS。借助Netflix平臺核心和數(shù)據(jù)庫工程,在不同區(qū)域內(nèi)利用DRBD復制和多個可讀取副本定義了一個多區(qū)域,可擴展架構進行MYSQL控制。Netflix將所有的ETL處理遷移到副本避免主資源爭用。數(shù)據(jù)庫云工程針對MYSQL實例構建了工具和通知,確保監(jiān)控和恢復需求。

其它大的挑戰(zhàn)是無宕機向AWS 內(nèi)MYSQL遷移不斷變化的數(shù)據(jù),經(jīng)過多種選擇探索,Netflix采用了Oracle GoldenGate進行處理,它能伴隨不斷地遞增變化,跨不同數(shù)據(jù)庫復制表格。當然,這是一個非常大的數(shù)據(jù)遷移,需要幾個月時間并行生產(chǎn)運營和其它遷移。Netflix進行了反復測試然后針對MYSQL發(fā)布固定周期,運行應用。最后,經(jīng)過幾周,Netflix開始在MYSQL上運行測試數(shù)據(jù)庫,在對Oracle系統(tǒng)做最終確認和發(fā)布生產(chǎn)之前,測試和解決所有MYSQL代碼分支問題。然后對MYSQL運行測試環(huán)境,不斷構建反饋循環(huán)。

1月4日,Netflix正式對MYSQL遷移處理流程和數(shù)據(jù)ETL。

Netflix的反思

雖然Netflix向云遷移相對順利,但回想一下,一些事可以做的更好。Netflix低估了自動測試需要,沒有一個測試端對端流量的好辦法。前期如果在這些方面多花心思,開發(fā)速度會更快。

分享到

崔歡歡

相關推薦