现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

ZeroMQ Vs Kafka

2020-01-22 17:03 工业·编程 ⁄ 共 2021字 ⁄ 字号 暂无评论

ZeroMQ是一个开源的高性能消息传递库。它是跨平台的,支持多种语言,并且重量轻,速度快。ZeroMQ是消息传递的服务提供商。使用这些提供程序,需要消息传递API来发送和接收消息,并且需要将这些提供程序与应用程序服务器集成在一起。Apache Kafka 是一个消息传递系统,使您可以发布和订阅基于主题和分区的消息流。这样,它类似于ActiveMQ,RabbitMQ等产品。但是,即使有这些相似之处,Kafka与传统的消息传递系统也存在一系列根本的差异,从而使其完全不同。

在这里,我们将看到ZeroMQ与Kafka的架构和组件,如下所示:

ZeroMQ

它是一个异步消息传递库,在消息传递系统的不同应用程序中使用。它提供了一个消息队列,但是ZeroMQ设备将在没有专用消息代理的情况下运行,这与其他面向消息的消息不同。

套接字: 使用套接字,用户与之交互。这些套接字类似于TCP套接字,它们之间的区别在于每个套接字都能够处理多个对等通信。

工作线程:工作线程中驻留着各种对象这些对象中的每一个都完全由一个父对象持有(所有权在图中用一条简单的实线表示)。许多对象直接由套接字保存;但是,在某些情况下,实体是由套接字拥有的对象控制的。

ZeroMQ的架构

wps1

侦听器: TCP侦听器实体侦听传入的TCP连接,并为每个新连接生成引擎/会话对象。

会话:是与ZeroMQ套接字通信的会话对象。

引擎:引擎对象与网络通信。

管道:会话正在与套接字交换消息时。有两个传递消息的方向,管道对象处理要在内部传递的消息的每个方向。本质上,每个管道都是一个无锁队列,旨在快速在线程之间传递消息。

Kafka

Kafka是一个发布-订阅消息系统。借助Kafka等流技术,您可以处理在群集中生成的新数据,可以将其保存到HDFS,也可以将其保存到HBase或其他数据库,因此可以实时处理它。进来,您就可以通过流媒体完成所有这些工作。关于Kafka的简单术语很少应被理解。

wps2

Kafka的组成

生产者: 生产者将消息发布给一个或多个Kafka生产者,可以充当Kafka集群中的数据源。

代理: 代理是由代理中的一个或多个服务器组成的集群,这些服务器从生产者那里接收消息,将它们分配给偏移量并提交消息。

主题: 消息分为多个主题,主题分为多个分区,在这些分区中,它们索引并存储接收名为offset的增量ID的消息。

消费者: 消费者订阅各种主题并从经纪人那里读取数据。他们读取消费者组中的数据。使用者始终通过跟踪消息的偏移量来跟踪已消费了哪些消息。

ZeroMQ与Kafka之间的主要区别

让我们在以下几点上讨论ZeroMQ与Kafka之间的一些关键区别:

1.设计

ZeroMQ: ZeroMQ具有订阅过滤器的一流定义。订阅过滤器可帮助您根据前缀匹配来确定您有兴趣接收哪些消息。每个消息的第一帧包含流的逻辑名称,第二帧包含实际的日志记录。取而代之的是,我们可以配置ZeroMQ在第一帧上呈现完全匹配的内容,以便仅获取我们需要的条目。

卡夫卡(Kafka):卡夫卡(Kafka)具有主题的一流概念;它是消息传递主题中使用的一个关键概念,可以发布和订阅,也可以独立处理。

2.交货保证

ZeroMQ:不接受传递保证。如果未提及任何订户,ZeroMQ将丢弃消息,并且内存中可配置的大小缓冲区可能已满。

Kafka: Kafka支持至少一次消息传递保证。

3.持久状态和存储

ZeroMQ:将消息存储在内存中的小缓冲区中。

Kafka: Kafka将消息存储在磁盘上,以支持其传递保证以及保留已消耗的消息的功能。

4.表现

ZeroMQ: ZeroMQ比Kafka快得多,因为它不会在磁盘上存储消息,因此您不需要来回获取消息。它将消息存储在内存中的小缓冲区中。

Kafka:尽管事实证明Kafka与其他消息代理(例如RabbitMQ)相比要快,但由于需要磁盘来存储消息和返回,因此它实际上比ZeroMQ慢。

5.邮件保留

ZeroMQ:不支持消息保留。如果没有提到订户,那么即使订户错过了,ZeroMQ也会丢弃消息,并且内存中可配置的大小缓冲区可能会填满。

Kafka: Kafka支持消息保留,因为Kafka是一个日志,总是有消息,您可以通过设置消息的保留策略来对其进行监视。

性能 ZeroMQ更快点 与ZeroMQ相比,Kafka速度更慢。

留言保留 ZeroMQ没有保留 Kafka:ss基于策略(例如7天)

持久状态存储 ZeroMQ将消息存储在有限的内存缓冲区中。 Kafka将消息存储在磁盘中。

设计 ZeroMQ具有订阅筛选器的概念。 Kafka:它具有主题的概念。

交货保证 ZeroMQ不支持任何邮件传递保证。 Kafka支持至少一次交付保证。

结论

到目前为止,我们已经深入了解ZeroMQ vs Kafka,我们得出的结论是ZeroMQ不是消息代理,而是用于构造代理和协议的库。因此,与ZeroMQ相比,Kafka是一种更简单且得到更好支持的方法,您可以使用Kafka获得海量数据和高性能。

给我留言

留言无头像?