雲資料遷移防「坑」指南

2021-09-19 03:42:10 字數 4175 閱讀 8093

將tb甚至pb級的資料轉移到雲端確實是一項非常有挑戰性的工作。但是更重要的是你需要看到比這些位元組更深遠的地方。你可能知道當在雲端訪問這些應用程式時,它們的執行行為可能會表現得不一樣,成本結構也將會有所不同,並且轉移所有的資料需要花費大量的時間。還有許多其他容易被忽略的因素,有可能威脅到整個過程並導致雲資料遷移脫軌。

收集、組織、格式化,以及驗證你的資料要遠比轉移資料的挑戰更大。下面將列舉出雲資料遷移計畫階段的一些普遍問題,可以幫助你在接下來的工作中避免浪費更多的時間和財力。

1、資料儲存

我們看到的雲遷移中最常見的錯誤是將資料堆入雲儲存而不考慮將會如何使用這些資料。典型的思考過程是「我想把我的文件和資料庫放到雲中,物件儲存很便宜,所以我會把文件和資料庫檔案放在那裡。」但是檔案、物件以及資料庫的行為模式是完全不同的。如果位元組放錯了位置會破壞你的整個雲計畫。

檔案由層次結構的路徑、目錄樹來組織。每個檔案可以快速訪問,以最小的等待時間(到首位元組的時間)以及很高的速度 (資料流開始後每秒位元數)。可以輕鬆地將單個檔案移動、重新命名和更改到位元組級別。可以有許多小檔案、少量大檔案,或者大小和資料型別的任意組合。傳統應用程式可以像在房子裡一樣在雲中訪問檔案,而不需要任何特殊的雲意識。

所有這些優點使得基於檔案的儲存成為最昂貴的選擇,但是將檔案儲存在雲中還有一些其他缺點。為了實現高效能,大多數基於雲的檔案系統 一次只能由乙個基於雲的虛擬機器訪問,這意味著所有需要該資料的應用程式必須在單個雲vm上執行。如果要服務多個 vm (比如 azure files),就需要像中小企業那樣將nas儲存前置,但這又會使得效能嚴重受限。檔案系統是快速、靈活和向後相容的,但是它們很昂貴,只對在雲中執行的應用程式有用,並且不能很好地擴充套件。

物件不是檔案。請牢牢記住,因為很容易忘記。物件位於平面命名空間中,就像乙個巨型目錄一樣。延遲很高,有時幾百或幾千毫秒,並且吞吐量很低,除非使用巧妙的技巧,否則通常達到每秒150兆位元。訪問物件的很多技巧都可以歸結為聰明的技巧,比如多部分上傳、位元組範圍訪問和鍵名優化。物件可以同時被許多雲本地和基於web的應用程式從雲內外讀取,但傳統的應用程式則需要一些變通的方法。訪問物件儲存的大多數介面使得物件看起來像檔案: 鍵名通過字首過濾,使其看起來像資料夾,將自定義元資料附加到物件上,使其看起來像檔案元資料或是一些系統,比如vm檔案系統上的fuse快取物件,以允許傳統應用程式訪問。但是這些方法是易碎的且破壞效能的。雲儲存是廉價的、可擴充套件的、雲原生的,但是它也很慢,並且很難訪問。

資料庫有它們自己的複雜結構,它們可以由查詢語言(如sql)訪問。傳統的資料庫可能由檔案儲存支援,但它們需要乙個實時資料庫程序來提供查詢。這可以通過將資料庫檔案和應用程式複製到vm中或者通過將資料遷移到雲託管的資料庫服務來提公升到雲中。但是將資料庫檔案複製到物件儲存中僅作為離線備份有用。資料庫作為雲託管服務的一部分可擴充套件,但是確保依賴於資料庫的應用程式和流程完全相容並且是雲原生同樣至關重要。資料庫儲存是高度專業化和特定於應用程式的。

如何在可明顯節省成本的物件儲存與檔案和資料庫的功能性之間做出平衡,就需要仔細考慮你到底需要什麼功能。舉個例子,如果你想儲存和分發成千上萬的小檔案,那麼與其將它們存檔到單一的zip檔案中,並作為單個物件來儲存,反倒不如將每個單獨的檔案作為單獨的物件來儲存更好。不正確的儲存選擇可能會導致複雜的依賴關係,這些依賴關係在後續更改時既困難又昂貴。

