zoukankan      html  css  js  c++  java
  • 全局ID生成策略

    全局ID的实现方式

    • UUID,32个字符, 4个横线

      8 - 4-4-4- 12

      UUID.randomUUID.toString();

      • 基于时间的UUID(time & MAC)
      • UUID(time&POSIX UID或GID)
      • 随机数的UUID
      • UUID(SHA1)
    • 数据库

    create table sequence(
       id int auto_increment
       b_id int unique_key
    );
    begin
       replace into sequence(b_id) values();
       select LAST_INSERT_ID();
    commit;
    
    • Redis、mongdb
      increBy / incr
      ObjectId

    全局ID的要求

    • 全局唯一性
    • 有序的递增性
    • 高可用性
    • 时间上的特性
    -1l ^ (-1l << sequenceBits)
                     00000000 00000000 00000000 00000001
                     取反+1
                     11111111 11111111 11111111 11111111
       11111111 1111 11111111 11111111 11110000 00000000 (-1l << sequenceBits)
                     11111111 11111111 11111111 11111111
                     00000000 00000000 00001111 11111111
                     4095
    

    雪花算法

    Leaf-segment

    Leaf-snowflake

    UIDGenerator

    • snowflake算法(改造版本)
  • 相关阅读:
    Java实现2048小游戏
    归并排序【代码】
    插入排序【代码】
    选择排序【代码】
    考试系统
    九九乘法表
    万年历
    猜数游戏
    C++知识点(杂)
    Core Data ,inverse
  • 原文地址:https://www.cnblogs.com/snail-gao/p/14140873.html
Copyright © 2011-2022 走看看