天天看點

MongoDB 最佳實踐二

一、阿裡雲 MongoDB 介紹

阿裡雲 MongoDB 雲資料庫特性:

  • 開箱即⽤(免除運維煩惱)
  • 彈性伸縮 (快速應對業務變化)
  • ⾼可⽤ (業務持續、資料可靠)
  • 持續備份 (任意時間點備份恢複)
  • 安全加強 (SSL + TDE 加密)
  • 審計⽇志 (通路記錄、有據可查)
  • 秒級監控 (性能資料、⼀⽬了然)
  • CloudDBA (⾃動診斷、智能優化)

阿裡雲 MongoDB 雲資料庫技術優勢:

  • ⾼性價⽐:對于短連結鑒權性能提升 10 倍,秒級監控、全鍊路安全、CloudDBA。
  • 運維效率:支援⾼危指令審計、快速定位問題,預設背景建索引、避免影響線上業務, 支援實體熱備份+單庫恢複、備份恢複時間縮短⼀半。
  • ⽣态⼯具:開源 MongoShake 同步⼯具、⽀持異地多活,阿⾥雲⽣态打通 Dataworks、XPack Spark 等服務。
  • 原⼚戰略合作:我們與 MongoDB 原廠進行了戰略合作,可以在全球範圍内領先使用 MongoDB 最新版本,同時與原廠進行了研發合作。
  • 需求定制:可以針對客戶的合理需求進行定制開發,滿足客戶需要。
  • 專家服務:由業内頂尖的資料庫專家提供服務,結合業務場景,提供行業解決方案,業 務優化建議。

阿裡雲&MongoDB 公司戰略合作

阿裡雲與 MongoDB 公司在 2019 年下半年達成戰略合作,阿裡雲也了榮膺 MongoDB 公司『2019 全球最佳 ISV 合作夥伴』獎。

基于合作,阿裡雲可以在全球領先使用最新版本,比如目前的 4.4、4.2、4.0 的最新 版本,并且阿裡雲第一時間合入官方優化和 Bug Fix。同時不定期與原廠進行産品技術交 流。

在研發合作方面,最近釋出的 MongoDB 4.4 上,我們與 MongoDB 公司合作共建 Hidden Indexes 特性。

MongoDB 最佳實踐二

二、阿裡雲 MongoDB 産品特性

MongoDB 上雲/混合雲/多活

使用雲服務首先要解決上雲的問題,将自建服務搬到雲上,另外在混合雲裡也可能需要 對多個環境的資料進行同步,或者是在不同架構形态之間進行轉換。針對這些需求,可以優 先使用阿裡雲 DTS 服務來支援不同架構形态的轉換、資料遷移、資料同步。另外也可以使 用阿裡雲自研并開源的 MongoShake⼯具來解決這些問題。

MongoDB 最佳實踐二

MongoDB 4.x 版本新增特性

從 MongoDB 4.0 版本以來,新增了數十項功能特性,比如 4.0 版本,增加了副本集 事務,更快的 shard 間資料遷移、這個提升了 40%以上。

MongoDB 4.2 版本,增加跨 Shard 分布式事務、字段級加密、全局按時間點讀、通 配符索引、支援 10 倍的快速降級、存儲節點的 watchdog 檢測,比如檢測 I/O Hang 的 場景、物化視圖、可重試的讀寫等特性。

MongoDB 4.4 版本,我們與官方合作共建了 Hidden Index 特性,可以臨時禁用索 引,不需要删除、避免産生過大消耗。支援全局按時間點讀、以及對沖讀功能(時向多個節 點發送請求,把最快的響應發送給用戶端)。4.4 也支援了複合 Hash Shard Key,在 4. 4 以前,Hash Shard Key 隻能支援單個字段。另外還支援可恢複的全量同步、并發建索 引等。

MongoDB 最佳實踐二

阿⾥雲 MongoDB 産品形态及選型