2、資料準備

將資料移動到雲並不像將位元組複製到指定的儲存型別那樣簡單。在複製任何東西之前,需要進行大量準備,而這段時間需要仔細編制預算。概念驗證這個專案環節常常被忽略,這會導致之後的成本代價大大超支。

過濾掉不必要的資料可以節省大量的時間和儲存成本。舉個例子,資料集可以包含不需要成為雲工作流一部分的備份、早期版本或草稿檔案。也許過濾過程中最重要的部分就是優先確定哪些資料需要首先轉移。正在頻繁使用的資料不能容忍在完成整個遷移過程所需的周、月或年之間失去同步。這裡的關鍵是提出一種自動選擇要傳送哪些資料以及何時傳送資料的方法,然後仔細記錄所有已完成和未完成的工作。

不同的雲工作流可能要求資料採用與內部應用程式不同的格式或組織。舉個例子,乙個合法的工作流可能需要翻譯成千上萬個小word或pdf文件並將它們打包成zip檔案,**工作流可能包含**轉換和元資料打包,而生物資訊學的工作流可能需要挑選和分期萬億位元組的基因組資料。這樣的重新格式化是乙個非常費時費力的過程。它需要大量的實驗、大量的臨時儲存以及大量的異常處理。有時很容易推遲對雲環境的任何重新格式化,但請記住,這並不能解決這個問題,它只是把它轉移到另乙個環境,在那裡你所使用的每乙個資源都有明碼標價。

儲存和格式化問題的一部分可能包括關於壓縮和歸檔的決策。舉個例子,在傳送數百萬個小文字檔案到雲中之前,對它們進行zip處理是有意義的,但對於幾千兆位元組的**檔案,這個方法就不適用。歸檔和壓縮資料使得傳輸和儲存資料更加容易,但是要考慮在兩端打包和解包這些歸檔所需的時間和儲存空間。

3、資訊驗證

完整性檢查是最重要的步驟,也是最容易出錯的步驟。通常假定在資料傳輸期間發生損壞,無論是通過物理**還是網路傳輸,都可以通過執行之前和之後的總和校驗來捕獲。總和校驗在流程中是至關重要的環節,但實際上在資料的準備和匯入環節最有可能遭受資料損壞或丟失。

當資料改變格式和應用程式時,即使位元組相同,含義和功能也會丟失。軟體版本之間的不相容性可能使千兆位元組的「正確」資料變得毫無用處。提出乙個可擴充套件的程序來驗證你的資料是否正確和可用將會是一項艱鉅的任務。在最壞的情況下,它可能演變成勞動密集型的、不精確的手動程序,即 「在我看來沒問題」,但是即使是這樣也比根本沒有驗證要好。最重要的是確保能夠在遺留系統退役之前識別到問題!

4、傳送的安排

將單個系統遷移到雲上是相對容易的,只需把準備好的資料複製到物理**上或通過網際網路上傳即可。但這一過程很難規模化,尤其是物理**。當許多不同的系統開始發揮作用時,那些在概念驗證中看起來「簡單」的內容可能演變成為「噩夢」。

一套**裝置必須與每台機器相連線。這可能意味著裝置在乙個或更多的資料中心周圍進行物理行走、適配聯結器、更新驅動程式和安裝軟體。通過本地網路連線可以節省物理移動,但是軟體設定仍然具有挑戰性,並且複製速度可能下降到遠低於直接通過網際網路上傳可以實現的速度。通過網際網路直接從每台機器傳輸資料可以節省許多步驟,特別是當資料已經在雲端時。

如果資料準備包括複製、匯出、重新格式化或歸檔,本地儲存會成為瓶頸。有必要設定專用儲存器來儲存準備好的資料。這具有允許許多系統並行地執行準備的優點,並將可運輸**和資料傳輸軟體的接觸點減少到僅乙個系統之中。

5、資料傳送

