分享好友 最新动态首页 最新动态分类 切换频道
9K字解析:常见分布式ID解决方案总结(数据库、算法、开源组件)
2024-12-26 13:26

分布式 ID(Distributed ID)是指在分布式系统中生成全局唯一的标识符,用于标识不同实体或数据对象。在分布式系统中,由于数据存储、计算和处理都分散在不同的节点上,因此需要一个可靠的方式来跟踪和标识这些数据对象。

9K字解析:常见分布式ID解决方案总结(数据库、算法、开源组件)

分布式ID最低要求

 

erlang

复制代码

优秀的分布式 ID

 

复制代码

数据库自增ID是在数据库中创建表时,通过设置一个自增的ID字段来实现的。每当插入一条记录时,数据库会自动为该记录生成一个唯一的ID。

数据库自增ID可以很好地保证ID的唯一性,但在高并发和大规模的分布式系统中,容易出现瓶颈和性能问题。同时,由于数据库自增ID只能在单个数据库中保证唯一性,因此需要通过分库分表等方式来支持多台机器上的生成。

简言之

 

复制代码

数据库主键自增这种模式,每次获取 ID 都要访问一次数据库,数据库压力大。因此,可以批量获取,然后存在内存里面,需要用到的时候,直接从内存里面拿来使用

主键自增

 

erlang

复制代码

号段模式:每请求一次分配一个号段

 

复制代码

号段模式相比主键自增而言: 性能提高且自增

Redis 可以通过自增命令来实现分布式 ID 的生成。常用的方法是使用 Redis 的自增命令 INCR,将一个特定的 key 自增,并将其作为 ID 返回。这种方法是线程安全的,可以在分布式系统中使用

 

复制代码

MongoDB ObjectId是MongoDB数据库中的一个内置数据类型,用于唯一标识MongoDB文档(Document)。

它由12个字节组成,其中前4个字节表示时间戳,接下来3个字节表示机器ID,然后2个字节表示进程ID,最后3个字节表示随机值。

优缺点

 

复制代码

UUID是一种通用唯一识别码,它是由一组算法和标准组成的,可以保证在全球范围内唯一性。UUID不依赖于任何中心节点,可以在分布式系统中很好地保证ID的唯一性。缺点是它生成的ID比较长,不利于索引和查询

开放软件基金会(OSF)规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素。利用这些元素来生成UUID。

优缺点

 

css

复制代码

雪花算法是 Twitter 提出的一种分布式ID生成算法。雪花算法可以在多台机器上生成不重复的ID,支持高并发和大规模的分布式系统,但需要保证数据中心ID和机器ID的唯一性。

它的原理是将一个64位的long类型的ID分为4个部分:时间戳、数据中心ID、机器ID和序列号。

时间戳占用了42位,可以使用69年,数据中心ID和机器ID分别占用了5位,可以支持32个数据中心和32个机器,序列号占用了12位,可以支持每个节点每毫秒生成4096个ID。

细一点说:生成的64位ID可以分成5个部分

 

复制代码

时间范围

 

markdown

复制代码

工作进程数量

 

ini

复制代码

序列号数量

 

ini

复制代码

分段作用说明1bit保留不用long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是141bit时间戳,精确到毫秒存储的是时间截的差值(当前时间截 - 开始时间截),结果约等于69.73年5bit数据中心最多支持2的5次方(32)个节点5bit机器id最多支持2的5次方(32)个节点12bit毫秒内的计数器每个节点每毫秒最多产生2的12次方(4096)个id

默认情况下41bit的时间戳可以支持该算法使用到2082年,10bit的工作机器id可以支持1024台机器,序列号支持1毫秒产生4096个自增序列id 。SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右

优缺点

 

复制代码

 

java

复制代码

application.ym添加配置

 

java

复制代码

IdWorker添加到容器

 

java

复制代码

UidGenerator是百度开源的一款基于 Snowflake的唯一 ID 生成器,是对 Snowflake进行了改进

GitHub:

Tinyid是滴滴开源的一款基于数据库号段模式的唯一 ID 生成器。

GitHub:

Leaf是美团开源的一个分布式 ID 解决方案。提供了号段模式 和 Snowflake这两种模式来生成分布式 ID。

目前Leaf覆盖了美团点评公司内部金融、餐饮、外卖、酒店旅游、猫眼电影等众多业务线。在4C8G VM基础上,通过公司RPC方式调用,QPS压测结果近5w/s,TP999 1ms。

Leaf 设计文档

GitHub:

 

makefile

复制代码

 

bash

复制代码

 

sql

复制代码

 

xml

复制代码

