需求场景
- ①. 用户可以用多种三方渠道登录平台,每个渠道账号都是单独的用户,完善信息时可以选择绑定其他登录方式;
- ②. 用户想要将两个账号合并,那么需要将相关的数据表都合并一遍;
- ③. 使用事务合并,保证原子性;
问题
- I. 会有长事务;
- II. 会出现死锁;
解决方式思考
一、斩草除根型(不提供合并)
- 在多个登录渠道中,设置一个 主账号(一般手机号);
- 保留原版各渠道独立;
二、正常合并
- 整理所有用户相关操作,保证操作顺序和合并顺序一致,避免死锁;
- 用户合并时锁定用户,所有操作都不可执行,要在相关操作中判断用户的锁定状态,如:redis 锁;
目前考虑的解决方案复杂度都较高
理论上来说第一种的处理方式会更好一点,但是基于上线了一些时间的项目,只能用第二种;
还有哪些处理方式呢,这些解决方式会不会带来什么问题