V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
coolair
V2EX  ›  问与答

想用 Python 写一个 ID 生成器如何解决并发获取产生重复 ID 的问题?

  •  
  •   coolair · 2018-03-08 17:16:58 +08:00 · 1847 次点击
    这是一个创建于 2489 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想用 Flask 写一个服务,为各个应用提供自动生成的 ID。

    需要获取 ID 的应用---->登录获取 Token---->通过 Token 附带一些参数(比如:ID 类型,ID 生成规则)获取 ID

    现在问题主要有:
    有一个删除服务,在应用 APP 中删除业务时需要删除生成器对应的 ID,使得 ID 可以重复利用,因此每次生成 ID 时需要查询是否有重复 ID,使得效率很低,而且并发高时,容易生成重复 ID。

    有没有什么好的解决方法或者类似项目可以借鉴?
    谢谢。
    7 条回复    2018-03-08 23:26:11 +08:00
    AlwaysBehave
        1
    AlwaysBehave  
       2018-03-08 17:20:53 +08:00 via Android
    uuid 了解一下
    Yourshell
        2
    Yourshell  
       2018-03-08 17:31:25 +08:00 via iPhone
    异步?
    Pastsong
        3
    Pastsong  
       2018-03-08 17:36:35 +08:00
    uuid 啊。。
    einverne
        4
    einverne  
       2018-03-08 17:36:56 +08:00 via iPhone
    coolair
        5
    coolair  
    OP
       2018-03-08 18:17:46 +08:00
    @Pastsong
    @AlwaysBehave
    按规则生成,不能用 uuid
    troywinter
        6
    troywinter  
       2018-03-08 19:03:15 +08:00
    snowflake, 不需要考虑其它的,直接实现 snowflake 算法就行
    AlwaysBehave
        7
    AlwaysBehave  
       2018-03-08 23:26:11 +08:00
    @coolair … uuid+你自己定义的规则
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1211 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:34 · PVG 07:34 · LAX 15:34 · JFK 18:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.