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

写了要给分布式 id 生成服务 开源了~ 求指点

  •  
  •   laoni · 2016-06-22 11:07:54 +08:00 · 3530 次点击
    这是一个创建于 3058 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/nixuehan/bear

    按照这个格式生成全局唯一 id : 毫秒 40bit + 机房 2bit + 机器 6bit + 业务 8bit + 序列号 7bit

    带 php sdk

    大家可以讨论下 id 生成 还有哪些方案?

    7 条回复    2016-06-22 19:14:09 +08:00
    fancy20
        1
    fancy20  
       2016-06-22 11:53:06 +08:00   ❤️ 1
    https://github.com/XiaoMi/chronos
    小米出的实现高可用、高性能、提供全局唯一而且严格单调递增 timestamp 的服务。
    是不是功能类似?
    laoni
        2
    laoni  
    OP
       2016-06-22 12:33:43 +08:00
    @fancy20 恩 类似 根据毫秒级 保持递增
    youxiaer
        3
    youxiaer  
       2016-06-22 13:37:12 +08:00
    @fancy20 同一毫秒的 id ,大小如何区分?
    laoni
        4
    laoni  
    OP
       2016-06-22 14:18:10 +08:00
    @youxiaer 还有一个序列号 序列号是自增的
    youxiaer
        5
    youxiaer  
       2016-06-22 18:41:24 +08:00
    @laoni 那这个序列号就是单点,不能分布式?
    menc
        6
    menc  
       2016-06-22 19:00:15 +08:00
    看了下,小米的实现是对 timestamp + 18 位,使用 thrift rpc 来进行远程调用, id 由 thrift server 统一分发,保证了 id 唯一,每毫秒支持 2^18 个不同 id 。

    小米和你的区别就在于对硬件的依赖更少了,不需要提供机房机架等信息,以及把生成 id 放到 server 上, id 反正也要传给 server ,为什么交给 server 来做
    laoni
        7
    laoni  
    OP
       2016-06-22 19:14:09 +08:00
    @youxiaer 高可用 没问题 必须能呀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:15 · PVG 05:15 · LAX 13:15 · JFK 16:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.