Leaf 提供两种生成的ID的方式(号段模式和snowflake模式,可以同时开启两种方式,也可以指定开启某种方式(默认两种方式为关闭状态)。

配置项含义默认值leaf.nameleaf服务名leaf.segment.enable是否开启号段模式falseleaf.jdbc.urlmysql 库地址leaf.jdbc.usernamemysql 用户名leaf.jdbc.passwordmysql 密码leaf.snowflake.enable是否开启snowflake模式falseleaf.snowflake.zk.addresssnowflake模式下的zk地址leaf.snowflake.portsnowflake模式下的服务注册端口
 

ini

复制代码

 

bash

复制代码

在classpath下配置leaf.properties

 

bash

复制代码

算法取自twitter开源的snowflake算法。如果不想使用该模式配置leaf.snowflake.enable=false即可。

在classpath下配置leaf.properties

 

matlab

复制代码

 

bash

复制代码

 

css

复制代码

 

java

复制代码

 

java

复制代码

参数key无实际意义,受迫于统一接口的实现

 

java

复制代码

号段模式中该参数key有着重要意义

数据库表初始时

访问地址

请求获取id值后,号段模式提前加载

重启服务后再次访问,使用新的号段

号段模式再一次提前加载

最新文章
360清理大师下载安装特点
360清理大师能够有效的清理手机相关的内存,同时还有具有有效的软件管理功能,强大的加速让手机运行更流畅,一键清理快速解决空间不足问题。有兴趣的小伙伴可以360清理大师下载安装体验吧。关键用以清理系统室内空间和加快手机运作速率;能
2024年最好用的七款AI绘画工具(附网址)
AI另一十分热门的竞争领域是AI绘画,这里也是百花齐放,越来越多的网站都开放了AI绘画的功能 但整体绘画的质量水平参差不齐,断层十分明显,这里和大家分享2024年目前个人认为最好用的7款AI绘画工具,供大家
Google广告引流怎么收费
Google广告引流怎么收费在如今数字化的时代,广告引流已成为企业推广和营销的必备手段。而Google作为全球Zui大的搜索引擎之一,其广告引流的效果备受关注。那么,Google广告引流怎么收费呢?本文将从不同角度为您详细介绍。1. 价格:2.00元
AI智能英语对话的app:满足你英语学习需求的智能选择
在英语学习的领域,AI智能英语对话的app正逐渐成为许多人的智能选择。对于那些渴望提升英语能力,尤其是口语能力的人来说,这类app有着独特的吸引力。首先,寻找支持AI智能英语对话的免费app是很多人的首要任务。市面上有不少这样的应用,
24小时多门店共享棋牌室预约模式系统开发
24小时多门店共享棋牌室预约模式系统开发,24小时多门店共享棋牌室预约模式系统开发,24小时多门店共享棋牌室预约模式系统开发开发一个24小时多门店共享棋牌室预约小程序是一个结合了线上预约、线下体验、多门店管理和智能化运营的综合项目
goodplay官方下载最新版
goodplay官方下载最新版作为一个国际性的应用商店,goodplay汇聚了来自全球各地的开发者提交的应用程序。这意味着用户可以接触到来自不同文化、不同国家的应用程序和游戏,体验到不同地域的风情和特色。goodplay内置了强大的搜索引擎,用户
ai智能写作方案
高效性:AI智能写作方案能够快速生成大量文章,大大提高了写作效率。准确性:AI智能写作方案能够根据已有的数据和算法,生成符合规范和要求的文章。多样性:AI智能写作方案能够根据不同的需求,生成不同风格、不同体裁的文章。可定制性:用
3G与Android操作系统概览
什么是3G? 3G,全称为3rd Generation,中文含义就是指第三代数字通信。 所谓3G,是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。 3G只是一种通信技术标准,符合这个标准的技术有WCDMA、
2024年腾讯云双十二大促即将结束,期待下一次的云端盛惠!
​​2024年腾讯云双十二大促即将结束,期待下一次的云端盛惠!大促最后几天,都知道云产品每年都涨价,错过优惠不再有!腾讯云有优惠活动吗?2024年末腾讯云双十二大促活动,云服务器价格多少钱?2024年腾讯云12月轻量服务器多少钱一个月?
AIGC数字人克隆系统:重塑娱乐与社交新边界
**AIGC数字人克隆系统:重塑娱乐与社交新边界**在科技日新月异的今天,人工智能(AI)技术正以前所未有的速度改变着我们的生活。其中,AIGC(Artificial Intelligence Generated Content,人工智能生成内容)数字人克隆系统作为这一领域的
相关文章
推荐文章
发表评论
0评