天天看點

如何将海量資料遷移上雲

<b>背景</b>

衆所周知,雲計算的出現改變了it世界的格局,更低廉的成本和更加易于擴充的特點都成為了傳統軟體行業改變的動力。而阿裡雲在此基礎上提供了更加完善的服務,更高的可靠性,以及更加低廉的價格,成為了業界值得優先考慮的品牌。

如果您有成千上萬的文檔、圖檔、音視訊檔案需要上傳到oss上來,或者從其他的雲存儲産品上遷移過來,如何才能應對規模如此龐大的資料遷移,如何處理遷移過程中業務上的新增資料?

oss有一套完整的無縫資料遷移方案可以幫您解決這些問題。

<b>方案</b>

整個遷移過程分為下面幾個步驟:

配置bucket回源屬性,配置好資料在oss讀取miss之後回源的位址。配置好之後如果通路某object miss的時候你的用戶端可以根據oss傳回的302重定向去配置的位址讀取檔案;

配置遷移工具,從源端向oss遷移資料,這一步不影響您的業務,異步的從源站将資料搬遷到oss;

資料搬遷接近完成的時候,将業務上的讀寫從之前的源站切換到oss;

等待遷移工具從源搬遷完所有的老資料(這種場景下如果您的業務有對資料的覆寫寫是需要注意的,可能會造成老資料覆寫新資料)

如上所說,我們有兩種方式bucket回源屬性可以做到無縫遷移,即鏡像和重定向:

如何将海量資料遷移上雲

上圖是“利用鏡像做無縫資料遷移示意圖”,圖中帶有數字标記的箭頭就是資料通路miss時的資料流向。在鏡像回源的方式下使用者通路oss如果object miss,那麼oss會替使用者從源站讀回檔案,并寫入到oss,這樣一來,如果使用者的請求可以周遊所有的檔案,那麼這個異步的遷移過程其實是可以省略掉的(當然,這也會帶來一些新的問題,後文我們會提到)。

如何将海量資料遷移上雲

上圖是“利用重定向做無縫遷移示意圖”,圖中有數字标記的箭頭就是資料通路miss時的資料流向。在配置重定向回源的方式下,如果object miss,那麼需要您的用戶端去源站去讀取一次資料。這就要求您的用戶端要能了解http協定中的3xx重定向語義(oss的重定向回源是通過3xx重定向來實作的)。需要注意的是,在這種回源方式下,oss不能自動幫使用者搬遷資料,使用者的資料必須依靠遷移工具/服務來異步的搬遷到oss上面來。

圖中也能看到在這種場景下配合cdn一起使用,那麼檔案會cache在cdn上,無需每次miss之後都回源站讀取,也是一種減少延遲、節省源站流量的方式。如果不使用cdn,那麼就需要使用者自己完成回源站讀取資料的過程。

縱觀上面的兩張圖,在您配置bucket的回源屬性之後,再開啟資料遷移過程,在業務資料大部分都搬遷到oss之後,再将整個業務的讀寫全部切換到oss。這個時候回源功能就能幫您處理那些尚未搬遷過來的資料,無需停服,無縫銜接。等到所有的資料都搬遷完畢之後就可以關閉回源,停掉資料遷移,整個向oss遷移資料的方式就完成了。

<b>使用建議</b>

如果要遷移的檔案較少,建議配置鏡像回源的方式,按照檔案清單逐一通路oss,oss會把所有的檔案從源站讀取出來,回寫到您的bucket,這種方式是一個最簡單的遷移方案。

如果需要遷移的檔案量比較大,或者檔案的大小比較大,那麼由于鏡像回源的方式帶寬有限,依靠這種方式來搬遷資料可能會花費比較長的時間,影響您的使用體驗,建議使用“重定向回源+遷移工具/服務”的方式,如果object miss,直接讓用戶端從源站讀取資料,由遷移工具/服務來異步的搬遷資料,不影響您的服務。

如果您的業務對延遲比較敏感,建議在大部分資料遷移完成之後再将業務切到oss上來,否則像文章開頭的兩張圖中所示,如果資料通路miss的話,使用者的請求都會經過一個比直接通路oss上的object更長的過程,這一過程會增加通路延遲,可能會降低您的使用者體驗,是以這個重定向或者鏡像的資料比例要控制的盡可能小一些。

<b>配置步驟</b>

本部分主要包含bucket回源屬性的配置,以及遷移工具/服務的使用方法。

<b>配置bucket回源屬性</b>

要配置bucket的回源屬性,要在bucket屬性的“回源設定”裡面添加規則。如下圖:

如何将海量資料遷移上雲

這裡的規則分為兩種:鏡像回源和重定向回源。

鏡像回源:使用者通路oss上的object,如果檔案不存在,就按照鏡像回源裡的url向源站去取資料,回寫到oss,回寫完成之後object就自動搬遷到了oss上面,下一次通路就不會再出現object不存在的情況;

重定向回源:使用者通路oss上的object,如果檔案不存在,按照配置向使用者的用戶端傳回一個302重定向跳轉,使用者用戶端從配置的源站讀取資料,這種方式下oss不會從使用者的源站拉取資料回來回寫到oss,下一次通路仍然會向使用者用戶端傳回一次302重定向跳轉,直到使用者自己把這個object寫入到oss為止。

下圖為如何配置鏡像回源:

如何将海量資料遷移上雲

下圖為如何配置重定向回源:

如何将海量資料遷移上雲

圖中可以看到鏡像方式隻支援http code設定為404這種方式,也就是我們所說的通路object miss的情況下才會去做鏡像。重定向回源中回源條件中的http code可以設定400-599之間的錯誤碼,但是在用回源實作無縫遷移的時候這個地方要填成404。其他的選項依照您的實際情況使用。

<b>使用遷移工具/服務</b>

遷移工具可以将您本地或者第三方雲存儲服務上的檔案同步到oss上。 我們的遷移工具有以下主要特性:

支援将本地、oss、七牛、百度對象存儲、金山對象存儲的檔案同步到指定oss bucket上;

支援存量資料同步(允許指定隻同步某個時間點之後的檔案);

支援增量資料自動同步;

支援斷點續傳;

支援上傳/下載下傳流量控制;

支援并行list和并行資料下載下傳/上傳;

<a href="https://help.aliyun.com/document_detail/oss/utilities/oss-import2/ossimport2_user_guide_for_linux.html?spm=5176.blog4211.yqblogcon1.12.wi1hul">遷移工具linux平台使用說明</a>

<a href="https://help.aliyun.com/document_detail/oss/utilities/oss-import2/ossimport2_user_guide_for_win.html?spm=5176.blog4211.yqblogcon1.13.wi1hul">遷移工具windows平台使用說明</a>

遷移服務。如果您有較大量級的資料,并且期望在較短的時間之内遷移到oss上,除了遷移工具之外,我們的專業技術人員還可以為您提供多機器并行同步方案,請加旺旺群:904193608聯系我們。

繼續閱讀