[发明专利]面向业务实体的全局ID生成方法及装置在审
申请号: | 201910848935.8 | 申请日: | 2019-09-09 |
公开(公告)号: | CN110737806A | 公开(公告)日: | 2020-01-31 |
发明(设计)人: | 杨凯翔;杨晓辰 | 申请(专利权)人: | 贝壳技术有限公司 |
主分类号: | G06F16/901 | 分类号: | G06F16/901;G06F16/903 |
代理公司: | 11283 北京润平知识产权代理有限公司 | 代理人: | 肖冰滨;王晓晓 |
地址: | 300280 天津市滨海新区南港*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 全局 业务实体 算法 实际业务 业务类型 时间戳 解析 增设 保证 | ||
本发明实施方式提供一种面向业务实体的全局ID生成方法,所述生成方法基于SnowFlake算法,其生成的全局ID包括时间戳、机器ID和序列号;所述全局ID还包括业务ID。所述业务ID与业务类型相对应。同时还提供了一种面向业务实体的全局ID生成装置。本发明的上述技术方案通过在现有SnowFlake算法中增设业务ID的方式以生成全局ID,实现了全局ID和实际业务的对应,通过ID能够解析出实际的业务含义,并且在大多数情况下,能够保证生成的ID的有序性,以及局部的绝对有序性。
技术领域
本发明涉及数据信息领域,具体地涉及一种面向业务实体的全局ID生成方法、一种面向业务实体的全局ID生成装置以及对应的存储介质。
背景技术
业务系统的业务逻辑中,都具有业务实体的概念。业务逻辑往往以业务实体为操作核心,设计和开发业务流程。比如一个电子商务系统,就具有订单,商品,库存等业务实体。如何很好的设计一个业务系统,决定了线上产品的执行效果和用户体验。业务实体需要具有自己的ID,这个ID应该在该实体所在的业务领域内是全局唯一的。这就涉及到了生成业务实体的全局唯一ID的问题。
在现有生成唯一ID的方法中。许多方法使用UUID生成唯一索引,或者使用UUID的部分几位和时间戳,IP,用户ID等数据拼接为一个全局唯一的ID字符串,UUID是通用唯一识别码,能够保证生成的识别码是绝对唯一的。但是这种方式也有问题,首先这种字符串拼接的方式执行性能较低,并且生成的ID是无序的,ID往往是作为数据库的索引,因此这种ID入库的性能也较差。也有一些方法使用数据库的唯一索引来生成唯一ID,但是这种方法在每次生成ID时都需要操作数据库,所以性能也不高,并且过于依赖于数据,数据库如果出现问题则会导致服务不可用。
SnowFlake是Twitter开源的分布式ID生成算法,其生成结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID,其中5个bit是数据中心,5个bit的机器ID,12bit作为毫秒内的流水号,即意味着每个节点在每毫秒可以产生4096个ID,最后还有一个符号位,永远是0。
发明内容
本发明实施方式的目的是提供一种面向业务实体的全局ID生成方法及装置,以至少解决现有的全局唯一ID生成方法中无法体现实际业务含义的问题。
为了实现上述目的,在本发明第一方面,提供了一种面向业务实体的全局ID生成方法,所述生成方法基于SnowFlake算法,其生成的全局ID包括时间戳、机器ID和序列号,所述全局ID还包括业务ID。
可选的,所述业务ID与业务类型相对应。
可选的,所述机器ID采用抢占式分布式锁的方式获取。
可选的,所述机器ID采用以下方式获取:
接收包含机器ID的抢占请求,并在所述缓存服务中查询所述机器ID对应的缓存key是否存在;所述缓存服务响应于远端机器在服务启动时的连接,并保存有当前在线机器的缓存key;
若存在,则通知抢占请求的发送者重新生成机器ID并重新请求,重复上一步骤;若不存在,则采用所述机器ID作为所述抢占请求的发送者的机器ID,同时将所述机器ID对应的缓存key加入所述缓存服务。
可选的,所述生成方法还包括:当接收到某一机器的服务关闭时,从所述缓存服务中删除所述机器的机器ID对应的缓存key。
可选的,所述生成方法还包括:设置所述缓存key的生存周期,当所述生存周期内未收到其对应的机器的心跳信号时,从所述缓存服务中删除所述机器的机器ID对应的缓存key。
可选的,所述时间戳和所述序列号采用以下步骤生成:
获取ID生成请求中的第一时间戳;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于贝壳技术有限公司,未经贝壳技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910848935.8/2.html,转载请声明来源钻瓜专利网。