nodejs如何高性能的使用mongodb watch?
发布于 6 年前 作者 szluohua 2339 次浏览 来自 问答

背景: socket.io+redis+nodejs+mongodb搭建的聊天系统。 现在我需要做集群部署服务节点。由于需要监听数据库变化。我使用了mongodb的 db.collection.watch().在单节点都是正常的。但是当我希望部署多节点的时候,会出现多节点重复监听的情况。现在我的想法是使用cluster,在主进程监听,子进程不监听,这样可以吗?但这样当数据库写入频繁的时候,会不会出问题?

	MongooseModels.room.watch({fullDocument: 'updateLookup'}).on('change',  (data) => {
		const doc = data.fullDocument;
		if (doc && doc.usernames) {			
			_.forEach(doc.usernames, (val) => {
				io.of('s_room').in(val.userId).emit('rooms-changed', {type: data.operationType, doc});
			});	
		}
	});
回到顶部