【问题标题】:If you are creating a new service, how do you know where to start reading the kafka topic from?如果你正在创建一个新服务,你怎么知道从哪里开始阅读 kafka 主题?
【发布时间】:2019-04-22 03:04:07
【问题描述】:

我是微服务架构的新手。我试图从在线资源中学习。所以我的问题是假设性的。

假设您有一个 Person 对象,并且您对该对象所做的任何更改都会发布到一个主题,并且订阅者使用它来更新他们的数据。假设主题中有消息,比如该用户得到了一个赞,那么如果您订阅该主题,您将更新一个人的赞数。

现在部署了一项新服务,该服务拥有自己的本地人员副本。现在,该服务开始读取队列,并看到人员主题具有可追溯至 7 天的数据,其中此人已收到多个赞。那么这个服务如何确定从哪里开始阅读这个主题呢?可能是该服务的数据副本在收到的备份中已经包含了许多喜欢。

【问题讨论】:

  • 这主要取决于您的应用程序来弄清楚和管理。如果您维护“人员的本地副本”,您还需要跟踪该副本的最新程度(就 Kafka 队列而言),以便您知道仍需要应用哪些更新。

标签: apache-kafka distributed-system


【解决方案1】:

如果您使用(person, likes) 中的compacted topic,则此主题的最新消息将始终是给定“人”的最新“喜欢”

根据日志压缩的描述,随着时间的推移,更多类似事件的发生,同一“人”的旧“喜欢”计数将被删除。

在这种简单的情况下,您从最早还是最晚开始并不重要,因为该主题的新事件应该始终是最新的计数,但是如果您从最早开始,则阅读时需要延迟计数,因为当您读取尚未压缩的当前打开的日志段时,滞后可能会有些高。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多