扩展大型数据集的大型并发 API 请求
Scaling Large Concurrent API Requests For Large Data Sets
我正在设计通知应用程序的组件(组件 A),它与 REST API(组件 B)集成,最多可以接受 10,000 个并发请求。发送的数据小于 1KB,将存储在 NoSQL DB 中,组件 A 读取该数据库,然后尽可能并发地发送给组件 B。我想同时从组件 A 向组件 B 发送 10,000 个请求。我计划在组件 A 和 B 之间放置 rabbitmq 或 activemq 以控制线程数并扩展并发处理以发送大量请求并发请求 (10,000)。
组件 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。我正在研究将消息一起批处理。
任何关于缩放的设计想法都将不胜感激
听起来你已经在正确的道路上了
RabbitMQ 每分钟可以处理 100,000 多条消息,因此使用组件 B 处理 10K 并发请求应该没有任何问题
作为消息消费者,您可以使用 consumer prefetch 设置来告诉 RabbitMQ 它一次可以处理多少条消息。
为从 RabbitMQ 读取、转换对象图并发布到您的 REST api 的代码将预取设置为 10,000(或更少)。准备就绪后,您就可以开始了。
我正在设计通知应用程序的组件(组件 A),它与 REST API(组件 B)集成,最多可以接受 10,000 个并发请求。发送的数据小于 1KB,将存储在 NoSQL DB 中,组件 A 读取该数据库,然后尽可能并发地发送给组件 B。我想同时从组件 A 向组件 B 发送 10,000 个请求。我计划在组件 A 和 B 之间放置 rabbitmq 或 activemq 以控制线程数并扩展并发处理以发送大量请求并发请求 (10,000)。
组件 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。我正在研究将消息一起批处理。
任何关于缩放的设计想法都将不胜感激
听起来你已经在正确的道路上了
RabbitMQ 每分钟可以处理 100,000 多条消息,因此使用组件 B 处理 10K 并发请求应该没有任何问题
作为消息消费者,您可以使用 consumer prefetch 设置来告诉 RabbitMQ 它一次可以处理多少条消息。
为从 RabbitMQ 读取、转换对象图并发布到您的 REST api 的代码将预取设置为 10,000(或更少)。准备就绪后,您就可以开始了。