3.【每日分享】谈谈常用的分布式ID的设计

在分布式开发中,唯一主键的设计非常重要,我们今天来看看分布式ID的常用设计

首先我们先明确一下分布式ID的定义
1.全局唯一,不是单点系统的唯一,而是分布式系统的唯一
2.有序性,通常需要保证生成的ID是有序递增的,比如在数据库中,递增有助于做分区,提高查询效率

典型的方案有很多
-基于数据库自增序列的实现,这种方式优缺点都非常明显,好处是简单好用,但是在扩展性和可靠性方面存在局限性
-基于Twitter早期开源的Snowflake的实现以及相关改动方案,这是目前应用相对广泛的一种方式,整体长度通常是64位(1位标示位+41位时间戳+10位WorkerID+12位序列),通常使用java 的long类型存储

另外Redis、Zookeeper、MongoDB等中间件也都有各种唯一ID解决方案。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 在互联网的业务系统中,涉及到各种各样的ID,如在支付系统中就会有支付ID、退款ID等。那一般生成ID都有哪些...
    Java大生阅读 3,282评论 0 4
  • 谈谈常用的分布式 ID 的设计方案?Snowflake 是否受冬令时切换影响? 典型回答 首先,我们需要明确通常的...
    逆流_2659阅读 13,869评论 0 1
  • 文章转载自公众号“达达京东到家技术”。 背景 在分布式系统中,经常需要对大量的数据、消息、http 请求等进行唯一...
    淡淡的橙子阅读 6,118评论 1 41
  • 我想我是一棵树 晴朗的天空下 我昂首挺立 然而风吹过 我却低下了头 原来我是棵草 一阵风一滴雨 都会让我低头 我想...
    花开落雨时阅读 372评论 1 1