【发布时间】:2018-05-08 14:40:18
【问题描述】:
我们有一系列网络事件。
事件按(域,uid)划分。
这里解释的所有事件都来自同一个域。有数千个域,流量非常不均匀(因此进行了分区)。
假设我们有来自一个未注册用户 (uid1) 的事件。 我们有来自不同设备的同一未注册用户的事件,这会创建一个新的 uid(我们称之为 uid2)。
当我们在 uid1 上进行注册时,它会使用电子邮件 (email1) 进行注册。 稍后,它会从第二台设备登录 - 因此我们可以知道两个 uid 来自同一个用户。
发生这种情况时,我们可以在登录时检查用户标识符(例如电子邮件)的状态存储,以查看它是否存在,从而获取正确的用户。
但是,由于它们是不同的uid,它们不会被共分。仅按域而不是 (domain, uid) 分区是不可取的。
另外,这种用户存储的大小可能非常大,无法保存在每个应用程序实例中(数百万条记录),因此对于 GlobalKTable 存储来说可能太大了。
如何解决这个问题?
【问题讨论】:
标签: apache-kafka apache-kafka-streams data-partitioning