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

  • 相关阅读:
    SQLite无法使用drop column删除表字段解决办法
    Selenium之自动发送163邮件(转自https://www.cnblogs.com/zhang-da/p/12230415.html)
    frp 内网穿透
    smart.supor.com
    python colorama模块
    nohup和&后台运行,进程查看及终止
    Beef搭建并通过Nginx绑定域名
    How to Install Ruby on CentOS/RHEL 7/6
    Linux环境下安装python3
    启用IIS Express SSL(Https)的注意事项
  • 原文地址:https://www.cnblogs.com/timssd/p/5448014.html
Copyright © 2011-2022 走看看