[发明专利]基于数据库的多服务间积分日志ID生成方法在审
申请号: | 202110859726.0 | 申请日: | 2021-07-28 |
公开(公告)号: | CN113553331A | 公开(公告)日: | 2021-10-26 |
发明(设计)人: | 陈碧勇;方敏;高永强 | 申请(专利权)人: | 厦门南讯股份有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/2458;G06F16/27 |
代理公司: | 厦门致群财富专利代理事务所(普通合伙) 35224 | 代理人: | 刘兆庆 |
地址: | 361000 福建省厦门*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 数据库 服务 积分 日志 id 生成 方法 | ||
本发明公开了基于数据库的多服务间积分日志ID生成方法,所述方法包括:S1、在ID数据库统一积分日志ID的生成配置,所述生成配置包括业务标识、最大ID值、ID号段长度和版本号;S2、根据所述生成配置,为各服务系统中的每个业务分配相应的业务标识和ID号段;S3、服务系统从分配的ID号段中读取当前可用的ID值,若当前分配的ID号段消费到设定的阈值,则自动从ID数据库加载下一个ID号段到服务系统的内存中。本发明能有效降低每次生成ID过程中读写数据库造成的系统服务阻塞,提高系统响应性能。
技术领域
本发明涉及计算机技术领域,特别涉及基于数据库的多服务间积分日志ID生成方法。
背景技术
对多个数据库多张数据表的积分日志数据生成唯一的ID标识是积分系统的基本功能,其是在数据库读写分离和分库分表的架构设计前提下,利用数据库来实现唯一ID的生成。
现有常用的积分日志ID生成方案是:在各个数据库共同维护一份数据表用于ID的生成,通过将各个积分日志数据库的ID生成设置为不同步长,从而避免积分日志ID在不同系统出现重复的情况。但随着数据量的增长,数据库的数量增长不可避免,而这种方案的数据库扩容比较困难,当已经定义好数据库和步长后,如果需要添加新的数据库,需要重新调整数据库的步长,且每次获取新的ID都需要进行一次数据库读写,当生成积分日志ID的请求量增大时,数据库读写压力较大,容易造成系统阻塞。
发明内容
为解决上述问题,本发明提供了基于数据库的多服务间积分日志ID生成方法。
本发明采用以下技术方案:
基于数据库的多服务间积分日志ID生成方法,所述方法包括:
S1、在ID数据库统一积分日志ID的生成配置,所述生成配置包括业务标识、最大ID值、ID号段长度和版本号;
S2、根据所述生成配置,为各服务系统中的每个业务分配相应的业务标识和ID号段;
S3、服务系统从分配的ID号段中读取当前可用的ID值,若当前分配的ID号段消费到设定的阈值,则自动从ID数据库加载下一个ID号段到服务系统的内存中。
进一步地,所述业务标识用于业务区分;所述最大ID值表示当前业务标识被分配到的批量ID的最大值;所述ID号段长度表示每次分配的ID数量;所述版本号用于确认当前ID号段是否被占用。
进一步地,所述版本号的值是一个单调递增的正整数,每次从ID数据库获取一个ID号段后,就更新一次版本号。
进一步地,所述阈值为20%-30%。
进一步地,所述生成配置还包括增量和余数,所述增量用于表示相邻ID值之间的步长;所述余数用于表示ID值的起始余数,所述ID值的计算方法为:IDn+1=IDn+增量,其中,IDn+1表示第n+1个ID值,IDn表示第n个ID值。
进一步地,步骤S3中所述自动从ID数据库加载下一个ID号段到服务系统的内存中具体包括如下步骤:
S31、查询当前的最大ID值MaxId和ID号段长度Step;
S32、计算新的最大ID值new_MaxId,new_MaxId=MaxId+Step;
S33、获取新的ID号段并更新ID数据库中的最大ID值:对比当前的版本号与ID数据库内的版本号,若相等,则表示新的ID号段未被占用,获取新的ID号段并更新最大ID值;若不相等,则表示新的ID号段已被其他线程占用,获取新的ID号段失败,并返回步骤S31进行重试。
进一步地,所述重试的次数设置为3-5次。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门南讯股份有限公司,未经厦门南讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110859726.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:订单同步处理系统及方法
- 下一篇:模型优化方法、装置、电子设备及可读存储介质