[发明专利]一种全局唯一且递增的ID生成方法及系统在审
申请号: | 202010038803.1 | 申请日: | 2020-01-14 |
公开(公告)号: | CN113190547A | 公开(公告)日: | 2021-07-30 |
发明(设计)人: | 徐佳宏;陈华兵;黄金龙;曾珂 | 申请(专利权)人: | 深圳市茁壮网络股份有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/2458;H04L29/12 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王兆林 |
地址: | 518004 广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 全局 唯一 递增 id 生成 方法 系统 | ||
本发明提供了一种全局且递增的ID生成方法及系统,ZooKeeper服务器在检测到目标ID服务器未注册的情况下,生成目标ID服务器对应的ZooKeeper持久顺序节点,ZooKeeper服务器依据已注册ID服务器对应的ZooKeeper持久顺序节点中存储的机器码标识,按照机器码标识递增的顺序,生成目标ID服务器的机器码标识,并将目标ID服务器的机器码标识存储在相应的ZooKeeper持久顺序节点中,完成对目标ID服务器的注册;目标ID服务器依据自身的机器码标识生成系统ID,系统ID包括第一预设位数的时间戳、第二预设位数的机器码标识和第三预设位数的自增序列。本发明通过ZooKeeper服务器维护ID服务器的机器码标识,避免由于系统中ID服务器的机器码标识不唯一导致的生成重复系统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持久顺序节点中,完成对所述目标ID服务器的注册;
所述目标ID服务器依据自身的机器码标识生成系统ID,所述系统ID包括第一预设位数的时间戳、第二预设位数的机器码标识和第三预设位数的自增序列。
可选的,在所述目标ID服务器依据自身的机器码标识生成系统ID之前,所述方法还包括:
所述ZooKeeper服务器在检测到目标ID服务器已注册的情况下,获取所述目标ID服务器的本地系统时间;
所述ZooKeeper服务器获取所有正在提供服务的ID服务器的本地系统时间的平均值;
所述ZooKeeper服务器判断所述目标ID服务器的本地系统时间与所述平均值的绝对值是否小于阈值;
若小于所述阈值,所述ZooKeeper服务器提示所述目标ID服务器启动成功;
若不小于所述阈值,所述ZooKeeper服务器提示所述目标ID服务器启动失败,启动报警机制。
可选的,所述目标ID服务器的机器码标识包括机房码和机器码。
可选的,所述方法还包括:
所述ID生成系统中的每个ID服务器基于网络时间同步协议实现时钟同步。
可选的,所述方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市茁壮网络股份有限公司,未经深圳市茁壮网络股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010038803.1/2.html,转载请声明来源钻瓜专利网。