2016-03-07 69 views
0

我正在设计一个通知应用程序的组件(组件A),它与REST API(组件B)集成,该组件可以接受最多10,000个并发请求。发送的数据小于1KB,并将存储在NoSQL DB中,该数据库将由组件A读取,然后尽可能并发地发送到组件B.我想同时从组件A向组件B发送10,000个请求。我计划在组件A和B之间放置rabbitmq或activemq,以控制线程计数和扩展并发处理,以便发送大量并发请求(10,000)。为大型数据集缩放大型并发API请求

组分A:

-read all documents (less than 1kb each) from NoSQL database 
    -create JMS message and push data to rabbitmq or activemq 
    -the 10,000 rabbitmq or activemq listener/consumer threads will concurrently consume, 
    transform NoSQL object graph to the request needed by component B and call component B 
    and repeat until all messages are sent to component B 

组分B:

-can't handle more than 10,000 concurrent requests 
-wont support a bulk API 

该数据集可以进入百万和一百万消息将需要被处理,并从组件A发送到组件B尽可能快。我正在考虑将信息分配在一起。

的任何设计思路关于缩放,这将是极大的赞赏

回答

1

,它听起来就像你在正确的道路上已经

的RabbitMQ可以处理超过10万,每分钟的消息,所以它不应该有任何问题使用组件B打击您的10K并发请求

作为消息使用者,您可以使用consumer prefetch设置告诉RabbitMQ它可以一次处理多少个消息。

为从RabbitMQ读取的代码设置预取为10,000(或更少),将对象图和帖子转换为您的REST API。有了这个,你应该很好去。

+0

感谢Derick Bailey,在我的用例中RabbitMQ胜过ActiveMQ的任何经验? – c12

+1

我没有任何关于activemq的实际经验,所以我不能说它是如何工作/执行的。但我希望RMQ或AMQ是一个不错的选择。 –