Apache kafka Apache Kafka中的用户活动日志和GDPR删除请求

Apache kafka Apache Kafka中的用户活动日志和GDPR删除请求,apache-kafka,Apache Kafka,我计划使用ApacheKafka处理来自许多不同服务的用户活动。其想法是,每个服务都会发送如下所示的消息: key: "u001", message: `{type:"account-modify", details:{...}}` key: "u002", message: `{type:"account-modify", details:{...}}` key: "u001", message

我计划使用ApacheKafka处理来自许多不同服务的用户活动。其想法是,每个服务都会发送如下所示的消息:

key: "u001", message: `{type:"account-modify", details:{...}}`
key: "u002", message: `{type:"account-modify", details:{...}}`
key: "u001", message: `{type:"document-create", details:{...}}`
key: "u001", message: `{type:"comment-added", details:{...}}`
key: "u001", message: `{type:"comment-added", details:{...}}`
这里的键是我数据库中的用户ID,消息将有一个“类型”(活动类型)、一个时间戳和一些根据类型而变化的数据

然后,我会让消费者阅读所有这些数据并生成不同的内容,其中之一是一个很好的用户友好的活动日志,其结构与上面的不同(也许我不想每次用户添加评论时都包括在内,而是显示一个“用户添加了5条评论”消息,可能我不关心此面向用户的日志的某些类型)。该消费者将向常规数据库写入数据,以便应用程序从该数据库读取数据,并将用户友好的数据显示为HTML表

在这一点上,我有一个简单的问题:我为此疯狂使用卡夫卡吗?我选择它的原因是:

  • 可伸缩性。这个系统已经相当大了,所以很高兴能够有一个可靠、可扩展、可用的托管卡夫卡安装(可能使用亚马逊服务),以及消费群体的概念,我可以根据需要启动尽可能多的实例来构建面向用户的活动日志
  • 分离。最好采用生产者/消费者体系结构,生产者只需发送消息,而无需等待消费者生成数据(例如,面向用户的活动日志)
现在,有一些担忧。我一直在读卡夫卡如何处理GDPR删除请求,当你发送一个“墓碑”消息获取一个密钥时,它似乎会删除带有该密钥的所有消息。然而,这似乎需要一个“紧凑的清理政策”,我不确定这到底意味着什么。从文档中可以看出,“紧凑”意味着卡夫卡会定期删除每把钥匙上的每一条信息,除了钥匙上最近的一条这是真的吗?此外,我是否可以使用“墓碑”消息删除系统中单个用户记录的所有活动,但保留单独的消息(即我的活动日志)不变?

最后,冒着让这成为一个很长的问题的风险,这对我的系统来说是一个好的设计吗?卡夫卡能满足我的需要吗?