我们正面临一个关键的决定,在这个决定中,我们需要为实时遥测处理和监测系统选择合适的工具。
该系统有两个主要用途:
在 Jmeter 板ui应用程序中显示实时遥测数据(高刷新率)
处理来自多个来源的大量数据
我们有两个问题:
在我们的用例中,大多数数据消费者将是web客户机,这与我们目前发现的情况形成对比->rabbitmq和kafka都主要用于基于云的平台,其中大多数数据消费者是服务而不是客户机。
通常,来自kafka或rabbitmq的数据使用者是负载平衡的,并且不会为每个客户机复制消息。
.
kafka或rabbitmq是否适合为每个客户机复制数据的环境?
这种工具是否适合在为每个客户机复制消息的同时处理大量客户机?
这种工作有更好的工具吗?
谢谢:)
3条答案
按热度按时间gudnpqoy1#
老实说,对于监控,我也会考虑专门的解决方案,如splunk或elk stack(elasticsearch和family)。
但是伊姆霍Kafka将在软实时模式下完成这项工作(由于轮询存在一些延迟)。
答案:1。对。2对。三。视情况而定。我也在使用像yami4这样的p2p消息。这一个不使用轮询,所以在需要低延迟时非常好,但是yami4没有实现持久性。
vs91vp4v2#
Kafka对主题进行了分区,因此每个消费群体都独立地使用消息。rabbitmq有一个名为
fanout
用于将消息传递到exchange上的所有队列,因此可以用于类似的目的。如果您有大量客户机(成百上千),我不会使用rabbitmq扇出交换。Kafka可以水平扩展,可以处理相当多的分区。出于延迟目的,通常建议您遵循不超过100 x b x r的规则,其中b是kafka集群中的代理数,r是复制因子。
还有其他专门为高容量事件处理而设计的系统。你看过事件商店,或者基于云的azure事件中心吗?
jk9hmnmh3#
在选择技术时还需要考虑的是,kafka还包括kafka streams api,它允许您在应用程序中进行流处理。它还包括一个可查询的statestore,可用于驱动 Jmeter 板。
kafka中的用户可以选择接收所有消息,包括各种本机客户机库(java、c/c++、python、go等)以及用于从kafka发送/接收数据的rest代理。