騰訊雲COS對象存儲佔據數據容災C位

說到公有雲容災,大家首先想到的是雲上數據備份。

然而,隨著企業核心業務逐漸從線下遷移到雲上,客戶提出了更高的要求。如何確保雲上業務的高可用、數據的高可靠,這對雲廠商提出了新的挑戰。

騰訊雲作為全球領先的雲廠商,服務了上百萬家客戶。在公有雲服務之初,就憑藉自身業務的多年積累,從機房基礎設施建設,到計算、存儲、網路、安全等各種服務,為客戶在雲上構建高可用、數據高可靠的業務,提供了完善的產品和解決方案。

業務的容災涉及到諸多方面,以典型的三層架構為例,架構上要確保每一層都具備高可用能力,才能保障整體業務的高可用。這其中,數據層作為業務的核心,是我們首要考慮的。

在這篇文章中,我們聚焦在數據層容災,介紹一下騰訊雲COS對象存儲的容災解決方案。

一、Region 和 AZ 的概念

首先介紹一下 Region 和 AZ 的概念。

Region-區域/地域:簡單來說,可以將 Region 理解為不同城市的機房。公有雲的 Region 遍布全球,中國的話,通常會有北京 Region、上海 Region、廣州 Region 等等。不同 Region 之間,一般只能通過公網連通。

AZ-可用區:可以理解為同一個城市的不同機房,是包含在 Region 內的。比如北京 Region,會包括多個 AZ,而單個 AZ 會有一個或多個 IDC 機房園區組成。AZ 之間通過高頻寬、低時延、高冗餘的專線網路連接,保證跨 AZ 之間數據傳輸的安全可靠。

一個 Region 多個 AZ 組成,從機房電力、網路等層面來保障一個 AZ 出現故障的時候不會影響到另外一個可用區。

二、跨可用區容災

如果您的應用程式已經構建在騰訊雲上,可以藉助 COS 對象存儲多 AZ(Available Zone)來提高數據層的可用性。

多 AZ(Available Zone)是指由騰訊雲對象存儲推出的多 AZ 存儲架構,這一存儲架構能夠為用戶數據提供數據中心級別的容災能力。

實現原理上,數據會被打散成若干個分塊,同時按照糾刪碼演算法計算出對應的校驗碼分塊。原始數據分塊和校驗碼分塊會被打散並均分存儲到該地域的不同 AZ 數據中心中,實現同城容災。

多 AZ 特性為客戶提供99.9999999999%(12個9)的數據設計可靠性和99.995%的服務設計可用性。在上傳數據到對象存儲時,只需要通過指定對象的存儲類型,即可將對象存放到多 AZ 的地域。

當您啟用多 AZ 功能後,客戶數據分散存儲在城市中多個不同的 AZ 數據中心,當某個 AZ 數據中心因為自然災害、斷電等極端情況導致整體故障時,其他 AZ 數據中心的數據依舊可以正常讀取和寫入,保障客戶數據持久存儲不丟失,維持客戶業務數據連續性和高可用。

三、跨區域容災

如果您的業務有更高的可用性需求,除了藉助 COS 對象存儲多 AZ 之外,還可以在不同地域保存數據副本,來進一步提高數據層的可用性。

COS 對象存儲桶跨區域複製,指由騰訊雲對象存儲推出的一項數據非同步跨區域複製功能。存儲桶複製是針對存儲桶的一項配置,通過配置存儲桶複製規則,可以在不同存儲桶中自動、非同步地複製增量對象。

啟用存儲桶複製後,COS 將精確複製源存儲桶中的對象內容(如對象元數據和版本 ID 等)到目標存儲桶中,複製的對象副本擁有完全一致的屬性資訊。此外,源存儲桶中對於對象的操作,如添加對象、刪除對象等操作,也將被複制到目標存儲桶中。

通過存儲桶跨區域複製實現數據的異地容災,當某個數據中心因為不可抗因素損毀時,另一個存儲桶的數據中心仍然可以提供副本數據以供您使用。

除了提供高可用之外,存儲桶跨區域複製可以滿足行業對數據安全的合規性要求。同時,當您的客戶在不同地理位置訪問對象時,在與客戶地理位置最近的存儲桶中維護對象副本,最大限度上縮短客戶的訪問延遲,有利於提高您的產品體驗。

四、版本控制

無論是跨可用區容災,還是跨區域容災,如果數據被誤刪除,將導致數據永久丟失。

