gpt4 book ai didi

redis - 关于将事件从redis转移到kafka的问题

转载 作者:可可西里 更新时间:2023-11-01 11:24:15 25 4
gpt4 key购买 nike

我有一个问题与事件驱动系统中的棘手情况有关,我想寻求建议。这是情况:

在我们的系统中,我使用redis作为memcached数据库,kafkaa作为消息队列。为了提高redis的性能,我使用lua脚本来处理数据,同时将事件推送到redis的一个阻塞列表中。然后会有一个过程在那个阻止列表中挑选redis事件并将它们移动到kafka。所以在这个过程中,有3个步骤:

1) 从redis列表中读取事件
2)批量生产到kafka
3)删除redis中对应的事件

不幸的是,如果进程在2到3之间死掉了,也就是说把所有的事件都生产到kafka中后,并没有删除redis中相应的事件,那么这个进程重启之后,就会把重复的事件生产到kafka中,即 Not Acceptable 。因此,是否有人对此问题有任何解决方案。在此先感谢,我真的很感激。

最佳答案

Kafka 很容易重新处理事件,即使只写一次。重新处理几乎肯定是由重新平衡客户端引起的。重新平衡可能由以下原因触发:

  • 修改主题的分区。
  • 重新部署服务器和随后的客户端暂时不可用。
  • 消息消耗缓慢,代理随后重新创建客户端。

换句话说,如果您需要确保消息只被处理一次,您需要在客户端确保这一点。您可以这样做,方法是设置一个分区键,以确保同一客户端以顺序方式使用相关消息。然后,该客户可以维护他已处理内容的数据库记录。

关于redis - 关于将事件从redis转移到kafka的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52575521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com