1. 利用数据库自增ID
    优点:最简单
    缺点:单点风险、单机性能瓶颈

  2. 利用数据库集群并设置相应的步长(Flickr方案)
    优点:高可用、ID较简洁
    缺点:需要单独的数据库集群

  3. Twitter Snowflake
    优点:高性能高可用、易拓展
    缺点:需要独立的集群以及ZK

snowflake算法的缺点:
时钟回拨问题;
趋势递增,而不是绝对递增;
不能在一台服务器上部署多个分布式ID服务;

  1. 一大波GUID、Random算法
    优点:简单
    缺点:生成ID较长,有重复几率

  2. 基于Redis的ID生成器
    优点:长度可控,高性能
    缺点:依赖redis

  3. 时间戳+用户标识码+随机数(点评)
    优点:

  4. 方便、成本低。

  5. 基本无重复的可能。
  6. 自带分库规则,这里的用户标识码即为用户ID的后四位,在查询的场景下,只需要订单号就可以匹配到相应的库表而无需用户ID,只取四位是希望订单号尽可能的短一些,并且评估下来四位已经足够。
  7. 可排序,因为时间戳在最前面。 缺点:长度稍长性能要比int/bigint的稍差等

results matching ""

    No results matching ""