基于百度ID生成器二次开发方案
作者:互联网
背景
百度开源的UidGenerator,比较适合我们交易的应用场景,但并不能直接拿来用,因为我们交易并不是使用spring体系,另外也还有其它需求,因此需要做一些二次开发
目标
1、提供框架无关的工具包,UidGenerator依赖Spring
2、提供原数据获取接口,通过id查询id是由哪个机房,哪个国家生成的等
架构
主mysql:提供id元数据的管理,workId 通过mysql表自增生成,机房、地区等元数据存储到mysql表
备mysql:采用半同步复制同步数据,提供主备自动切换的能力,提高可用性
ID元数据服务:UidGenerator本身并没有这个服务,引入这个服务是解决跨机房网络隔离连接不上mysql的问题
ID生成器工具包:应用服务通过ID生成器工具包里的工具类生成ID和获取元信息
接口设计
1、获取唯一ID
UidGenerator uidGenerator =new UidGenerator();
uidGenerator.genId()
2、获取元数据
UidGenerator uidGenerator =new UidGenerator();
IdMetadata metadata =uidGenerator.getIdMetadata()
IdMetadata{
地区
Idc机房
发布环境(dev,test,pr)
业务环境(lizhi,pp…)
本地IP
}
表设计
Id_metadata{
ID(主键自增)
地区
Idc机房
发布环境(dev,test,pr)
业务环境(lizhi,pp…)
本地IP
创建时间
修改时间
}
标签:mysql,生成器,机房,uidGenerator,二次开发,UidGenerator,ID 来源: https://blog.csdn.net/chenyun19890626/article/details/116403582