1. MongoDB常見的部署架構
* 單機版
* 復制集
* 分片集群
2. 為什么要使用分片集群
* 數據容量日益增大,訪問性能日漸下降,怎么破?
* 新品上線異常火爆,如何支撐更多用戶並發?
* 單庫已有10TB數據,恢復需要1-2天,如何加速?
* 地理分布數據
3. 分片如何解決問題?
銀行交易表單內10億筆資料超負荷運轉,交易號 0-1,000,000,000
把數據分成兩兩半,放到兩個庫里。
交易號:0-500,000,000
交易號:500,000,001-1,000,000,000
mongodb 最多可以分成1024片
4. 完整的分片集群
5. 分片集群解剖:路由節點mongos
* 提供集群單一入口
* 轉發應用端請求
* 選擇合適數據節點進行讀寫
* 合並多個數據節點的返回
* 無狀態
* 建議至少兩個
6. 分片集群解剖:配置節點mongod
* 提供集群元數據存儲
* 分片數據分布的映射
普通復制集架構
| Lower | Upper | Shard |
|-------|-------|-------|
| 0 | 1000 | Shard0 |
| 1001 | 2000 | Shard1 |
7. 分片集群解剖:數據節點mongod
* 以復制集為單位
* 橫向擴展
* 最大1024分片
* 分片之間數據不重復
* 所有分片在一起才可以完整工作
8. MongoDB分片集群特點
* 應用全透明,無特殊處理
* 數據自動均衡
* 動態擴容,無須下線
* 提供三種分片方式
9. 分片集群數據分布方式
* 基於范圍
* 基於Hash
* 基於zone / tag
10. 小結
* 分盤集群可以有效解決性能瓶頸及系統擴容問題
* 分片額外消耗較多,管理復雜,盡量不要分片