MongoDB自學日記3 架構及HA

2022-04-08 21:18:42 字數 2089 閱讀 5936

在對mongodb的操作有了一定基礎後,終於可以扯扯ha和架構這兩個高大上的概念了。在這之前當然還得弄清楚mongodb的key feature:sharding。

1. sharding

shard從邏輯上來說就是整個資料的乙個子集,從物理來說就是管理這一子集的伺服器。乙個分片可以包含多台伺服器。若乙個分片包含多台伺服器則每台伺服器都有乙份完全相同的資料子集副本(replica set)。

分片是mongodb強調的乙個feature。分片的目的就在於完成自動化集群運維。mongodb cluster需要三種角色,sharding server /config server /route。

2. ha

ha是個大話題,從乙個簡單系統的部署為點開始談談吧。

如圖所示,架構上乙個mongodb集群需要上述三種角色,這三種角色分別對應三個程序:mongos,shardsvr mongod和config mongod。

step1:啟動shard server例項1與例項2

>mongod   --shardsvr  --port  20000  --dbpath=/data/shared/s0   --fork   --logpath=/data/shard/log/s0.log   --directoryperdb

>mongod   --shardsvr  --port  20001  --dbpath=/data/shared/s1   --fork   --logpath=/data/shard/log/s1.log   --directoryperdb

step2:啟動config server例項

>mongod   --configsvr  --port  30000  --dbpath=/data/shared/config   --fork   --logpath=/data/shard/log/config.log   --directoryperdb

step3:啟動route server例項

>mongos --port 40000 --configdb  localhost:30000  --fork  --logpath=/data/shared/log/route.log  --chunksize 64

其中chunksize指定chunk大小,單位為mb,預設大小為200mb。

mongodb auto-sharding解決了海量儲存和動態擴容問題,然而以上離真正的生產環境ha方案還差的遠。下面更進一步,搭建replica sets + sharding解決方案,設計案例。

case1:

shard:使用replica sets,確保每個資料節點都具有備份、自動容錯轉移、自動恢復能力。

config server:使用3個配置伺服器,確保元資料完整性,存放key的對應關係。

route server:使用方法3個路由程序,實現負載均衡,提高客戶端的接入效能及併發度。

搭建上述集群完畢後,可以加入memcached伺服器,將高訪問量的資料快取在記憶體中,避免高頻度的磁碟i/o,從而進一步提公升效能。

表1 小型使用案例舉例 

host

ip 服務及埠分配

server a

192.168.3.231

mongod shard1_1: 27017

mongod shard2_1: 27018

mongod config1: 20000

mongos1: 30000

server b

192.168.3.232

mongod shard1_2: 27017

mongod shard2_2: 27018

mongod config2: 20000

mongos2: 30000

server c

192.168.3.233

mongod shard1_3: 27017

mongod shard2_3: 27018

mongod config3: 20000

mongos3: 30000

當然實際使用環境中的集群系統肯定更複雜,ha不是乙個簡單的話題,更包括容災備份等問題,本人也沒有什麼實踐經驗,因此也只能說說一些理論的東西,希望與大家共同交流學習。

Dubbo入門 3 架構原理

出處 dubbo入門 3 架構原理 在之前的兩篇文章中,我們了解了有關分布式服務的基本概念和簡單的使用。現在來了解一下dubbo是如何提供這些功能的 如何運作的,以及整個框架的層次結構。本文參考自dubbo架構設計詳解及dubbo官方使用者手冊 首先要了解dubbo提供的三大核心功能 通訊提供多種對...

Android OkHttp3架構分析

在okhttp3中,其靈活性很大程度上體現在,可以intercept其任意乙個環節,而這個優勢便是okhttp3整個請求響應架構體系的精髓所在 okhttp 中的對所有的任務採用namedrunnable,約束每個執行單元給出對應的業務名稱,以便於執行緒維護。1.非同步請求執行緒池 okhttp d...

ARM GIC(四) gicv3架構基礎

gicv3架構是gicv2架構的公升級版,增加了很多東西。變化在於以下 對於cpu inte ce的暫存器,增加系統暫存器訪問方式 一 gicv3結構 下圖是gicv3的架構。包含了以下的元件 其中,cpu inte ce是實現在core內部的,distributor,redistributor,i...