全局ID生成器怎么做

  1. MySQL Replace into
    replace into Tickets64(stub) values('a');
    select LAST_INSERT_ID();
    保证这俩语句在一个事务内即可,优点是足够简单,replace into和unique id 保证了ID生成表永远只有一行数据。缺点是限制了只能是MySQL,而且发号器的并发量受限于MySQL。
  2. Redis incr
    利用Redis的原子性来生成递增的ID,这样发号器的可靠性等同Redis的可靠性。性能当然很高。
  3. mongodb
    id 非整数
  4. snowflake算法
    时间戳 + 机器号 + 序列 + 随机值
    这里要求序列生成函数必须是线程安全的(得加锁),由于序列生成函数一般就是将整数 + 1,并发量可以保证
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,098评论 2 89
  • Entrance 数据在分片时,典型的是分库分表,就有一个全局ID生成的问题。 单纯的生成全局ID并不是什么难题,...
    天下无敌强阅读 2,287评论 2 5
  • 最近在proxy的分库分表,需要给表中的主字段产生一个全局唯一ID,考虑到后期DBA会拿这个ID做索引的,所以产生...
    luomoxyz阅读 3,261评论 0 4
  • 星期六的上午,你在闹钟响起的时候醒来,看见同室的人还在呼呼大睡,“再睡一会儿吧”你这么对自己说,不小心睡到十点多…...
    应钟肆阅读 7,976评论 83 388
  • 通常对于相对复杂界面的状态的控制我们都会选择KVO,其中对数组的检测相对于其他的数据会有点不一样。 KVO概述 K...
    FongG阅读 2,008评论 3 0