[发明专利]分布式短序列号生成方法及装置在审
申请号: | 202110451781.6 | 申请日: | 2021-04-26 |
公开(公告)号: | CN113515557A | 公开(公告)日: | 2021-10-19 |
发明(设计)人: | 吴振东;杨旭;杨基甸;王聪聪 | 申请(专利权)人: | 中国工商银行股份有限公司 |
主分类号: | G06F16/2458 | 分类号: | G06F16/2458 |
代理公司: | 北京三友知识产权代理有限公司 11127 | 代理人: | 任默闻;王涛 |
地址: | 100140 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式 序列号 生成 方法 装置 | ||
本发明提供一种分布式短序列号生成方法及装置,涉及计算机领域及金融领域。该方法包括:根据节点总数将预设的序列号重复周期划分为多个时间区间,按时间顺序为所述多个时间区间进行十进制编号得到各时间区间的区间ID;在每个时间区间内分别为各节点生成一个序列号;接收节点发送的序列号请求,并比较所述序列号请求中的序列号数目与已经生成的对应节点的序列号数目的大小;当所述序列号请求中的序列号数目小于或等于已经生成的对应节点的序列号数目时,按照所述序列号请求向所述节点发送序列号。本申请在节省序列号位数的同时,改善了序列号的生成性能,可用尽节点启动之后至当前时间生成的所有序列号,有效应对交易高峰时的高并发现象。
技术领域
本发明涉及计算机领域及金融领域,具体涉及一种分布式短序列号生成方法及装置。
背景技术
在分布式序列号的设计中,为了良好的支持横向扩展,序列号通常不会与持久层相关联,而是基于应用节点纯内存生成。例如雪花算法,其原理为将序列号按二进制位分割为“毫秒时间戳|节点ID|顺序位”,由于各节点ID不同,因此各节点的序列号也不会重复。对于每一节点,记录上次生成的时间戳以判断是否同一时间有多次请求,若是则针对每一次请求使顺序位依次+1,若顺序位溢出则归0等待下一毫秒。
上述雪花算法的实现需要保证序列号位数足够多,当位数不够时可改进雪花算法。比如缩短节点ID与顺序位,甚至可以取消顺序位。
然而,取消顺序位后,为了保证序列号不重复,每个节点在每个时间戳仅能生成1个序列号,也即每个节点生成序列号的速率仅为总节点数分之一,由于序列号是按时间均匀生成,而序列号请求并非均匀发生,在序列号请求的高并发时段,现有的系列号生成方法无法快速响应。因此,现有技术中,在序列号位数不够多时,序列号的生成性能会受到严重影响,无法应对突如其来的高并发现象。
发明内容
为了解决现有技术中存在的问题,本申请提供一种分布式短序列号生成方法,涉及计算机领域及金融领域,该分布式短序列号生成方法包括:
根据节点总数将预设的序列号重复周期划分为多个时间区间,按时间顺序为所述多个时间区间进行十进制编号得到各时间区间的区间ID;
在每个时间区间内分别为各节点生成一个序列号;
接收节点发送的序列号请求,并比较所述序列号请求中的序列号数目与已经生成的对应节点的序列号数目的大小;
按照比较结果及序列号发送策略向对应节点发送序列号。
在一实施例中,所述按照比较结果及序列号发送策略向对应节点发送序列号,包括:
当所述序列号请求中的序列号数目小于或等于已经生成的对应节点的序列号数目时,按照所述序列号请求向所述节点发送序列号;
当所述序列号请求中的序列号数目大于已经生成的对应节点的序列号数目时,暂停接收所述节点的序列号请求,直至已经生成的对应节点的序列号数目等于所述序列号请求中的序列号数目时,按照所述序列号请求向所述节点发送序列号。
在一实施例中,所述在每个时间区间内分别为各节点生成一个序列号,包括:
根据预设的序列号生成函数在当前时间区间内分别为各节点生成一个序列号;
所述序列号生成函数为:
序列号=当前时间区间的区间ID×时间区间长度+节点ID
其中,时间区间长度等于节点总数,节点ID为各节点对应的十进制编号。
在一实施例中,所述分布式短序列号生成方法还包括:
当所述节点在当前序列号重复周期内重启时,确定所述节点的重启时刻所在的时间区间;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国工商银行股份有限公司,未经中国工商银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110451781.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:业务数据测试方法、装置及设备
- 下一篇:一种图像生成方法、装置及设备