當我們對比網路傳輸和媒介交付時,很容易只關注傳輸時間。但是這忽略了獲取裝置、配置和載入裝置、裝置返回以及雲**商在後端複製資料所需的時間。我們的客戶說完成這一流程,花費四周的周轉時間(從裝置訂購到資料在雲中可用)很普遍。這使得實際傳送裝置的資料傳輸速率下降到每秒300mb,如果裝置沒有完全裝滿,則還要少得多。

網路傳輸速度同樣取決於許多因素,首要因素是本地上行線路。你傳送資料顯然不可能超過物理的網速,儘管認真的資料準備可以減少你需要傳送的資料量。傳統協議,包括雲**商預設用於物件儲存的那些協議,在跨越遠端網際網路路徑的速度和可靠性方面存在障礙,這使得實現該位元率變得困難。

物理裝運和網路傳輸之間的最大區別在概念驗證過程中最常被忽略。對於物理裝運,載入到裝置上的第乙個位元組必須等到最後乙個位元組載入完成後才能裝運。這意味著,如果載入該裝置需要數週時間,那麼在到達雲端時,其中的一些資料將過期。即使資料集達到pb級別,物理裝運總體上可能會更快一些,但在遷移過程中保持當前優先順序資料的能力對於關鍵資產的網路傳輸來說仍然是有利的。認真規劃在資料準備階段中的過濾和優先次序是必須的,也可採用混合方法。將資料放入雲提供商網路中並不是資料傳輸步驟的結束。如果需要將它複製到多個區域或**商那兒,就需要認真計畫如何實現它。

6、雲計算

當資料到達雲中的目的地時,遷移過程僅僅只完成了一半。需要首先進行校驗和檢查: 確保到達的位元組與傳送的位元組一致。這比你可能意識到的更棘手。檔案儲存使用快取層,這些快取層可能會損壞剛剛上傳的資料。這種損壞並不常見,但是在清除所有快取並重新讀取檔案之前,不能確定進行任何的校驗和檢查。重新啟動例項或解除掛載儲存可以完成清除快取記憶體的工作。

驗證物件儲存校驗和需要將每個物件讀出到用於計算的例項中。與普遍認知相反,物件「e-tags」沒有校驗和檢查有用。特別是使用多部件技術上傳的物件,只能通過將它們讀回來驗證。一旦所傳輸的資料被驗證,在基於雲的應用程式和服務能夠使用它之前,可能需要進一步的提取、重新格式化和分發。這與在企業內部進行的準備和編組處理完全相反。

擴充套件資料的最後一步是驗證資料是否正確和有用。這是上面討論的資訊驗證計畫的另一方面,並且是知道你是否真的完成的唯一方法。

雲遷移更多的是程序而不是資料。甚至那些看似簡單的任務(如檔案分發)也可能需要複雜的遷移步驟來確保生成的雲基礎設施與預期的工作流相一致。圍繞雲的大量宣傳,從成本節約到可擴充套件性,都是合理的。但是認真地計畫和預估困難對於決定使用哪些所需的工具和方法來實現這些回報才是至關重要的。

大連**醫院哪家好

Androidx遷移爬坑指南

官方文件 android studio 3.2及以上,refactor migrate to androidx gradle.properties 檔案 新增 android.useandroidx true android.enablejetifier true 如果沒有用任何的第三方包 估計不大...

SVN遷移至git 避坑指南

獲取歷史開發人員名單 主要是為了同步svn歷史提交記錄到git 進入到專案的svn根目錄下,執行以下命令,可以獲取到專案所有的歷史提交人 svn log xml grep awk f userinfo.txt 調整匯出的userinfo.txt內容格式為以下例子的格式 visualsvn serve...

雲遷移典型場景 之 資料中心遷移

在 雲遷移指南,這6 點你必須知道 一文中,闡述了雲計算的發展前景 雲遷移的前世今生。今天,通過 分析某省資訊中心機房搬遷的案例,來看看數騰 雲遷移解決方案在不同應用場景下是如何發揮價值的。資料中心的遷移是指在有限的時間內將原資料中心內的網路 應用系統 資料等平穩地遷移至新資料中心,並恢復應用系統正...