2016-03-07 35 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是一個不錯的選擇。 –