php id 生产器,Laravel 分布式唯一 ID 生成器运用_PHP开发框架教程

本文探讨了在应用程序中生成全局唯一ID的需求,比较了几种不同的方法,包括数据库自增ID、集中式ID生成器和Twitter的Snowflake算法。重点介绍了针对大部分应用优化后的53位ID生成策略,该策略适用于Laravel,能够在JavaScript中无缝处理,并能应对时间回拨问题。
摘要由CSDN通过智能技术生成

5ee9dfa3e8c32470.jpg

在运用程序中,常常须要全局唯一的ID作为数据库主键。怎样生成全局唯一ID?

起首,须要肯定全局唯一ID是整型照样字符串?假如是字符串,那末现有的UUID就完整满足需求,不须要分外的事情。瑕玷是字符串作为ID占用空间大,索引效力比整型低。

假如采纳整型作为ID,那末起首排撤除32位int范例,因为局限太小,必需运用64位long型。

采纳整型作为ID时,怎样生成自增、全局唯一且不反复的ID?

计划一:运用数据库的自增ID,从1入手下手,基础能够做到一连递增。Oracle能够用SEQUENCE,MySQL能够用主键的AUTO_INCREMENT,虽然不能保证全局唯一,但每一个表唯一,也基础满足需求。

数据库自增ID的瑕玷是数据在插进去前,没法取得ID。数据在插进去后,猎取的ID虽然是唯一的,但一定要比及事件提交后,ID才算是有用的。有些双向援用的数据,不能不插进去后再做一次更新,比较贫苦。

第二种体式格局是采纳一个集中式ID生成器,它能够是Redis,也能够是ZooKeeper,也能够运用数据库的表纪录末了分派的ID。

这类体式格局最大的瑕玷是庞杂性太高,须要严峻依靠第三方效劳,而且代码设置烦琐。一般来讲,越是庞杂的计划,越不牢靠,而且测试越痛楚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值