成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

容器化RDS:計算存儲分離還是本地存儲?

存儲 存儲軟件
隨著交流機會的增多(集中在金融行業,規模都在各自領域數一數二),發現大家對 Docker + Kubernetes 的接受程度超乎想象, 并極有興趣將這套架構應用到 RDS 領域。

隨著交流機會的增多(集中在金融行業,規模都在各自領域數一數二),發現大家對 Docker + Kubernetes 的接受程度超乎想象, 并極有興趣將這套架構應用到 RDS 領域。數據庫服務的需求可以簡化為:

實現數據零丟失的前提下,提供可接受的服務能力。

因此存儲架構的選型至關重要。到底是選擇計算存儲分離還是本地存儲?

[[223859]]

本文就這個問題,從以下幾點展開:

  • 回顧:計算存儲分離, 本地存儲優缺點
  • MySQL 基于本地存儲實現數據零丟失
  • 性能對比
  • 基于 Docker + Kubernetes 的實現

來分享個人理解。

回顧:計算存儲分離,本地存儲優缺點

還是從計算存儲分離說起。

計算存儲分離

先說優點:

  • 架構清晰
  • 計算資源 / 存儲資源獨立擴展
  • 提升實例密度,優化硬件利用率
  • 簡化實例切換流程:將有狀態的數據下沉到存儲層,Scheduler 調度時,無需感知計算節點的存儲介質,只需調度到滿足計算資源要求的 Node,數據庫實例啟動時,只需在分布式文件系統掛載 mapping volume 即可。可以顯著的提高數據庫實例的部署密度和計算資源利用率。

以 MySQL 為例

  • 通用性更好,同時適用于 Oracle、MySQL。

從部分用戶的上下文來看,存在如下客觀缺點:

  • 引入分布式存儲,架構復雜度加大。一旦涉及到分布式存儲的問題,DBA 無法閉環解決。
  • 分布式存儲選型:

選擇商用,有 Storage Verdor Lock In 風險。

選擇開源,大多數用戶(包括沃趣)都測試過 GlusterFS 和 Ceph,針對數據庫(Sensitive Lantency)場景,性能完全無法接受。

本地存儲

如果在意計算存儲分離架構中提到的缺點,本地存儲可以有效的打消類似顧慮,無需引入分布式存儲,避免Storage Verdor Lock In 風險,所有問題都由DBA 閉環解決,但是,需要依賴數據庫自有方案實現數據零丟失。

以 MySQL 為例

還會引入類似問題:

  • 物理容量受限于單機容量;
  • 調度更復雜,選定數據庫實例的存儲類型(比如 SSD)后,一旦該實例發生“failover”,只能調度到擁有 SSD 的物理節點,這導致調度器需要對物理節點“Physical Topology Aware”;

  • 密度難提升,這是“Physical Topology Aware”的副作用;
  • 因數據庫的不同方案差異性較大,通用性無法保證。

接下來,進入正題,看一下 MySQL 基于本地存儲如何實現數據庫零丟失。

MySQL 基于本地存儲數據零丟失

 

最常用的是基于 Replication 模型將數據復制到 MySQL Cluster 中所有成員。

MySQL Master-Slave Replication(類似 Oracle DataGuard)提供了基于 binlog 的數據庫層的復制模型,在高并發壓力下節點間同步數據速率最快,單位時間內的交易量受其他節點的影響極小,該架構可通過 vip 漂移的方式實現 “failover”。

MySQL Master-Slave Replication

但嚴格意義上來說,這是基于 binlog 的 Asynchronous Replication 模型,因此集群中所有成員存在數據不一致的可能,在“failover”時無法保證數據零丟失。

可見如果基于 Replication 模型,Synchronous Replication 是實現數據零丟失的前提。

傳統的 Synchronous Replication 一般會采用兩階段提交或分布式鎖,這會帶來如下幾個問題:

單位時間內事務能力(TPS)會跟集群成員數量成反比

增加集群成員會顯著且無法預期的增加事務響應時間

增加了集群成員數據復制的沖突和死鎖的可能性

針對以上問題 Galera Cluster 提出 Certification-based Replication 來解決傳統 Synchronous Replication 中遇到的問題,實現如下:

Deferred Update Replication 延遲更新復制

這個流程圖中,有幾個細節需要分享:

  • 將基于 binlog 改為基于 write-set,write-set 中包含修改的數據,Global Transaction ID(后面簡稱 GTID)和 Primary Key。

GTID 類似 45eec521-2f34-11e0-0800-2a36050b826b:94530586304

