如何在mongodb上扩展多个读者?

时间:2017-11-17 05:16:44

标签: mongodb architecture microservices distributed-computing

我的系统详情

  1. Mongodb :每个文档代表一个事务。 每笔交易可以是借记卡交易或信用卡交易。

  2. TransactionReader :定期轮询mongodb进行交易,并将每笔交易放入带有路由密钥'借方','贷方'的rabbitmq

  3. TransactionWorker :可以是两种类型[DebitCardWorker,CreditCardWorker] DebitCardWorker的多个实例,CreditCardWorker侦听队列并使用事务并处理它们。由于我使用的是rabbitmq,因此没有两个工人(同一类型)处理相同的交易。

  4. 我的要求: 我想让多个TransactionReaders实例从mongodb中提取数据,但我不希望在rabbitmq中复制一个事务。

    一个解决方案: 引入新字段以表示文档的状态(如WAITING,PICKED,PROCESSED)并使用mongodb的findAndModify()并在多个读取器实例之间实现代码同步。因此,两个TransactionReader进程选择一个status:WAITING的文档。两者都尝试findAndModify(status:WAITING; new_status: PICKED)并且只有其中一个成功并继续标记status:PROCESSED

    我的问题:是否有技术或库可以帮助我从mongodb读取多个实例之间的负载分配?

0 个答案:

没有答案