卡夫卡的工作队列选项
问题描述:
我们正在开发一个应用程序,它将通过UDP从一组设备接收时间序列传感器数据作为字节数组。这些数据需要解析并存储在Cassandra数据库中...卡夫卡的工作队列选项
我们使用RabbitMQ作为消息代理,并使用基于工作队列的消费者来解析数据并将其推送到cassandra ...由于增加流量,我们担心RabbitMQ的性能,并计划迁移到卡夫卡...我们的理解是,同样可以使用卡夫卡中的消费群实现......我们的理解是正确的
答
使用Apache Kafka,可以缩放话题比较容易。为了能够在同一时间处理更多数据,您需要:
- 在同一消费群组中拥有多个消费者时,您可以在同一时间消费多个消息。您仅限于某个主题的分区数量。
- 增加主题的分区数量,并增加消费者数量。
- 如果您仍然要处理更多数据,请增加经纪人的数量。
我会按照上述顺序处理可扩展性,但Kafka可以处理很多。在具有2个代理的设置中,每个主题4个分区和2个消费者(每个消费者每个分区使用一个线程),消费者将json解码为java对象,充实并存储到Cassandra,它可以处理30k/s(数据批量批处理200个插入语句)。