淺嘗key-value資料庫(三)——MongoDB的分布式

來源:互聯網
上載者:User

標籤:

淺嘗key-value資料庫(三)——MongoDB的分布式

測試了單機MongoDB的隨機讀和寫入效能,這一節來講一講MongoDB的分布式。

MongoDB的分布式分成兩種,一種是Replication,一種是Sharding。我們主要來看一下Sharding。

先貼一張結構:

 

MongoDB Auto-Sharding的配置非常簡單,在不同的機器分別開啟shard, config server, mongos的進程即可。(假設config serevr的IP為192.168.1.11)

mongod --shardsvr --dbpath /var/db/mongo_shade --port 10000 --fork --logpath /var/log/mongodb.log --logappend --nohttpinterface
mongod --configsvr --dbpath /var/db/mongo_config/ --port 20000 --fork --logpath /var/log/mongodb_config.log --logappend --nohttpinterface
mongos --configdb 192.168.1.11:20000 --fork --logpath /var/log/mongodb_shard.log --logappend

這裡需要注意的是,如果你的多台shard是打算用ip串連,那麼mongos中也要用ip串連config server,如果是用機器名,則都要用機器名。不然會報錯。

之後使用用戶端串連到mongos服務上(預設還是27017連接埠),進行分布式的設定(假設兩台shard的IP分別為192.168.1.12和192.168.1.13,共用資料庫a的collection b)

./mongo
MongoDB shell version: 1.6.0
connecting to: test
> use admin
switched to db admin
> db.runCommand( { addshard : "192.168.1.12:10000" } )
{ "shardadded" : "shard0000", "ok" : 1 }
> db.runCommand( { addshard : "192.168.1.13:10000" } )
{ "shardadded" : "shard0001", "ok" : 1 }
> db.runCommand( { enablesharding : "a" } )
{"ok" : 1}
> db.runCommand( { shardcollection : "a.b", key : {_id : 1} } )
{"ok" : 1}

之後用db.runCommand({ listShards : 1}) 或db.printShardingStatus()就可以看到分布式的狀態了。

 

效能測試下來發現速度和未使用分布式的時候速度差不多,插入的資料以chunk_size為單位,插入到某台shade server。有一個單獨的Balancer線程比較各個shade server的chunk數,將他們分布平均。這樣的演算法顯然不會提高寫入效能。

 

在測試的過程中發現兩個bug。一是當某台shade server斷掉再恢複時,Balancer線程運行不正常,也就是說之後所有資料都會往一台上插。。-.- 很挫的bug吧。還有一個是當插入資料部採用safe=True模式(見Python的用戶端文檔)時,一定時間後某一台server會因Out of Memory被系統kill掉。。不知這兩個bug何時能fix掉。

淺嘗key-value資料庫(三)——MongoDB的分布式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.