如何实现gdpr的权利忘记(删除)在Kafka流与商店和处理器api?

xa9qqrwz  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(354)

这个问题是关于在kafka streams应用程序中实现gdpr的,其中包含使用处理器api进行有状态处理的完整保留主题。
假设应用程序接收事件。有不同的客户机,客户机有用户,这些用户生成“事件”主题的事件。
为了允许“忘记权限”,您必须能够按需删除(clientid,userid)对的数据,而不仅仅是基于保留期的删除。你可以通过“契约”政策得到这个。
如果我保留(就像我在非压缩主题中所做的那样)键作为(clientid,userid),压缩将把所有(clientid,userid)记录减少到一个,显然不是我想要的。
我知道我可以有这样一个记录键:(clientid,userid,eventid)和一个使用(clientid,userid)%numpartitions的分区器,为了从用户中删除记录,我可以从头开始读取,用(clientid,userid)筛选那些记录,这些记录将在同一个分区中,然后添加((clientid,userid,eventid)->null)记录。
但是,这样做,我需要关联的状态存储与源主题保持相同的分区,即(clientid,userid),但不是相同的键。这可行吗?
如何从状态存储中删除主题?对处理器代码中的“null”值作出React相当麻烦(因为您的数据是(clientid,userid),而不是(clientid,userid,eventid))。
关于Kafka的通用gdpr的参考资料,请不要包括基于加密的解决方案,如daniel lebrero的-尽管很有见地。

irlmq6kh

irlmq6kh1#

但是,这样做,我需要关联的状态存储与源主题保持相同的分区,即(clientid,userid),但不是相同的键。这可行吗?
对。如果输入主题是按(clientid,userid)划分的,那么存储将以相同的方式进行划分。如果在应用程序中重新划分数据,则可以传递自定义 StreamPartitioner 保留(clientid,userid)分区方案。
如何从状态存储中删除主题?对处理器代码中的“null”值作出React相当麻烦(因为您的数据是(clientid,userid),而不是(clientid,userid,eventid))。
不知道为什么这么麻烦?即使输入主题是按(clientid,userid)分区的,键仍然是(clientid,userid,eventid),并且在存储中使用完整键。

相关问题