94530586304 為 64-bit 有符號整型,用來表示事務在序列中的位置

  • 將傳統的 Synchronous Replication 改為 Deferred Update Replication,并將整個過程大致分解成四個階段,本地階段、發送階段、驗證階段和應用階段,其中:

本地階段:樂觀執行,在事務 Commit 前,假設該 Transcation 在集群中復制時不會產生沖突。

發送階段:優化同步時間窗口,除去全局排序并獲取 GTID 為同步操作,沖突驗證和事務應用都為異步,極大的優化了復制效率。

驗證階段:只有收到該事務的所有前置事務后(不能有 “hole”),該事務和所有未執行的前置事務才能并發驗證,不然不能保證 Global Ordering,因此這里需要犧牲效率,引入一定的串行化。

需要等待事務 3

于是就有了 Galera Cluster 在 MySQL 分支中的實現 MariaDB Galera Cluster(簡稱 MGC)和 Percona Xtradb Cluster(簡稱 PXC)。

為避免“split-brain”問題,需要至少三節點組成集群,對計算資源和存儲資源的容量要求至少增加2倍,會進一步降低資源的部署密度。

越來越多的用戶也期望通過該方案實現跨 IDC 多活,那么需要在規劃階段想清楚:

IDC 和數據庫節點的拓撲架構,以保證在 1 個 IDC 出問題的情況,集群可以持續提供服務。

首先 IDC(物理或邏輯)最少需要3個,再看看數據庫節點數量分別為 3、4、5、6、7 的拓撲關系 :

  • 3 數據庫節點:

  • 4 數據庫節點:設置權重避免”split-brain” (? + ? ) + ? + ?

  • 5 數據庫節點:

6 數據庫節點:

7 數據庫節點 : 可支持兩種拓撲關系

同時,還有 MySQL Group Replication(簡稱 MGR)[1],類似 Galera Cluster:

  • 基于Corosync實現(Totem協議),插件式安裝,MySQL 官方原生插件。
  • 集群架構,支持多寫(建議單寫)
  • 允許少數節點故障,同步延遲較小,保證強一致,數據零丟失
  • 單位時間的交易量受 flow control 影響。

這里還需要提一下 Vitess:

  • 該項目由 Youtube 開源,從文檔看功能極為強大,高度產品化。
  • 作為第二個存儲類項目(***個是 Rook,有意思是存儲類而不是數據庫類)加入 CNCF,目前還處于孵化階段(incubation-level)。
  • 筆者沒有使用經驗,也不知道國內有哪些用戶,不做評論。

關于 MGR 和 Vitess 網上已有大量介紹,這里不再贅述。

性能對比

在數據零丟失的前提下,看看這幾種架構在性能上的對比:

  • MGR 5.7.17 / PXC 5.7.14-26.17
  • MGR 5.7.17 / PXC 5.7.17-29.20 / MariaDB 10.2.5 RC
  • 本地存儲 / 計算存儲分離

性能對比 1:MGR 5.7.17 / PXC 5.7.14-26.17

測試背景描述:

  • MGR 5.7.17 對比 PXC 5.7.14-26.17(基于 Galera 3實現)
  • 負載模型:OLTP Read/Write (RW)
  • durability:sync_binlog=1,innodb_flush_log_at_trx_commit=1
  • non-durability:sync_binlog=0,innodb_flush_log_at_trx_commit=2

測試數據 :

來自于 MySQL 官方[2]

測試結果:

在設置 durability 的情況下,MGR ***吞吐約是PXC 5.7.14-26.17(基于 Galera 3 實現)的3倍,優勢明顯。

以上數據來自于MySQL 官方,公平起見,再來看看 Percona 在相同負載模型下的測試數據。

性能對比 2:MGR 5.7.17 / PXC 5.7.17-29.20 / MariaDB 10.2.5 RC

測試背景描述:

  • 增加了 MariaDB 參與對比
  • PXC 升級到 5.7.17-29.20,該版本改進了MySQL write-set 復制層性能[3]。
  • 負載模型:依然使用 OLTP Read/Write (RW)
  • durability:sync_binlog=1
  • non-durability:sync_binlog=0

測試數據:

設置 durability,數據來自于 Percona[3]

設置 non-durability,數據來自于 Percona[3]

測試結果:

在負載模型相同的情況下(durability 和 non-durability)PXC 5.7.17-29.20 性能與 MGR 5.7.17 不分伯仲。如果使用 PXC,推薦使用 5.7.17-29.20 或以上版本。

性能對比3:本地存儲 / 計算存儲分離

為了對比本地存儲和計算存儲分離,專門使用 MGR + 本地存儲架構和 基于分布式存儲的計算存儲分離架構做性能對比。

