zoukankan      html  css  js  c++  java
  • 10 | 发号器:如何保证分库分表后ID的全局唯一性?

     建议你搭建发号器服务来生成全局唯一的 ID。

    怎么不用UUID?

    因为在系统设计时,ID 有可能成为排序的字段。

    ID 有序也会提升数据的写入性能。

    不能作为 ID 的另一个原因是它不具备业务含义

    最后,UUID 是由 32 个 16 进制数字组成的字符串,如果作为数据库主键使用比较耗费空间。

     Snowflake 算法设计的非常简单且巧妙,性能上也足够高效,同时也能够生成具有全局唯一性、单调递增性和有业务含义的 ID,但是它也有一些缺点,其中最大的缺点就是它依赖于系统的时间戳,一旦系统时间不准,就有可能生成重复的 ID。所以如果我们发现系统时钟不准,就可以让发号器暂时拒绝发号,直到时钟准确为止。

    主要的问题是,如果超出了4096个,你要怎么处理?如果时钟错乱,你要怎么处理? 

  • 相关阅读:
    协议与接口相关
    jmeter 使用(1)
    jmeter 压力测试
    shell脚本的规则
    charles的原理及使用
    Linux环境部署和项目构建
    面向对象
    python 基础练习题
    jmeter 使用(2)
    Ext.apply
  • 原文地址:https://www.cnblogs.com/lakeslove/p/12288530.html
Copyright © 2011-2022 走看看