阿裡雲 MongoDB 産品主要有四種形态:On ECS 雲盤、本地盤、Serverless、單 節點,生産環境建議采用 On ECS 雲盤、本地盤,測試環境也可以采用 Serverless、單 節點。

在阿裡雲 MongoDB 4.4 版本,存儲是基于雲盤的,支援雲盤快照備份,直接基于快 照時間點進行增量同步,擴容升規格的資料同步時間大大縮減,解決了本地盤升規格的資料 同步時間長的痛點。

MongoDB 最佳實踐二

MongoDB 全量備份⽅法

作為資料庫系統,資料可靠性很重要。阿裡雲 MongoDB 支援 3 種資料備份方式:

  • 邏輯備份:通過周遊所有集合,把文檔逐個讀出。比如 MongoDump 就是通過邏輯備 份的方式進行備份。
  • 實體備份:直接拷貝實體資料檔案進行備份。
  • 快照備份:依賴于 IAAS 層提供的雲盤快照能力進行資料備份。
MongoDB 最佳實踐二

MongoDB 全量邏輯備份 VS 實體備份 VS 快照備份的差別如下圖所示:

MongoDB 最佳實踐二

邏輯備份 :

相對于實體備份和快照備份,不管是備份效率、成功率、恢複效率都比較低。更重要的 是備份期間還會直接與業務争搶資源,是以阿裡雲 MongoDB 本地盤形态預設采用的是物 理備份。

實體備份 :

  • 社群版 MongoDB 實體備份
    • 備份過程需要對 FsyncLock 加全局寫鎖,不是『熱』備份。
  • 其他實體熱備份方案:Percona MongoDB
    • 備份過程磁盤空間增長迅猛。
  • 阿裡雲 MongoDB 實體備份
    • 熱備份:基于 WiredTiger 原生熱備份方法進行改進,備份過程無需加鎖,同時解 決磁盤空間增長問題;

單庫恢複:保持一份全執行個體備份基礎上支援單庫恢複,極大減少恢複所需下載下傳資料量, 進而縮短恢複時間。

分片叢集 :

  • 分片叢集備份難點
    • 外部一緻性:存在外部寫入時各節點如何保持一緻。當多個 Shard 上同時有寫入 時,如何在每個 Shard 上确定一個全局一緻的備份點,使得備份出來的資料滿足 邏輯時鐘上的先後順序。
    • 内部一緻性:存在内部資料遷移時各節點如何保持一緻。多個 Shard 之間如果存 在資料遷移(比如 MoveChunk),如何保證備份的正确性,不會出現資料少備份了 的情況
  • 阿裡雲 MongoDB 分片叢集備份
    • 外部一緻性:各節點恢複到同一時間點;
    • 内部一緻性:通過審計日志分析内部遷移,規避恢複到存在内部資料遷移的時間段。

如下圖所示:

MongoDB 最佳實踐二

阿⾥雲 MongoDB 秒級監控

在執行個體監控上,阿裡雲 MongoDB 支援将監控采集粒度設定為秒級,能夠更加精準的 反映資料庫的性能峰值、業務通路的變化情況,以及資源的使用情況,為業務提供參考。

MongoDB 最佳實踐二

阿⾥雲 MongoDB CloudDBA:會話管理

另外阿裡雲 MongoDB 還有一個 CloudDBA 的附加功能子產品。CloudDBA 可以管理 MongoDB 會話,對執行時間長的慢 SQL 語句、全表掃描操作,可以通過會話管理,主動 進行終止,避免慢 SQL 語句長時間執行影響業務。

MongoDB 最佳實踐二

阿⾥雲 MongoDB CloudDBA:索引推薦

CloudDBA 還提供了基于代價評估的索引推薦。代價評估是根據實際執行的操作的統 計資訊和代價模型(比如 CPU 與 IO 的代價換算)計算每個執行計劃的成本,從中挑選出成 本最小的執行計劃。

規則評估是根據經驗以及設定好的規則來選擇執行計劃,通常它是比較簡單的,但并不 一定是最優的執行計劃。

