zoukankan      html  css  js  c++  java
  • 浅尝key-value数据库(三)——MongoDB的分布式

    浅尝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掉。

  • 相关阅读:
    1059. Prime Factors (25)
    mybatis中resultType和resultMap的区别
    Spring Boot中使用Swagger2构建强大的RESTful API文档
    ES6之6种遍历对象属性的方法
    QQ授权登录
    nodejs爬虫入门
    nrm -- NPM registry 管理工具(附带测速功能)
    Sublime Text 3 使用MarkDown编写带预览的文本
    js中字符串函数indexOf与search的区别
    linux基础入门
  • 原文地址:https://www.cnblogs.com/timssd/p/5448014.html
Copyright © 2011-2022 走看看