【发布时间】:2022-02-01 08:00:11
【问题描述】:
我有一个大约 10 万台设备的物联网系统,每秒将它们的状态发布到用 Java/Spring Boot 编写的后端。到目前为止,我一直在使用 gRPC,但我发现 CPU 使用率过高,所以我打算让设备发布到 RabbitMQ 并让后端工作人员处理它们。
处理中:更新 db 表。
由于来自同一设备的数据必须按顺序处理,我打算使用 RabbitMQ 的一致性哈希交换,并为 n 个工作人员绑定 n 个队列。但我不确定它如何与自动缩放一起使用。
我想为每个后端实例创建自动删除队列并将它们绑定到交换器,但我想不通:
- 如何重新平衡已在队列中的消息?
- 如果出现连接问题,队列可能会被删除,因此我需要将这些消息重新转发到现有队列。
- 是否有任何算法来处理工作人员的自动缩放?例如,如果消息堆积如山,即使 CPU/内存使用率很低,我也需要生成新的工作人员。
【问题讨论】:
标签: spring-boot architecture rabbitmq autoscaling consistent-hashing