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