測試結果:

在負載模型相同的情況下,前者比后者 OLTP 下降32.12%,Select 下降5.44%,Update 下降 24.18%,Insert 下降 58.18%,Delete 下降 11.44%。

基于 Docker + Kubernetes 的實現

Docker + Kubernetes + MGR / Galera Cluster

在 GitHub 上,可以看到基于 Docker + Kuberetes + PXC 的 demo[4]。需要說明的是,這僅僅是個玩具,離部署到生產環境還有極大差距。

我們已有計劃實現滿足生產環境的:

  • Docker + Kubernetes + PXC
  • Docker + Kubernetes + MGC
  • Docker + Kubernetes + MGR

并集成到 QFusion 來支持計算存儲分離架構和本地存儲架構混合部署,架構示意圖如下:

目前原型驗證階段已通過,預計2018年Q2發布。

Docker + Kubernetes + Vitess

在 GitHub 上,同樣可以看到基于 Docker + Kubernetes 的 demo[5],有興趣的同學可以玩一下。

性能只是選型需要考量的一部分,要使用到生產環境或者產品化,實際要考量的因素更多:

  • 運維:部署、備份
  • 彈性:計算存儲擴容,集群擴容
  • 高可用:比如 “failover” 的細微差別對業務的影響
  • 容錯:比如網絡對集群的影響,尤其是在網絡抖動或有明顯延時的情況下
  • 社區活躍度
  • ……

以現有軟硬件的開放程度,各種架構或者產品狹義上的“黑科技”并不多,常常看到的:『xxx 比 xxx 快 xxx 倍』嚴格來說應該是『xxx 比 xxx 在特定場景 xxx 下快 xxx 倍』。

并不存在“一槍斃命”的“Silver Bullet”,只是 Docker + Kubernetes 為混合部署帶來可能。哪種更受青睞,拭目以待,用戶會是***的老師。

責任編輯:武曉燕 來源: Docker
相關推薦

2020-06-23 08:15:13

計算存儲分離

2022-05-23 09:18:55

RocketMQ存儲中間件

2018-05-25 09:31:00

數據存儲高可用

2020-11-25 10:55:56

云計算

2013-06-21 10:33:02

虛擬化應用存儲虛擬化

2018-06-05 08:58:38

Docker存儲容器

2021-05-27 09:22:41

云計算數據科技

2021-06-03 14:34:15

數據倉庫計算存儲分離

2019-02-14 13:19:40

容器存儲CSI

2017-09-21 08:16:33

數據存儲環境

2022-08-22 07:58:14

容器云存儲開發

2012-07-04 13:27:48

云計算存儲虛擬化

2023-05-08 15:21:05

JavaScripWeb 存儲數據存儲

2019-04-15 15:22:14

塊存儲文件存儲對象存儲

2020-12-08 05:47:59

云計算容器數據存儲

2016-01-05 16:23:22

存儲設備外置存儲空間

2011-12-02 09:57:50

存儲虛擬化存儲虛擬化

2011-12-05 14:07:17

虛擬化本地存儲桌面虛擬化

2011-12-12 10:02:20

虛擬化本地存儲SANsymphony

2020-05-31 18:54:46

計算存儲邊緣存儲存儲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91久久电影 | 久久久一二三 | 中文字幕 在线观看 | 国产亚洲精品久久久久久豆腐 | 国产性生活一级片 | 二区中文字幕 | 亚洲视频第一页 | 偷拍第一页 | 久久精品国产久精国产 | av毛片在线免费观看 | 精品九九 | 亚洲视频在线一区 | 亚洲国产一区二区三区在线观看 | 亚洲第一在线视频 | a级免费视频 | 天天干天天爽 | 在线精品亚洲欧美日韩国产 | 久久久91精品国产一区二区三区 | 亚洲深夜福利 | 亚洲精品久久视频 | 2020天天操| 97超碰免费 | 亚洲成人精品免费 | 久久久久久久一区 | 久久久噜噜噜久久中文字幕色伊伊 | 福利视频一区二区 | 欧美精品一区二区在线观看 | 亚洲日本欧美日韩高观看 | 丝袜美腿一区二区三区动态图 | 日韩欧美精品一区 | 欧美激情精品久久久久 | 人人射人人插 | 国产福利在线播放麻豆 | 精品成人佐山爱一区二区 | 香蕉久久网 | 精品欧美一区二区精品久久久 | 秋霞在线一区 | 国产精品久久久久久久久久久久久 | av在线播放不卡 | 国产精品视频在线观看 | 国产一二三区电影 |