【技术实现步骤摘要】
一种全局唯一且递增的ID生成方法及系统
本专利技术涉及数据库
,更具体的,涉及一种全局且递增的ID生成方法及系统。
技术介绍
在分布式系统中,当数据量巨大一张表无法承接时,就会涉及到分库分表操作。为了便于对分库分表后的数据进行查询、更新、迁移等操作,需要生成系统唯一主键ID,系统唯一主键ID具有以下特性:在整个系统ID唯一、ID是数字类型且是趋势递增的、简短便于查询。在分布式系统中存在多个用于生成系统唯一主键ID的服务器,如何保证多个服务器生成的系统唯一主键ID不重复成为本领域亟待解决的技术问题。
技术实现思路
有鉴于此,本专利技术提供了一种全局且递增的ID生成方法及系统,保证分布式系统中多个服务器生成系统ID的唯一性。为了实现上述专利技术目的,本专利技术提供的具体技术方案如下:一种全局且递增的ID生成方法,应用于全局且递增的ID生成系统,所述ID生成系统包括ZooKeeper服务器和多个ID服务器,所述方法包括:所述ZooKeeper服务器在检测到目标ID服务器未注册的情况下,生成所述目标ID服务器对应的ZooKeeper持久顺序节点,所述目标ID服务器为所述ID生成系统中的任意一个ID服务器;所述ZooKeeper服务器依据已注册ID服务器对应的ZooKeeper持久顺序节点中存储的机器码标识,按照机器码标识递增的顺序,生成所述目标ID服务器的机器码标识,并将所述目标ID服务器的机器码标识存储在相应的ZooKeeper持久顺序节点中,完成对所述目标 ...
【技术保护点】
1.一种全局且递增的ID生成方法,其特征在于,应用于全局且递增的ID生成系统,所述ID生成系统包括ZooKeeper服务器和多个ID服务器,所述方法包括:/n所述ZooKeeper服务器在检测到目标ID服务器未注册的情况下,生成所述目标ID服务器对应的ZooKeeper持久顺序节点,所述目标ID服务器为所述ID生成系统中的任意一个ID服务器;/n所述ZooKeeper服务器依据已注册ID服务器对应的ZooKeeper持久顺序节点中存储的机器码标识,按照机器码标识递增的顺序,生成所述目标ID服务器的机器码标识,并将所述目标ID服务器的机器码标识存储在相应的ZooKeeper持久顺序节点中,完成对所述目标ID服务器的注册;/n所述目标ID服务器依据自身的机器码标识生成系统ID,所述系统ID包括第一预设位数的时间戳、第二预设位数的机器码标识和第三预设位数的自增序列。/n
【技术特征摘要】
1.一种全局且递增的ID生成方法,其特征在于,应用于全局且递增的ID生成系统,所述ID生成系统包括ZooKeeper服务器和多个ID服务器,所述方法包括:
所述ZooKeeper服务器在检测到目标ID服务器未注册的情况下,生成所述目标ID服务器对应的ZooKeeper持久顺序节点,所述目标ID服务器为所述ID生成系统中的任意一个ID服务器;
所述ZooKeeper服务器依据已注册ID服务器对应的ZooKeeper持久顺序节点中存储的机器码标识,按照机器码标识递增的顺序,生成所述目标ID服务器的机器码标识,并将所述目标ID服务器的机器码标识存储在相应的ZooKeeper持久顺序节点中,完成对所述目标ID服务器的注册;
所述目标ID服务器依据自身的机器码标识生成系统ID,所述系统ID包括第一预设位数的时间戳、第二预设位数的机器码标识和第三预设位数的自增序列。
2.根据权利要求1所述的方法,其特征在于,在所述目标ID服务器依据自身的机器码标识生成系统ID之前,所述方法还包括:
所述ZooKeeper服务器在检测到目标ID服务器已注册的情况下,获取所述目标ID服务器的本地系统时间;
所述ZooKeeper服务器获取所有正在提供服务的ID服务器的本地系统时间的平均值;
所述ZooKeeper服务器判断所述目标ID服务器的本地系统时间与所述平均值的绝对值是否小于阈值;
若小于所述阈值,所述ZooKeeper服务器提示所述目标ID服务器启动成功;
若大于或等于所述阈值,所述ZooKeeper服务器提示所述目标ID服务器启动失败,启动报警机制。
3.根据权利要求1所述的方法,其特征在于,所述目标ID服务器的机器码标识包括机房码和机器码。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述ID生成系统中的每个ID服务器基于网络时间同步协议实现时钟同步。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述目标ID服务器获取当前系统时间以及生成系统ID的最新时间;
所述目标ID服务器计算所述当前系统时间与生成系统ID的最新时间之间的时间偏差值;
所述目标ID服务器根据所述时间偏差值确定ID生成策略,并执行所述ID生成策略。
6.根据权利要求5所述的方法,其特征在于,所述目标ID服务器计算所述当前系统时间与生成系统ID的最新时间之间的时间偏差值,包括:
所述目标ID服务器判断生成系统ID的最新时间是否大于所述当前系统时间;
若大于所述当前系统时间,所述目标ID服务器计算生成系统ID的最新时间与所述当前系统时间之间由于时钟回拨产生的回拨时间偏差值;
若不大于所述当前系统时间,所述目标ID服务器计算所述当前系统时间与生成系统ID的最新时间之间的增量时间偏差值。
7.根据权利要求6所述的方法,其特征在于,所述目...
【专利技术属性】
技术研发人员:徐佳宏,陈华兵,黄金龙,曾珂,
申请(专利权)人:深圳市茁壮网络股份有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。