本项目分布式环境下生产全局唯一ID的做法

一般全局ID作为数据库的主键使用,主要有3种实现方式。

1,UUID:唯一但是不连续,作为字符串索引效率低,也不保证随机。

2,自增序列:绝对递增,长度可控,作为索引时效率高。

3,snowflake:按时间趋势递增,单独使用时效率较高。

目前我们项目主要使用第二种方式,部分使用UUID。

项目架构为dubbo+zk,使用专门流水服务器来生产ID,序号存储在数据库的流水表中。

可以自定义流水的生成规则:步长,起始值,最大值,缓存个数。

流水服务器以接口的方式对外提供服务,并将数据库的ID缓存起来,减少数据库的压力。

请求方可以按自己的需求来获取ID,比如,一次获取多少个?

同时在客户端也可以作二级缓存,以支持更大的并发。

为了防止临界值时,请求时间过长,增加预警机制,低于阈值时,提前补充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章