iT邦幫忙

2019 iT 邦幫忙鐵人賽

0
Software Development

用js成為老闆心中的全端工程師系列 第 31

[資料庫]使用 Docker 構築不同 MongoDB 架構 (一)

https://ithelp.ithome.com.tw/upload/images/20191010/20110371YJdXJGcSlV.png

目標

你可以學習到:

  • 使用 docker 建立常見的 MongoDB 架構
  • 如何存取 MongoDB

為什麼我們要用 Docker?

MongoDB 可以安裝在 上Linux/macOS/Windows,它提供水平擴展 (Sharding),垂直擴展 (Replication) 的強大機制。 然而,要建置 MongoDB 叢集會有很多工作要做,像是啟動很多台 MongoDB 的服務、組態設定,工作十份繁複。

再者,你也可能遭遇實體主幾不夠而不能啟動太多 MongoDB(若一台只啟動一個 MongoDB),或者一台機器太強大,有高核心數高記憶本,想要榨乾它的效能。

基於以上理由, Docker 容器化技術為構築 MongoDB 叢集提供很好的解決方案。 Docker Compose File 提供述描執行服務的組態設定,以達到 code as infrastructure 的目地,你可以容易在任何 docker 環境下重現你的 MongoDB 叢集。

若你想要快速的體驗使用 docker 建立 MongoDB 可以見我在 iT 邦的文章 用js成為老闆心中的全端工程師:Day 15 - 二周目 - 用 Docker 玩轉 MongoDB

因為本篇的目地是「用 Docker 建立 MongoDB 叢集」,所以不會涉汲太多 Docker 說明。若需要幫助,可以見以下的 用js成為老闆心中的全端工程師 文章:
Day 26 - 三周目 - Docker 基本使用:看完就會架 docker 化的服務
Day 29- 三周目 - Docker Compose:一次管理多個容器
Day 30- 三周目 - Docker network 暨完賽回顧

MongoDB 架構(Architecture)

MongoDB 可能有以下架構:

  1. Standalone:

    • 建立難易度:低
    • 特色:單一台 MongoDB 服務,只有一個存取資料庫
    • 用途:獨立使用或用於維護 Replica Set/Sharded Cluster 的單一 node
  2. Replica Set

    • 建立難易度:中
    • 特色:資料在 Replica Set 中會有副本資料
    • 用途:
      • 需要 High availability (HA) 的環境
      • 依硬體效能調整副本策略,如:你有較快/較大的硬碟
      • 不影響 Primary,使用 Read Preference 讀取較近或快的副本
        https://ithelp.ithome.com.tw/upload/images/20191010/201103715vQHn0uRnd.jpg
  3. Sharded Cluster

    • 建立難易度:高
    • 特色:資料遍佈在不同的 shard,每個 shard/config servers 都是 Replica Set,所以同時有 HA 的能力
    • 用途:
      • 依照 Shard Keys 分散式地存取資料
      • 依硬體效能調整分散策略,如:你有較強/多核的CPU,常用資料可以放在讀寫快的主機
        https://ithelp.ithome.com.tw/upload/images/20191010/20110371ille9t8IRR.jpg

當 MongoDB 變成叢集就會衍生出以下問題:

  1. 資料怎麼分散,分散的略策如何影響存取效能? -> Shard Keys 資料如何畫分 chunkZones 指定資料存放位置、Balancer 平衡 Shard 中的 chunk 數量
  2. 邏輯上怎樣才算寫入資料庫? -> Write Concern 資料寫入的策略
  3. 邏輯上怎樣才算讀出真正的資料? -> Read Concern 資料讀取的策略
  4. 怎麼決定誰是 Primary ? -> Replica Set Elections 推選投票誰當 Primary
  5. 叢集如何管理? -> Replica Set MaintenanceSharded Cluster Administration
    ...等。

因為本系列只專注建立叢集,不會涉及其它議題,有興趣的人可以自行學習。

試用 MongoDB Atlas

若你不想自己架設 MongoDB,可以考慮試用看看 MongoDB Atlas。它提供 DBaaS,幫你架設在 AWS, Azure 或 GCP。目前有 512 MB 免費空間且現送 $200 優惠券,代碼為 MAXIME200。見:Quick Start: Getting Your Free MongoDB Atlas Cluster

你可以在以下地方輸入優惠券代碼
https://ithelp.ithome.com.tw/upload/images/20191010/20110371EJWbwA4C4f.jpg
https://ithelp.ithome.com.tw/upload/images/20191010/20110371LWDwidu7u3.jpg


上一篇
Day 30- 三周目 - Docker network 暨完賽回顧
系列文
用js成為老闆心中的全端工程師31

1 則留言

0
kaikaitaiwan
iT邦新手 5 級 ‧ 2019-10-30 05:15:55

哇 還有在更新! 這系列受益良多,十分感謝

謝謝你的回應/images/emoticon/emoticon12.gif

本來想要繼續此系列文,但已經找不到"此系列"的發文按鈕/images/emoticon/emoticon06.gif

未來只能當一般發文或發在 Medium

我要留言

立即登入留言