码迷,mamicode.com
首页 > 数据库 > 详细

【数据库】总结常用分布式ID生成策略

时间:2018-11-10 17:50:47      阅读:342      评论:0      收藏:0      [点我收藏+]

标签:机器   服务   单机   标准   使用字符串   海量数据   查询   通过   依赖   

1. SequenceID

数据库自增列,最常见的方式。由数据库维护,数据库唯一。

优点:

1)简单,代码方便,性能可以接受。
2)数字ID天然排序,对分页或者需要排序的结果很有帮助。

缺点:

1)数据迁移或者合库麻烦。
2)分表分库的时候麻烦。

改进方案:

通过设置各数据库的步长,或者通过HASH进行分表。

2. GUID

微软对UUID这个标准的实现。UUID(Universally Unique Identifier)的标准型式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的36个字符。

优点:

1)性能非常高:本地生成,没有网络消耗。
2)全球唯一,在数据迁移,合并,变更等情况下,可以从容应对。

缺点:

1)无序,无法保证趋势递增.。
2)往往是使用字符串存储,查询的效率比较低.。
3)存储空间比较大,如果是海量数据库,就需要考虑存储量的问题。
4)无含义,不可读。

改进方案:

1)增加时间戳,使GUID有序。
2)增加数据库描述,使GUID可读。

3. Twitter的snowflake算法

优点:

1)不依赖于数据库,灵活方便,且性能优于数据库。
2)ID按照时间在单机上是递增的。

缺点:

1)强依赖机器时钟,如果机器上时钟回拨,会导致发号重复或者服务会处于不可用状态。
2)在单机上是递增的,但是由于涉及到分布式环境,每台机器上的时钟不可能完全同步,也许有时候也会出现不是全局递增的情况。

4. Leaf 美团点评的分布式ID生成系统

【数据库】总结常用分布式ID生成策略

标签:机器   服务   单机   标准   使用字符串   海量数据   查询   通过   依赖   

原文地址:https://www.cnblogs.com/tWX173908/p/9934302.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!