是否可以在数据存储中创建/存储具有最终一致性的用户帐户?
在没有大量架构复杂性的情况下管理帐户创建似乎是不可能的,以避免出现两个具有相同UID(例如电子邮件地址)的帐户的情况?
最终一致性存储的用户是否使用单独的一致数据库作为身份存储,或者是否存在我应该探索的解决方案/模式?
提前致谢,
杰米
答案 0 :(得分:1)
可以在最终一致的数据存储中使用管理。我们这样做。它的工作原理如下:
冲突不应该发生,当他们这样做时,解决冲突的道路很明确。如果帐户ID是某人的电子邮件地址,那么如果两个单独的人尝试在同一电子邮件下注册,则此处存在更大的问题。我们在这种情况下所做的是在发现冲突后立即阻止两个新帐户,并向冲突地址发送电子邮件,向用户解释存在问题(可能存在欺诈行为)。您可以要求用户重置为该帐户,也可以要求他们与支持小组联系。
同一用户在数据不一致的时间范围内重复访问将转到同一副本。例如,如果刚注册的人和下一个请求是登录,则必须针对存在新注册详细信息的数据副本验证该登录。因此,如果最终的一致性是由于不同地理位置的多个数据中心和正常条件下的请求从地理位置传到最近的数据中心,那么您就可以了。
有一些边缘情况,例如,如果用户在一个数据中心注册,那么该中心崩溃,现在用户无法登录,即使他仍然可以看到该应用程序 - 从其他数据中心提供服务。您可以根据每日新用户数和平均数据中心停机时间计算此案例的预期频率。然后决定是否值得担心一个用户(百万/十亿/无论你的号码是多少)有问题并可能联系支持。我不久前面临同样的决定,并决定从成本效益的角度来看答案是否定的。