为什么Kaffa被称为pub-sub,我们可以从Kafka中的偏移中随机读取吗



我已经读了几个星期关于卡夫卡的文章,但有一些疑问,我无法通过查阅多个资源来解决。如果这些都是蹩脚的问题,我很抱歉。

  1. 卡夫卡是一个酒吧子系统,但消费者从卡夫卡经纪人那里提取数据-我读到过,提取数据会比推送更好(有一些缺点(,但如果我们提取数据,为什么我们称之为酒吧子系统?在这里,Kafka并没有通知已经订阅的消费者,而是消费者明确地提取数据。(有些资源说它被称为pub-sub,因为数据在消费者读取后不会被删除(发生在队列中(。然而,酒吧的子名称仍然让我感到困惑(
  2. 如果消费者从代理中提取数据,那么我理解消费者需要将其提交给代理(交付语义(,但为什么我们要说在Kafka中,我们可以从我们想要的任何偏移量开始读取。我的意思是,broker跟踪消费者偏移,然后要恢复从随机偏移中读取,我需要在API中提供另一个偏移吗?新的偏移将在broker端重置吗?或者这将如何发生

Kafka是一个分布式日志。服务器被称为代理,客户端是生产者和消费者。称之为";pub-sub";让开发人员知道它可以解决/支持哪组问题/应用程序。它没有描述它与同一组中的其他系统有何不同。。。更重要的是,我不认为;pub-sub";曾写在官方文件中。

它被称为pub-sub,因为数据在消费者读取后不会被删除

如果删除了数据,则说明非持久队列,而不是发布子系统。

主要区别在于;出版商";以及";订阅者";它们不是点对点通信的。订阅机制是基于推送还是基于拉取并不重要。来自维基百科-

在软件体系结构中,发布-订阅是一种消息传递模式,消息的发送者(称为发布者(不将消息编程为直接发送给特定的接收者(称为订阅者(,而是在不知道可能存在哪些订阅者(如果有的话(的情况下将发布的消息分类。类似地,订阅者表示对一个或多个类感兴趣,并且只接收感兴趣的消息,而不知道有哪些发布者(如果有的话(。

因此,卡夫卡制作人写信给位于经纪人上的("分类"(主题,而不是直接给消费者("特定接收者,称为订阅者"(。消费者可以从不存在的话题开始阅读。生产者可以向没有消费者的主题发送数据。


回到您的问题-

要从随机偏移量恢复读取,我是否需要在API中提供另一个偏移量,新的偏移量将在代理端重置,或者如何发生。

首先,消费者不需要提交给消费者组。对于任何新的/过期的组,auto.offset.reset配置将用于确定开始位置,否则,将使用指定组/主题/分区组合的已提交偏移量。这是在消费者能够将D_ 2个单独分区CCD_。

最新更新