如果您正在创建一项新服务,您如何知道从哪里开始阅读 kafka 主题?
If you are creating a new service, how do you know where to start reading the kafka topic from?
我是微服务架构的新手。我试图从在线资源中学习。所以我的问题是假设性的。
假设您有一个 Person 对象,并且您对该对象所做的任何更改都会发布到一个主题,并且订阅者使用它来更新他们的数据。假设话题里有这个用户被点赞的消息,那么如果你订阅那个,你就会更新点赞人数。
现在部署了一个新服务,它有自己的本地人员副本。现在这个服务开始读取队列,并看到这个人的主题有数据可以追溯到 7 天,在这 7 天里这个人收到了多个赞。那么这个服务如何确定从哪里开始阅读这个主题呢?可能是此服务的数据副本已在其收到的备份中包含许多喜欢的内容。
如果您使用 compacted topic 的 (person, likes)
,那么该主题的最新消息将始终是给定 "person" 的最新消息 "likes" ]
随着时间的推移,类似的事件越来越多,根据日志压缩的描述,相同的 "person" 的旧 "like" 计数将被丢弃。
在这种简单的情况下,从最早或最晚开始应该无关紧要,因为主题的新事件应该始终是最新计数,但如果从最早开始,则需要延迟您读取计数,因为当您读取当前打开的尚未压缩的日志段时,延迟可能会有点高。
我是微服务架构的新手。我试图从在线资源中学习。所以我的问题是假设性的。
假设您有一个 Person 对象,并且您对该对象所做的任何更改都会发布到一个主题,并且订阅者使用它来更新他们的数据。假设话题里有这个用户被点赞的消息,那么如果你订阅那个,你就会更新点赞人数。
现在部署了一个新服务,它有自己的本地人员副本。现在这个服务开始读取队列,并看到这个人的主题有数据可以追溯到 7 天,在这 7 天里这个人收到了多个赞。那么这个服务如何确定从哪里开始阅读这个主题呢?可能是此服务的数据副本已在其收到的备份中包含许多喜欢的内容。
如果您使用 compacted topic 的 (person, likes)
,那么该主题的最新消息将始终是给定 "person" 的最新消息 "likes" ]
随着时间的推移,类似的事件越来越多,根据日志压缩的描述,相同的 "person" 的旧 "like" 计数将被丢弃。
在这种简单的情况下,从最早或最晚开始应该无关紧要,因为主题的新事件应该始终是最新计数,但如果从最早开始,则需要延迟您读取计数,因为当您读取当前打开的尚未压缩的日志段时,延迟可能会有点高。