[发明专利]用于向业务分配编号的方法和装置有效
申请号: | 201710665501.5 | 申请日: | 2017-08-04 |
公开(公告)号: | CN109388626B | 公开(公告)日: | 2023-01-31 |
发明(设计)人: | 李亮;杜强;王席敏 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F16/20 | 分类号: | G06F16/20;G06F9/54 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 杨静 |
地址: | 100195 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 业务 分配 编号 方法 装置 | ||
本公开的实施例公开了一种用于向业务分配编号的方法,包括:监听包含在用于向业务分配编号的缓存队列中的剩余编号的数量;以及当数量小于预定阈值时,向数据库请求号段编号。
技术领域
本公开涉及数据处理领域,更具体地,涉及一种用于向业务分配编号的方法和装置。
背景技术
在目前主流的分布式系统部署应用中,常常会向业务数据分配唯一编号(比如常用的订单编号、商品编号、属性编号、模板编号等)进行存储,而不同的业务场景可能需要不同的编号起始值及编号号段以便于系统进行业务区分。
在现有的技术方案中,各种系统都利用MYSQL数据库创建编号生成表。例如,每个系统新建编号生成表,每个应用服务器首先查询当前业务类型编号的值,通过以业务类型和当前编号的值为条件将当前编号自增一定的号段,若号段获取失败,则将继续查询当前编号的值和业务类型以获取号段,若号段获取成功,则在服务器中的缓存队列中维护当前编号的值和号段。当针对业务获取编号时,将进行同步锁控制,即,每个服务器保证当前只有一个线程获取缓存队列中的下一个编号并将当前编号修改为获取的编号,若缓存队列中的编号已取完,则将继续去数据库与其他服务器进行资源竞争从而获取指定的号段并将其存储到缓存队列中。
在实现本发明构思的过程中,发明人发现现有技术中至少存在如下问题:灵活性较差,例如,每个业务系统各自维护业务类型编号的生成,不能快速生成新接入的业务所需的编号;扩展性较差,例如,每当生成新接入的业务所需的编号时,可能需要通过数据脚本在编号生成表中为新业务添加当前业务类型的编号初始值;维护成本高,例如,每个业务系统都要维护自己的编号生成和编号规则,对于新接入的业务,需要二次开发和上线;以及性能较差,例如,每个应用服务器从内存中获取编号时都需要进行同步锁控制,并实时计算出要获取的编号,最后再按照业务规则组装编号,若缓存队列中的编号已用尽,则将与其他服务器进行资源竞争,拿到行锁的服务器才有权获取指定的编号号段并将其存储到缓存队列中进行维护,而未拿到行锁的服务器将无限循环直到拿到为止。
为了在支持跨系统和不同业务的场景下实现对编号的集中式、高效且灵活的管理并且提升业务系统的开发效率,需要能够在支持跨系统和不同业务的场景下以一定规则高效地生成编号的方法及系统。
发明内容
有鉴于此,本公开提供了一种用于向业务分配编号的方法和装置。
本公开的一个方面提供了一种用于向业务分配编号的方法,包括:监听包含在用于向所述业务分配编号的缓存队列中的剩余编号的数量;以及当所述数量小于预定阈值时,向数据库请求号段编号。
根据本公开的实施例,所述方法还包括:从数据库获取针对所述缓存队列的行锁;当成功地获取到针对所述缓存队列的行锁时,从所述数据库获取从当前待分配的起始编号开始的预定长度的号段;利用所述号段和标识所述业务的类型的前缀确定所有编号;以及将所确定的所有编号作为所请求的号段编号写入所述缓存队列中。
根据本公开的实施例,所述方法还包括:当未能成功地获取针对所述缓存队列的行锁时,重复执行所述获取步骤,直到成功地获取到针对所述缓存队列的行锁为止。
根据本公开的实施例,所述方法还包括:接收用于向业务分配编号的请求,所述请求中包括所述业务的类型;当根据所述业务的类型确定存在与所述业务相对应的缓存队列时,向所述业务分配所述缓存队列中的编号。
根据本公开的实施例,当根据所述业务的类型确定不存在与所述业务相对应的缓存队列时,确定所述业务具有新的业务类型,对与所述业务相对应的数字编号初始值、前缀和从数据库获取的号段长度进行合法性验证,并且当所述合法性验证通过时,将所述数字编号初始值、所述前缀和所述号段长度与所述业务的类型相关联地存储在所述数据库中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710665501.5/2.html,转载请声明来源钻瓜专利网。