天天看點

最有價值的雲服務

這是皮質盤,作為攝政國公民,每個人一歲時都被植入了一個。你的意識可被下載下傳至任何盤中,放入任何義體中,你甚至可以在幾分鐘内傳輸到殖民世界的任何一具義體之中,義體是可以替換的,但一旦皮質盤被毀,你就死定了。

—— 《副本》中有關皮質盤的介紹

到底哪一個雲服務最有價值?

我的答案是“雲資料庫”,這裡的“雲”,特指在雲端托管的資料庫服務,具體到阿裡雲上就是RDS、PolarDB、PolarDB-X、ADB等。

為啥是“雲資料庫”最有價值?

因為在我接到性能優化診斷任務當中,十之八九最後都是資料庫的問題,而相對于雲資料庫,自建的資料庫(自行部署在雲伺服器上的資料庫)主要有如下問題:

  • 商業資料庫軟體的許可成本高昂。
  • 開源資料庫缺乏服務支援,出現問題無人兜底,可靠性安全性無法保證。
  • 無論是商業資料庫還是開源資料庫對運維人員都有着較高要求,使用和操作不當導緻了大量問題。

相對于自建資料庫,使用阿裡雲托管資料庫有如下優勢:

  • 開箱即用、分鐘級可用,一鍵即可遷移現有資料到新資料庫。
  • 速度更快、核心參數充分優化、性能對比開源提升顯著,當性能不足時可原地擴容更新。
  • 運作更穩、具備99.99%的SLA承諾、當出現核心BUG時有專門的修複團隊可在第一時間快速修複。
  • 更加安全、内置無法删除和屏蔽的備份功能,避免删庫跑路事件發生、并支援恢複到一周之内任意時間點,提供資源回收筒功能,可快速恢複誤删除資料。

在阿裡雲的雲托管資料庫當中,應用領域最廣泛的無疑非PolarDB莫屬了。

PolarDB是阿裡雲自研的采用分布式共享存儲架構的雲原生資料庫,目前提供MySQL(5.6、5.7、8.0)、PostgreSQL、Oracle相容版三種引擎,對于MySQL和PostgreSQL資料庫的使用者提供100%的相容性支援,可以直接遷移到PolarDB對應的資料庫引擎,對于Oracle資料庫的使用者,PolarDB提供90%以上的相容性支援,并提供遷移助理以降低遷移難度。

無論采用哪種資料庫引擎,所有的PolarDB均采用了分布式共享存儲架構:

最有價值的雲服務

這個分布式共享存儲架構是這樣的:

  • 采用存儲和計算分離的設計
  • 存儲節點和計算節點之間通過高速的RDMA網絡互聯
  • 存儲節點采用分布式叢集架構,所有的資料存取操作由多個節點共同完成
  • 計算節點由一主多從構成,主節點提供讀寫服務,從節點提供隻讀服務

因為采用了這樣的架構,有了下面這些優勢:

  • 分鐘級擴容、由于采用了存儲和計算分離的架構,新計算節點無需複制資料,可實作分鐘級擴容。
  • 節點故障切換RPO=0、主節點将事務的Redo日志寫入共享存儲,一旦主節點發生崩潰,從節點可直接通路共享存儲中的Redo 進而完成資料的恢複。
  • 秒級備份、在存儲層即可完成資料的備份,無論資料庫有多大,通過快照的方式可在30秒之内完成資料庫備份。
  • 無阻塞DDL、由于采用了共享存儲架構,主庫的DDL操作直接應用于隻讀資料庫,避免了非共享存儲架構下隻讀節點還要花大量的時間消化資料庫的變更。

PolarDB主要是面向OLTP線上處理類的需求設計的,同時還為有一定OLAP需求的使用者提供了自定義位址(節點)功能,可以将一部分隻讀節點配置設定一個專門的位址用來處理OLAP類的請求,進而讓OLAP任務不會影響到對響應更為敏感的OLTP業務。

為了讓PolarDB分鐘級擴容的優勢得以最大程度的發揮,PolarDB提供“計算包”的購買方式,一方面計算包可以根據實際的資源消耗情況進行抵扣,另一方面購買資源包要比預設的按量計費又能享受一定的折扣優惠。

除了計算包,PolarDB還提供“存儲包”,顧名思義就是對存儲資源的使用進行按需抵扣,且購買時享受一定的折扣。

一個PolarDB叢集可以拓展到16個節點、單節點最大88核710GB、叢集最大存儲能力可以達到100TB,假如這樣的能力還不足以支撐業務的通路壓力,這時還可以通過PolarDB-X 将多個PolarDB叢集進行“捆綁”使用,讓系統的承載能力進一步擴充。

PolarDB-X 分成1.0和2.0兩個版本,PolarDB-X 1.0 采用中間件的形式,需要結合現有的PolarDB或RDS使用,為了不讓中間件的處理成為瓶頸,PolarDB-X 1.0 最大執行個體規格可更新至1024核4096GB。

PolarDB-X 2.0 是自帶存儲的完整分布式資料庫,目前單節點規格最大32核128G,最大可以擴充到99個節點。

要這麼多節點有什麼用?

通過合理的設定“分區鍵”,可以将一個大表“水準拆分”到多個實體表中,節點越多,可供使用的實體表自然也就越多,整個“邏輯表”的承載能力也就越強。

最有價值的雲服務

上圖中,分區鍵被設定為name字段,根據name字段,資料被分片存儲在多個實體表中。

無論是PolarDB還是PolarDB-X 面對的是主要是OLTP即聯機事務處理的領域,對于專門的OLAP即聯機分析處理領域可以考慮使用AnalyticDB 分析型資料庫,分析型資料庫根據使用的引擎分成MySQL版、PostgreSQL版。其中MySQL版除了計算資源和存儲資源綁定的資源預留模式外還提供了存儲和計算資源分離的彈性模式,使用彈性模式可以根據業務需求的緊迫程度動态增加或減少計算處理節點,進而可以讓使用者更好的掌控費用的消費情況,這種模式有些類似于大資料領域的獨角獸snowflake,在資料的存儲資源上彈性模式分成熱存儲和冷存儲兩種模式,其中冷存儲的價格和阿裡雲的OSS對象存儲處于同一個量級,可以最大程度上降低組織機構的資料存儲成本。

假如組織機構有10PB級的資料存儲和關聯分析需求,則可以考慮使用阿裡雲的DLA資料湖分析服務,DLA根據使用的查詢分析引擎分成SQL版(相容Presto)、Spark版,目前各引擎對資料源的支援情況如下表所示:

最有價值的雲服務

鑒于海量資料的移動成本耗費巨大,是以通過DLA資料湖分析服務,可以讓資料不必移動,即可實作跨資料源的關聯分析,讓資料和資料之間産生“化學反應”并産生出更大的價值。