對象存儲的新希望:R2 進入公測

52

去年9 月,我們宣布正在打造自己的對象存儲解決方案:Cloudflare R2。R2 是我們對現有云服務提供商高昂出口收費的答案,允許開發人員按需存儲盡可能多的數據,而無需擔心訪問數據的成本。

人們反應非常熱烈。

  • 獨立開發人員的賬單金額太小,雲服務提供商不會與他們協商合理的出口費率。出口費用是這些開發人員雲服務賬單上最大的一項,扼殺他們正在構建的業餘項目和新業務。
  • 大型企業已經將多雲存儲——以及多雲本身——視為不切實際的夢想。他們興奮地來找到我們,提出與合作公司集成數據的新產品。
  • 非營利研究機構支付巨額出口費用,只是為了在彼此之間分享實驗數據。出口費用對他們的協作能力產生了切實的影響,在組織之間形成孤島,限制他們能進行的實驗和分析。

Cloudflare 的存在就是為了構建更好的互聯網。今天,互聯網終於得償所願:R2 現已開放公測

自助客戶可在Cloudflare 儀表板中啟用R2。Enterprise 客戶可聯繫CSM 以啟用。

內部及外部API

R2 有兩個API:其一隻能從Workers 內訪問,我們稱之為In-Worker API,另一個是兼容S3 的API,將您的存儲桶暴露在形如bucket.account.r2storage.com的URL 上。在對R2 發出請求前,您將需要通過身份驗證——R2 存儲桶默認是私有的。

In-Worker API

使用In-Worker API 時,某個存儲桶被綁定到特定Worker,後者可針對該存儲桶執行PUT、GET、DELETE 和LIST 操作。

兼容S3 的API

對於兼容S3 的API,身份驗證方式與在S3 上相同:針對R2 URL 的SigV4。SigV4 使用一個密鑰對請求進行簽名,完成對R2 的身份驗證。這意味著,目前通過互聯網對R2 進行公開訪問的唯一方式是託管一個Worker,將其連接到R2,並通過其路由請求。

要測試兼容S3 的API,最簡單的方式是使用S3 客戶端。其中一個最流行的S3 客戶端是boto3 SDK。

在Python 中,複製如下腳本,並填入R2 帳戶憑據的account_idaccess_key和 secret_access_key 字段。

main.py
import boto3

s3 = boto3.resource('s3',
  endpoint_url = 'https://<accountid>.r2.cloudflarestorage.com',
  aws_access_key_id = '<access_key_id>',
  aws_secret_access_key = '<access_key_secret>'
)

print('Buckets:')
for bucket in s3.buckets.all():
  print(' - ', bucket.name)

bucket = s3.Bucket('my-bucket-name')

print('Objects:')
for item in bucket.objects.all():
  print(' - ', item.key)

特性

R2 通過兩個API 支持所有基本S3 功能:創建/讀取/更新/刪除。

公測期間,我們的目標是讓R2 支持每個存儲桶每秒1000 次GET 操作和每秒100 次PUT 操作。R2 支持最大約5 TB 的對象,每個部分的數據大小限制為5 GB。

R2 提供對數據的強一致性訪問。一旦某個PUT 操作得到R2 確認,未來的GET 操作將總是反映該新鍵/值對。唯一例外是在刪除一個存儲桶時。在刪除後的一小段時間內,該存儲桶可能仍繼續存在,並繼續允許讀/寫。

定價

最初宣布R2 時,我們包含了初步定價信息。我們構建R2 的主要目標之一是服務那些無法與雲服務提供商協商大幅折扣的開發人員。為此目的,我們也宣布了一個永遠免費的級別,讓開發人員能零費用利用R2 進行開發。

R2 收費取決於存儲數據總量,以及對數據執行的操作類型:

  • 存儲定價為0.015 美元/GB/每月。
  • A 類操作(包括讀取和列出)費用為4.50 美元/百萬次。
  • B 類操作費用為0.36 美元/百萬次。

A 類操作會改變狀態,例如創建存儲桶、列出存儲桶中的對像或寫入對象。B 類操作會讀取現有狀態,例如讀取存儲桶中的對象。有關定價和操作類型的更多信息,請參閱文檔

當然,R2 的出口帶寬是免費的。您可以隨心所欲地訪問存儲桶。

R2 的永遠免費級別包含:

  • 10 GB/月的存儲數據
  • A 類操作100 萬次/月
  • B 類操作1000 萬次/月

免費使用量每月清零。公測階段,免費級別的R2 使用量將被記賬。

未來計劃

過去六個月內,我們與一些設計合作夥伴進行了封閉測試,打造我們的存儲解決方案。在Durable Objects 支持下,R2 的全新架構同時實現高可用性和一致性能。

雖然我們在R2 上取得了巨大進步,未來數月內還有大量工作要做。

提高性能

我們的首要任務是改善性能和可靠性。雖然我們將內部使用量和設計合作夥伴的需求放到了R2 上,但沒有實時生產流量的替代品。

公測期間,我們的目標是讓R2 支持每個存儲桶每秒1000 次GET 操作和每秒100 次PUT 操作。隨著系統運行變得順暢,我們將提高上限。如果您有更高需求,歡迎聯繫我們。

創建存儲桶時,您不會看到地區選擇器。我們對R2 的設想包括自動全球分佈式的存儲,R2 無縫地將每個對象放置到最接近請求來源的存儲地區。今天,R2 主要在北美存儲數據,因此從其他地區訪問內容時延遲較高。我們將首先通過增加可以創建對象的額外地區來解決這個問題,然後增加現有對象的跨區域自動遷移。類似於我們為Durable Objects 構建的司法管轄區限制,我們也將對R2 存儲桶放置數據的地點進行限制,以遵守隱私保護法規。

擴大R2 的功能集

隨後我們將專注於將R2 功能擴大到基本S3 API 以外。短期內,我們將重點實現:

  • 支持TTL,以便能隨時間推移而自動刪除對象。
  • 公共存儲桶,以便能將存儲桶暴露在互聯網上,無需編寫Worker。
  • 預簽名URL 支持,將特定鍵的讀寫權限授予一個令牌。
  • 與Cloudflare 緩存集成,以擴大讀取請求的規模,提供數據的全球分佈。如果您有這裡沒有列出的額外功能需求,歡迎告訴我們!加入我們的Discord,在r2-open-beta 頻道分享您的需求,以便使R2 成為您的全新零出口費用對象存儲。
Source https://blog.cloudflare.com/zh-cn/r2-open-beta
Comments