美文网首页我爱编程
Test MongoDB Oplog Tailing

Test MongoDB Oplog Tailing

作者: xqm_michael | 来源:发表于2016-02-02 21:55 被阅读285次

    外文参考链接:


    http://blog.mongolab.com/2014/07/tutorial-scaling-meteor-with-mongodb-oplog-tailing/

    在meteor 0.7.2的版本之前是采用poll and diff的方式来实现实时数据更新的,此种方法并没有真正达到实时更新,会有时间延迟(我测试时为每秒写入一条数据,但是meteor通过observechanges去监听游标拿到的数据并没有每一次做一次更新而是没10秒钟通过poll and diff的方式到数据库去做diff比较,然后跟新数据,也就是说10秒钟更新一次数据)。

    接下来讲讲如何在本地测试oplog

    1、下载源码

    案例源码:https://github.com/Micjoyce/meteor-oplog-tailing-example

    2、编译bundle

    进入meteor-oplog-tailing-example目录:

    meteor bundle ./meteor-oplog-tailing-example.tar.gz

    tar xvfz meteor-oplog-tailing-example.tar.gz

    3、运行程序

    参考此篇文章,如何在centos上部署meteor应用

    4、配置MongoDB Replica Set

    参考下面文章

    一分钟搭建mongodb架构Replica Set&Sharding—ttlsa教程系列之mongodb(七)

    其中需要注意在此步骤需要注意一下问题

    运行mongo --nodb时需要最好替换为运行sudo mongo --nodb取得管理员权限,不然运行 replicaSet.startSet() 会出现如下错误

    Error: boost::filesystem::remove: Permission denied: "/data/db/testReplSet-0/_tmp"

    at Function.MongoRunner.runMongod (src/mongo/shell/servers.js:589:13)

    at ReplSetTest.start (src/mongo/shell/replsettest.js:689:44)

    at ReplSetTest.startSet (src/mongo/shell/replsettest.js:258:21)

    at (shell):1:12 at src/mongo/shell/servers.js:589

    添加一个对local有读权限的用户

    mongo localhost:30000/admin

    cluster:PRIMARY> db.createUser({user: "oplogger", pwd: "PasswordForOplogger", roles: [{role: "read", db: "local"}]})

    具体参考meteor官方文档Oplog Observe Driver

    5、再次运行程序

    配置环境

    export  PORT=4000

    export  ROOT_URL=http://localhost

    export MONGO_URL=mongodb://localhost:30000/test

    export MONGO_OPLOG_URL=mongodb://oplogger:PasswordForOplogger@localhost:30000,localhost:30001,localhost:30002/local?authSource=admin

    运行程序(可以通过forever, pm2来运行)

    对比图如下

    可以输入一些数据,然后通过robomongo连接到数据库中,删除一些数据看页面的数据是否同时更新。(经测试立即同步)

    unset MONGO_OPLOG_URL然后运行程序在此输入一些数据,继续通过robomongo做删除动作看是否同时更行。(会存在3-5s左右的延迟)

    部署环境中其与测试环境中差异并不是很大,只不过在部署过程总需要注意如何配置MongoDB Replica Set,具体部署及其问题可参考

    MongoDB副本集故障测试和解决方案

    当需要使用多个数据库时需要注意在创建数据库连接中需要配置oplog mongodb数据库

    具体见:Stack Overflow Questions Jobs Tags Users Badges Ask Question Using Multiple Mongodb Databases with Meteor.js

    相关文章

      网友评论

        本文标题:Test MongoDB Oplog Tailing

        本文链接:https://www.haomeiwen.com/subject/gcfekttx.html