分布式唯一ID算法之snowflake算法

1>mysql数据库索引用的是B+树

2>分布式唯一ID算法--snowflake算法

1.UUID--长度32位的全局唯一识别码

uuid可以保证全局唯一,但是占用32位字节有些太长,并且由于是无序的,数据入库性能较差!

为什么说入库性能较差呢?

当我们插入主键自增的id时,会插入到索引分裂的最后一个节点上,饱和了之后会分裂出新的节点,这样节点的分裂次数最少,并且充分利用了节点的每个空间,不会造成节点的资源浪费。但是如果是无序的插入,会产生很多新的且未饱和的节点,从而大大的浪费了节点空间

2>数据库自增主键

虽然是有序的插入,但是由于主键的产生完全依赖数据库,会对性能造成影响。若一些删除或者修改的接口被截取,可能会被恶意非法遍历执行批量删除或者修改操作,对系统的安全性有一定的影响。

3>snowflake算法

优点:1.生成ID时不依赖于DB,完全在内存生成,高性能高可用。2.ID呈趋势递增,后续插入索引树的时候性能较好。

缺点:依赖于系统时钟的一致性。如果某台机器的系统时钟回拨,有可能造成ID冲突,或者ID乱序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值