Этот вопрос касается внедрения GDPR в приложении Kafka Streams, с полной темой хранения с обработкой с сохранением состояния с использованием Processor API.
Скажем, приложение получает события.Существуют разные клиенты, и у клиентов есть пользователи, и эти пользователи создают события в теме «событий».
Чтобы разрешить «право на забвение», необходимо иметь возможность удалять данные по запросу для (clientId, userId), а не просто удалить на основе сохранения.Вы можете иметь это по "компактной" политике.
Если я сохраню (как я делал в некомпактированной теме) ключ как (clientId, userId), сжатие сократит все записи (clientId, userId) до одной, что явно не то, что я хочу.
Я понимаю, что у меня может быть такой ключ записи: (clientId, userId, eventId) и Partitioner, который использует (clientId, userId)% numPartitions, и для удаления записей от пользователя я могу сделатьэто путем чтения с начала, фильтрации этих записей с помощью (clientId, userId), который будет находиться в том же разделе, и добавления туда записи ((clientId, userId, eventId) -> null).
НоДля этого нужно, чтобы хранилища состояний были связаны с тем же разделением, что и исходная тема, т. е. (clientId, userId), но не с тем же ключом.Это было бы возможно?
Как удалить из тем государственного магазина?Реакция на «нулевое» значение в коде вашего процессора довольно громоздка (поскольку у вас есть данные по (clientId, userId), а не (clientId, userId, eventId)).
Ссылка на общие сведения GDPR на Kafka и, пожалуйста, не включайте решения на основе шифрования, такие как Даниэля Лебреро - хотя и проницательные.