我们正面临一个关键决策,我们需要为实时遥测处理和监控系统选择合适的工具。
该系统有两个主要目的:
答案 0 :(得分:1)
Kafka对主题进行了分区,因此每个使用者组都会独立使用消息。 RabbitMQ有一个名为fanout
的交换类型,用于向交换机上的所有队列传递消息,因此可以用于类似的purporse。
如果您拥有大量客户端(数百或数千),我将不会使用RabbitMQ扇出交换。 Kafka可以水平扩展,可以处理相当多的分区。出于延迟目的,通常建议您遵循不超过100 x b x r的规则,其中b是Kafka群集中的代理数量,r是复制因子。
还有其他专为大批量事件处理而设计的系统。你看过Event Store,还是基于云,Azure Event Hub?
答案 1 :(得分:1)
老实说,我也会考虑像splunk或ELK Stack(Elasticsearch和家族)这样的专用解决方案。
但恕我直言Kafka将以软实时模式完成工作(由于轮询,存在一些延迟)。
回答: 是的 是的。 这取决于。我正在使用像YAMI4一样的p2p消息。这个不使用轮询,所以当需要低延迟时它很好,但是YAMI4没有实现持久性。
答案 2 :(得分:0)
在您的技术选择中还要考虑的是Kafka还包括Kafka Streams API,它允许您在应用程序中进行流处理。它还包括一个可查询的statestore,可用于驱动仪表板。
Kafka的消费者可以选择接收所有消息,包括各种本机客户端库(Java,C / C ++,python,Go等),以及用于从Kafka发送/接收数据的REST代理。