实现
号段模式可以理解为从数据库批量的获取自增ID,每次从数据库<b>取出一个号段范围</b>,<br>例如 (1,1000] 代表1000个ID,具体的业务服务将本号段,生成1~1000的自增ID并<b>加载到内存</b>。<br>
表结构
CREATE TABLE id_generator (<br> id int(10) NOT NULL,<br> max_id bigint(20) NOT NULL COMMENT '当前最大id',<br> step int(20) NOT NULL COMMENT '号段的布长',<br> biz_type int(20) NOT NULL COMMENT '业务类型',<br> version int(20) NOT NULL COMMENT '版本号',<br> PRIMARY KEY (`id`)<br>)
等这批号段ID用完,再次向数据库申请新号段,对max_id字段做一次update操作,<br>update max_id= max_id + step,update成功则说明新号段获取成功,<br>新的号段范围是(max_id ,max_id +step]。<br>
优点
由于多业务端可能同时操作,所以采用版本号version<b>乐观锁</b>方式更新,这种分布式ID生成方式不强依赖于数据库,<br><b>不会频繁的访问数据库</b>,对数据库的压力小很多。目前比较主流<br>