為了避免用戶誤刪或應用程式故障而丟失的數據,COS 對象存儲推出了版本控制功能。

版本控制用於實現在相同存儲桶中存放同一對象的多個版本。例如,在一個存儲桶中,您可以存放多個對象鍵同為 picture.jpg 的對象,但其版本 ID 不同,例如100000、100101和120002等。

用戶在為某一存儲桶開啟版本控制功能後,可以根據版本 ID 查詢、刪除或還原存放在存儲桶中的對象。這有助於恢復被用戶誤刪或應用程式故障而丟失的數據。例如,用戶在對版本控制的對象進行刪除操作時:

  • 如果需要刪除對象 (非完全刪除),COS 會為被刪除的對象插入刪除標記,該標記將作為當前對象版本,您可以根據刪除標記恢復以前的版本。
  • 如果需要替換對象,對象存儲會為新上傳的對象插入新的版本 ID,您仍然可以根據版本 ID 恢復被替換前的對象。

存儲桶可處於三種版本控制狀態:未啟用版本控制狀態、啟用版本控制狀態和暫停版本控制狀態。

  • 未啟用版本控制狀態:指存儲桶的默認初始狀態,此時版本控制功能關閉。
  • 啟用版本控制狀態:指開啟存儲桶版本控制功能,此時為版本控制開啟狀態,版本控制狀態將應用到該存儲桶中的所有對象。您對存儲桶首次啟用版本控制後,新增上傳到該存儲桶中的對象將擁有唯一的版本 ID。
  • 暫停版本控制狀態:指存儲桶的版本控制由開啟狀態變更為暫停狀態(無法返回未啟用版本控制狀態),此後往存儲桶中上傳的對象將不再存放版本控制的對象。

存儲桶處於不同的版本控制狀態下,您均可對不同狀態的存儲桶中的對象進行上傳、查詢和刪除操作。

五、上傳防覆蓋

除開一些不可抗力因素,很多時候,看起來沒有風險的操作也是導致數據異常的一大原因,比如,COS 是保持最終一致性的,所以,當有同名文件上傳時,舊文件會被覆蓋,為了避免非預期的覆蓋動作,用戶就需要在自己的業務邏輯中維護一套完整的重名校驗系統,當然,用戶也可以選擇開啟版本控制,但開啟版本控制後,多版本對象的管理邏輯也比較複雜,也會帶來額外的存儲量,而且,用戶往往只需要對部分特定文件禁止覆蓋寫的動作,不需要版本控制相較厚重的功能邏輯。

針對這種情況,騰訊雲對象存儲 COS 能夠提供存儲桶級別和對象級別的防覆蓋機制。

用戶可以直接開啟存儲桶的防覆蓋功能,開啟後,存儲桶會禁止一切同名文件的上傳動作,當上傳同名文件時,COS 會拒絕上傳請求,以保證存儲桶中的文件不會被覆蓋。

如果只是想防止存儲桶中部分特定文件被覆蓋,用戶可以在上傳這些文件時,帶上特殊頭部,帶上該頭部後,上傳請求會先對桶中文件進行校驗,如果桶中無同名文件則上傳成功,如果桶中有同名文件,則上傳失敗。

開啟了上傳防覆蓋功能後,用戶仍然可以對文件進行改名,刪除等操作,在一些合規場景下,僅僅是防止覆蓋,還遠遠不夠。

六、對象鎖定

在很多金融場景下,根據合規政策,文件需要強制性的保留,不允許覆蓋,刪除,修改等等,需要留底足夠的時間,這個時候,就需要通過對象鎖定功能來滿足需求。

用戶開啟存儲桶配置對象鎖定後,在保留周期內:

  • 對象不可刪除、修改;
  • 對象存儲類型不能修改;
  • 對象 HTTP 頭部+用戶元數據都不能修改,包括 Content-Type、Content-Encoding、Content-Language、Content-Disposition、Cache-Control、Expires、x-cos-meta-;

對象鎖定功能可以很好的協助客戶滿足合規性的政策要求。

七、寫到最後

無論您的業務已經構建在騰訊雲上或者正在準備遷移上雲,都可以藉助 COS 對象存儲提供的容災能力來保護您的業務數據。通過多 AZ、跨區域複製、版本控制等功能,實現數據的冗餘存儲。

與本地輔助數據中心相比,基於雲的災難恢復可以提供更高的可靠性、可用性和安全性,而不需要重複的硬體、計算、網路和軟體,在保障 RPO 和 RTO 的情況下,可以顯著降低容災 TCO。