如何在Sharded Mongo DB上配置Meteor Oplog Tailing



当我们在Meteor上开发贪婪的实时监控应用程序时,我们已经达到了单个MongoDB实例的极限。

我们现在将DB迁移到一个有2个碎片的碎片集群中,但我们可能会扩展到6个碎片。(我有2个带有28台服务器的BladeE机箱)

我们如何在启用分片的mongo-db集群上配置Meteor Oplog Tailing

谢谢,

现在有一个好消息:)您可以通过Meteor轻松使用分片MongoDB数据库,只需调整一下即可

尽管Meteor核心开发团队还没有在他们的路线图中添加对分片的Oplog Tailing支持,但解决方法非常简单。你只需添加这两个Meteor包:cultofcoders:redis-oplogdisable-oplog,添加另一个Redis服务器,稍微调整一下代码,就可以开始了。

Oplog Tailing之所以不能使用分片MongoDB数据库,只是因为核心开发团队还没有计划支持它。事实上,现在可以添加对分片数据库的支持了。如果你添加了一堆新记录,并用可定制的游标从所有碎片中读取Oplog,你会注意到MognoDB平衡器会将数据从shard01移动到shard02,其中记录id 0001shard01中删除并添加到shard02中。这种情况似乎让Meteor感到困惑,因为它不知道记录实际上是由用户还是由MongoDB平衡器删除/添加的。然而,有一种方法可以知道用户或MongoDB平衡器是否删除/添加了数据,因为我们可以通过fromMigrate标志进行区分——在MongoDB官方网站博客上了解更多信息——所以我们现在可以做的是等待核心开发团队的更新,或者用一些技巧解决问题。

到目前为止,我发现的最有前途的解决方案是名为cultofcoders:redis-oplog的Meteor软件包。它是开源的,可以在Github上获得(请查看他们的存储库以获取完整的文档。它非常容易使用)。这个包背后的想法是使用另一个Redis服务器作为pubsub系统——它不存储任何数据。它只适用于pubsub,而不是严重依赖Oplog的Meteor。这样,我们就不必担心Meteor还不支持的分片数据库的Oplog了。CCD_ 16是成熟的,已被许多大公司用于生产。它与Meteor完全兼容,您不必更改Meteor的使用方式。但是,在更新集合的数据时,为了发布对Redis的更改,您必须对代码进行一些调整,然后包cultofcoders:redis-oplog将处理其余内容。

Meteor似乎还不支持大于1个碎片的分片mongoDB设置:https://forums.meteor.com/t/mongodb-sharding-and-livequery/3712

最新更新