在對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...