基于数据库的号段模式生成分布式ID

网友投稿 1143 2023-04-06

基于数据库的号段模式生成分布式ID

基于数据库的号段模式生成分布式ID

号段模式是当下分布式ID生成器的主流实现方式之一 ,号段模式可以理解成从数据库批量获取ID。将ID缓存在本地,提升效率。

比如每次从数据库获取ID时,就获取一个号段,如(1,1000],这个范围表示1000个ID,业务应用在请求提供ID时,只需要在本地从1开始自增并返回,而不需要每次去请求数据库,一直到本地自增到1000时,也就是当前号段已经用完了,才去数据库重新获取下一号段。

CREATE TABLE id_generator ( id int(10) NOT NULL, max_id bigint(20) NOT NULL COMMENT '当前最大id', step int(20) NOT NULL COMMENT '号段的步长', biz_type int(20) NOT NULL COMMENT '业务类型', version int(20) NOT NULL COMMENT '版本号', PRIMARY KEY (`id`))

biz_type : 代表不同业务类型

max_id : 当前最大的可用id

step : 代表号段的长度

version : 是一个乐观锁,每次都更新version,保证并发时数据的正确性

id  biz_type  max_id  step  version  
1101100020000

等这批号段ID用完,再次向数据库申请新号段,对max_id字段做一次update操作 , update max_id = max_id + step ,update成功则说明新号段获取成功,新的号段范围是(max_id,max_id+step)。

update id_generator set max_id = #{max_id+step}, version = version + 1 where version = # {version} and biz_type = XXX

由于多业务端可能同时操作,所以采用的版本号version乐观锁方式更新,这种分布式ID生成方式不强依赖于数据库,不会频繁的访问数据库,对数据库的压力小很多

参考地址

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:OpenTSDB介绍——基于Hbase的分布式的,可伸缩的时间序列数据库,而Hbase本质是列存储
下一篇:分布式数据库hbase详解
相关文章