V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iam
V2EX  ›  程序员

用户合并的问题和思考

  •  
  •   iam · 2022-12-06 11:56:06 +08:00 · 2185 次点击
    这是一个创建于 723 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求场景

    • ①. 用户可以用多种三方渠道登录平台,每个渠道账号都是单独的用户,完善信息时可以选择绑定其他登录方式;
    • ②. 用户想要将两个账号合并,那么需要将相关的数据表都合并一遍;
    • ③. 使用事务合并,保证原子性;

    问题

    • I. 会有长事务;
    • II. 会出现死锁;

    解决方式思考

    一、斩草除根型(不提供合并)

    1. 在多个登录渠道中,设置一个 主账号(一般手机号);
    2. 保留原版各渠道独立;

    二、正常合并

    1. 整理所有用户相关操作,保证操作顺序和合并顺序一致,避免死锁;
    2. 用户合并时锁定用户,所有操作都不可执行,要在相关操作中判断用户的锁定状态,如:redis 锁;

    目前考虑的解决方案复杂度都较高

    理论上来说第一种的处理方式会更好一点,但是基于上线了一些时间的项目,只能用第二种;

    还有哪些处理方式呢,这些解决方式会不会带来什么问题

    11 条回复    2022-12-06 17:34:44 +08:00
    JerryX
        1
    JerryX  
       2022-12-06 12:38:50 +08:00
    合并是为了解决多渠道账号关联同一组 resource ,还是每个渠道账号关联有各自的 resource 。
    先说说出发点、现状、问题,具体问题还是要具体分析
    iam
        2
    iam  
    OP
       2022-12-06 13:24:46 +08:00
    @JerryX 每个渠道账号关联有各自的 resource 。
    fkdtz
        3
    fkdtz  
       2022-12-06 13:52:33 +08:00
    这种事一旦开了合并的口子,后面一堆事儿。

    例如用户根本不明白也不理解什么是账户合并,看到按钮就是一通点,之后发现账户里面数据不对了可能就会客服反馈,然后你就等着回滚吧。

    建议搞成手机号登录为主,其他登录渠道都是与手机号绑定的关系,这样用户理解起来也容易,数据也不会乱,开发起来也容易一些。
    JerryX
        4
    JerryX  
       2022-12-06 13:53:30 +08:00
    不了解你的业务背景,按我的理解:
    有一个用户主表,你是打算增加一个用户渠道表,合并操作应该是停用原用户表的数据,在用户渠道表增加一条记录?
    edis0n0
        5
    edis0n0  
       2022-12-06 13:55:17 +08:00
    我见过的平台都是禁止合并的,要合并只能留一个主账号,剩下的账号注销,然后去主账号绑定
    julyclyde
        6
    julyclyde  
       2022-12-06 14:19:59 +08:00
    而且还有合并“过来”和合并“过去”的区别,很多系统在提示信息方面差的一塌糊涂
    optional
        7
    optional  
       2022-12-06 14:24:28 +08:00 via iPhone
    考虑下你要合并的资源哪些是必须合并的,哪些是可以放弃的,可以放弃的就当注销处理
    vitoliu
        8
    vitoliu  
       2022-12-06 15:02:14 +08:00 via iPhone   ❤️ 1
    关联用户设置新 id ,新用户 id 通过 canal 离线任务关联现有的用户数据。灰度验证。
    dallaslu
        9
    dallaslu  
       2022-12-06 15:44:38 +08:00   ❤️ 1
    ipwx
        10
    ipwx  
       2022-12-06 15:52:36 +08:00
    @edis0n0 都是互联网厂子,用户数据不值钱也不要紧,所以才有这种事情。

    碰到什么政务系统整体合并的时候,根据身份证进行合并才是真的刚需。
    kkhaike
        11
    kkhaike  
       2022-12-06 17:34:44 +08:00   ❤️ 1
    建议干死这个产品
    或者增加必备资料的导入 /导出
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5997 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:11 · PVG 14:11 · LAX 22:11 · JFK 01:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.