是以基于代價評估通常比基于規則評估更加準确。CloudDBA 的自動索引推薦,在阿 裡巴巴内部經過了三年以上的生産環境驗證,推薦成功率達 98%以上。

MongoDB 最佳實踐二

阿⾥雲 MongoDB 全鍊路安全能力

阿裡雲 MongoDB 提供了完整的全鍊路安全能力,從先後順序上可以分為事前、事中、 事後三個方面:

  • 事前 指對資料庫進行操作前,主要有:專有網絡隔離、白名單控制、賬号密碼鑒權、 安全環境免密,這些措施來保證。
  • 事中 指對資料庫進行操作時,通過通路鍊路加密、資料落盤加密、備份⽂件加密,這 些措施來保證。
  • 事後 指對資料庫操作完成之後,通過全量操作⽇志審計,來知道是誰在什麼時間點執 行了什麼操作。
MongoDB 最佳實踐二

三、MongoDB 行業應用案例

MongoDB ⼴泛應⽤于遊戲⾏業

遊戲業務的特點是開發速度快,性能要求高,易于部署,資料模型經常發生變更,業務 規模變化快,需要快速擴充。MongoDB 廣泛的應用于遊戲行業,以網易遊戲為例,網易 遊戲在 10 個 Region(地域)、超過 45 個項目上,使用的 MongoDB 副本集超過 60 個、 分片叢集超過 120 個。

MongoDB 最佳實踐二

遊戲⾏業⼀站式解決⽅案

針對遊戲行業 MongoDB 提供了一站式解決方案:

  • 多變需求:MongoDB 是自由的 Schema Free 和文檔模型的完美比對。
  • 遊戲回檔:支援把資料恢複到任意時間點,同時支援單庫恢複,進一步減少資料恢複的 時間。
  • 遊戲滾服:基于備份集/備份時間點建立新執行個體。
  • 鍊路安全:VPC + SSL + ⽩名單 + TDE + 審計。
  • 營運分析: 采用 MongoDB 的聚合管道 Aggregation Pipeline、Spark Connector 滿足業務需求。
MongoDB 最佳實踐二

MongoDB ⼴泛應⽤于汽⻋⾏業

MongoDB 目前被大量汽車企業作為車聯網平台的标準元件。汽車行業主要的特性是 資料量大、資料結構靈活,要求分析能力強和⾼性能。常見的應用場景包括⻋聯⽹資料存儲、 車輛監控與預測、車輛狀态的仿真。

這是某大型車企通過 MongoDB 來解決高并發和大量資料的實時通路的案例。車聯網 資料通過終端傳回資料中心之後,需要進行實時解析和使用。資料量大約每秒會達到 5 萬 行,年累計 2000 億左右。

該案例的難點在于不僅要實作在億級記錄中靈活的查詢和支援毫秒級的傳回,還需要實 現每秒 2 萬行記錄寫入、每 5 秒 20 萬行記錄的随機删除能力,經過驗證 MongoDB 充分 勝任。

MongoDB 最佳實踐二

除此之外,MongoDB 也在物聯網、線上教育、金融行業廣泛應用,也有對應的解決 方案和案例,在此就不再一一贅述了。

快速掌握MongoDB核心技術幹貨目錄

電子書下載下傳:《玩轉MongoDB從入門到實戰》 https://developer.aliyun.com/article/780915
走進 MongoDB  https://developer.aliyun.com/article/781079
MongoDB聚合架構 https://developer.aliyun.com/article/781095
複制集使用及原理介紹  https://developer.aliyun.com/article/781137
分片叢集使用及原理介紹  https://developer.aliyun.com/article/781104
ChangeStreams 使用及原理 https://developer.aliyun.com/article/781107
事務功能使用及原理介紹 https://developer.aliyun.com/article/781111
MongoDB最佳實踐一 https://developer.aliyun.com/article/781139
MongoDB最佳實踐二  https://developer.aliyun.com/article/781141