当我们在Meteor上开发一个贪婪的实时监控应用程序时,我们达到了单个MongoDB实例的极限。
我们暂时将数据库迁移到带有2个分片的分片群集,但我们最多可以扩展到6个分片。 (我有2台BladeE机箱,28台服务器)
我们如何在启用了分片的mongo数据库群集上配置Meteor Oplog Tailing?
谢谢,
答案 0 :(得分:1)
现在有一个好消息:)你可以通过一些调整轻松地将分片的MongoDB数据库与Meteor一起使用
虽然Meteor核心开发团队尚未将分片的Oplog Tailing支持添加到their RoadMap,但解决方法非常简单。你只需添加这两个Meteor软件包:cultofcoders:redis-oplog
和disable-oplog
,添加另一个Redis
服务器,调整一下你的代码,你就可以了。
Oplog Tailing不支持分片MongoDB数据库的原因仅仅是因为核心开发团队还没有计划支持它。实际上,现在可以添加对分片数据库的支持。如果添加一堆新记录并使用所有分片中的tailable游标读取Oplog,您会注意到MognoDB均衡器会将数据从shard01
移动到shard02
,其中记录标识为{{1已从0001
移除并添加到shard01
。这种情况似乎让Meteor感到困惑,因为它不知道用户或MongoDB平衡器是否实际删除/添加了记录。但是有一种方法可以知道用户或MongoDB平衡器是否删除/添加了数据,因为我们可以通过shard02
标记来区分 - 在MongoDB official site blog阅读更多相关内容 - 所以我们现在要做的就是等待从核心开发团队获得更新或使用一些技巧进行处理。
到目前为止,我发现的最有希望的解决方法是称为fromMigrate
的Meteor包。它是开源的,可在Github上获得(请查看他们的存储库以获取完整的文档。它非常易于使用)。这个包背后的想法是使用另一个cultofcoders:redis-oplog
服务器作为Redis
和pub
系统 - 它不存储任何数据。它仅适用于sub
和pub
- 而不是Meteor,它严重依赖于Oplog。这样,我们就不必担心Meteor尚未支持的分片数据库的Oplog。 sub
已经成熟,并且已被许多大公司用于生产。它与Meteor完全兼容,您无需改变使用Meteor的方式。但是,在更新集合的数据时,您必须稍微调整一下代码,以便将更改发布到Redis
,然后程序包Redis
将处理其余部分。
答案 1 :(得分:0)
似乎Meteor还不支持使用>进行分片的mongoDB设置。 1个碎片:https://forums.meteor.com/t/mongodb-sharding-and-livequery/3712