OSS無縫數據遷移方案

funjack 8年前發布 | 33K 次閱讀 數據遷移 OpenID/單點登錄SSO

來自: http://yq.aliyun.com/articles/4211

背景

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

如果您有成千上萬的文檔、圖片、音視頻文件需要上傳到OSS上來,或者從其他的云存儲產品上遷移過來,如何才能應對規模如此龐大的數據遷移,如何處理遷移過程中業務上的新增數據?

OSS有一套完整的無縫數據遷移方案可以幫您解決這些問題。

</div>

方案

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

  • 配置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上面來。

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

配置步驟

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

配置Bucket回源屬性

要配置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。其他的選項依照您的實際情況使用。

使用遷移工具/服務

  • 遷移工具可以將您本地或者第三方云存儲服務上的文件同步到OSS上。 我們的遷移工具有以下主要特性:

支持將本地、OSS、七牛、百度對象存儲、金山對象存儲的文件同步到指定OSS Bucket上

支持存量數據同步(允許指定只同步某個時間點之后的文件)

支持增量數據自動同步

支持斷點續傳

支持上傳/下載流量控制

支持并行list和并行數據下載/上傳

</div>

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

使用建議

  • 如果要遷移的文件較少,建議配置鏡像回源的方式,按照文件列表逐一訪問OSS,OSS會把所有的文件從源站讀取出來,回寫到您的Bucket,這種方式是一個最簡單的遷移方案。

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

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

  • </ul> </div>

 本文由用戶 funjack 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!