CN112182005A - 一种流水号生成方法及装置 - Google Patents
一种流水号生成方法及装置 Download PDFInfo
- Publication number
- CN112182005A CN112182005A CN202011078375.1A CN202011078375A CN112182005A CN 112182005 A CN112182005 A CN 112182005A CN 202011078375 A CN202011078375 A CN 202011078375A CN 112182005 A CN112182005 A CN 112182005A
- Authority
- CN
- China
- Prior art keywords
- clock
- timestamp
- system clock
- version
- serial number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2329—Optimistic concurrency control using versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Entrepreneurship & Innovation (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Operations Research (AREA)
- General Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- Quality & Reliability (AREA)
- Marketing (AREA)
- Economics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种流水号生成方法及装置,其中方法为:获取第一时间戳和第二时间戳;所述第一时间戳是系统时钟为第i流水号生成的时间戳;所述第二时间戳是系统时钟为第i+1流水号生成的时间戳;i为正整数;若所述第二时间戳不迟于所述第一时间戳,则更新系统时钟的第一时钟版本为第二时钟版本;至少根据主机的主机标识、所述第二时钟版本和系统时钟生成的时间戳,生成流水号。
Description
技术领域
本发明涉及软件建构技术领域,尤其涉及一种流水号生成方法及装置。
背景技术
金融机构的支付系统中每天都需要生成大量的流水号。金融机构的支付系统一般部署在一个分布式集群中,集群中的每个主机都会生成流水号,如订单流水号。然而,支付系统一般要处理的数据量非常庞大,对支付系统的访问是高并发访问,在短时间内可能就需要生成数以万计的流水号,且流水号在整个分布式集群范围内都不能重复。
然而,目前的技术方案中流水号大多基于时间戳生成,这就非常依赖所在主机的系统时钟的稳定性。如果主机的系统时钟发生了调整,如将系统时间由21:00前拨为20:30,这样以来,在系统时钟前拨之前已经生成的时间戳仍然有可能再次生成,尽管流水号的生成结构中包含随机数,但相同的时间戳仍然极大增加了生成重复流水号的几率,可能会导致金融机构的致命错误。
发明内容
本发明提供一种流水号生成方法及装置,解决了现有技术中但相同的时间戳极大增加了生成重复流水号的几率的问题。
第一方面,本发明提供一种流水号生成方法,包括:获取第一时间戳和第二时间戳;所述第一时间戳是系统时钟为第i流水号生成的时间戳;所述第二时间戳是系统时钟为第i+1流水号生成的时间戳;i为正整数;若所述第二时间戳不迟于所述第一时间戳,则更新系统时钟的第一时钟版本为第二时钟版本;至少根据主机的主机标识、所述第二时钟版本和系统时钟生成的时间戳,生成流水号。
上述方法中,获取第一时间戳和第二时间戳后,若所述第二时间戳不迟于所述第一时间戳,说明第一时间戳和第二时间戳重复,那么通过引入时钟版本,且将所述第一系统时钟的第一时钟版本更新为第二时钟版本,从而通过时钟版本区分两个系统时钟下可能生成的相同时间戳,并根据更新后的所述第二时钟版本、主机标识和所述第二系统时钟生成的时间戳,生成流水号,因此不会因为系统时钟调整增加生成重复流水号的几率。
可选的,所述获取第一时间戳和第二时间戳之前,还包括:确定系统时钟从第一系统时钟调整为第二系统时钟;所述第一时间戳为:所述第一系统时钟调整为所述第二系统时钟之前,所述第一系统时钟生成的最迟时间戳;所述第二时间戳为:所述第一系统时钟调整为所述第二系统时钟之后,所述第二系统时钟生成的最早时间戳;所述更新系统时钟的第一时钟版本为第二时钟版本,包括:将所述第二时钟版本作为所述第二系统时钟的时钟版本。
上述方法中,在确定系统时钟从第一系统时钟调整为第二系统时钟后,获取所述第一系统时钟生成的最迟时间戳和所述第二系统时钟生成的最早时间戳,那么只要所述第二时间戳不迟于所述第一时间戳,是有可能出现时间戳相同情况的,因此将所述第二时钟版本作为所述第二系统时钟的时钟版本,便能将不同系统时钟生成的相同时间戳区分出来。
可选的,所述至少根据主机的主机标识、所述第二时钟版本和系统时钟生成的时间戳,生成流水号,包括:根据混淆信息、所述主机标识、所述第二时钟版本和所述系统时钟生成的时间戳,生成流水号;所述混淆信息包括自增序列号和\或随机数。
上述方法中,通过混淆信息,能够进一步地增加流水号的随机性,降低流水号重复的概率。
可选的,所述自增序列号的位数是根据历史单位时间内系统生成流水号的最大需求数量确定的。
上述方式下,历史单位时间内系统生成流水号的最大需求数量决定了流水号生成相同时间戳的可能性,如果据此设置合适的所述自增序列号的位数,可以通过自增序列号进一步区分相同时间戳,生成不同的流水号。
可选的,所述系统时钟生成的时间戳的精确度至少为毫秒级。
上述方式下,通过毫秒级以上的精确度,降低了所述系统时钟生成的时间戳的重复可能性。
可选的,所述第一时钟版本和所述第二时钟版本为连续递增的两个时钟版本。
上述方式下,连续递增的两个时钟版本,增加了时钟版本的可辨识性,从而能够通过流水号中的时钟版本知悉系统时钟变更的情况。
可选的,若所述第二时间戳迟于所述第一时间戳,则将所述第一时钟版本继续作为系统时钟的时钟版本;至少根据所述主机标识、所述第一时钟版本和系统时钟生成的时间戳,生成流水号。
上述方式下,若所述第二时间戳迟于所述第一时间戳,则已不可能生成相同的时间戳,也不需要生成新的时钟版本,从而将所述第一时钟版本继续作为系统时钟的时钟版本,节约了时钟版本。
第二方面,本发明提供一种流水号生成装置,包括:获取模块,用于获取第一时间戳和第二时间戳;所述第一时间戳是系统时钟为第i流水号生成的时间戳;所述第二时间戳是系统时钟为第i+1流水号生成的时间戳;i为正整数;处理模块,用于若所述第二时间戳不迟于所述第一时间戳,则更新系统时钟的第一时钟版本为第二时钟版本;至少根据主机的主机标识、所述第二时钟版本和系统时钟生成的时间戳,生成流水号。
可选的,所述处理模块还用于:确定系统时钟从第一系统时钟调整为第二系统时钟;所述第一时间戳为:所述第一系统时钟调整为所述第二系统时钟之前,所述第一系统时钟生成的最迟时间戳;所述第二时间戳为:所述第一系统时钟调整为所述第二系统时钟之后,所述第二系统时钟生成的最早时间戳;所述处理模块具体用于:将所述第二时钟版本作为所述第二系统时钟的时钟版本。
可选的,所述处理模块具体用于:根据混淆信息、所述主机标识、所述第二时钟版本和所述系统时钟生成的时间戳,生成流水号;所述混淆信息包括自增序列号和\或随机数。
可选的,所述自增序列号的位数是根据历史单位时间内系统生成流水号的最大需求数量确定的。
可选的,所述系统时钟生成的时间戳的精确度至少为毫秒级。
可选的,所述第一时钟版本和所述第二时钟版本为连续递增的两个时钟版本。
可选的,若所述第二时间戳迟于所述第一时间戳,则将所述第一时钟版本继续作为系统时钟的时钟版本;至少根据所述主机标识、所述第一时钟版本和系统时钟生成的时间戳,生成流水号。
上述第二方面及第二方面各个可选装置的有益效果,可以参考上述第一方面及第一方面各个可选方法的有益效果,这里不再赘述。
第三方面,本发明提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法。
第四方面,本发明提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种流水号生成方法对应的流程示意图;
图2为本发明实施例提供的一种流水号生成方法中流水号的结构示意图;
图3为本发明实施例提供的一种流水号生成方法对应的具体流程示意图;
图4为本发明实施例提供的一种流水号生成装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
金融机构的支付系统中每天都需要生成大量的流水号。金融机构的支付系统一般部署在一个分布式集群中,流水号在整个分布式集群范围内都不能重复。然而,目前的技术方案中流水号大多基于时间戳生成,这就非常依赖所在主机的系统时钟的稳定性。如果主机的系统时钟发生了调整,已经生成的时间戳仍然有可能再次生成,尽管流水号的生成结构中包含随机数,但相同的时间戳仍然极大增加了生成重复流水号的几率,可能会导致金融机构的致命错误。
为此,如图1所示,本申请实施例提供一种流水号生成方法。
步骤101:获取第一时间戳和第二时间戳。
所述第一时间戳是系统时钟为第i流水号生成的时间戳;所述第二时间戳是系统时钟为第i+1流水号生成的时间戳;i为正整数。
步骤102:若所述第二时间戳不迟于所述第一时间戳,则更新系统时钟的第一时钟版本为第二时钟版本。
步骤103:至少根据主机的主机标识、所述第二时钟版本和系统时钟生成的时间戳,生成流水号。
需要说明的是,第i流水号和第i+1流水号为连续的流水号,系统时钟是有时钟版本属性的,如果所述第二时间戳不迟于所述第一时间戳,那么在不更新时钟版本的情况下仍然有可能生成重复的时间戳,引入时钟版本后,可以区分相同的时间戳。
一种可选实施方式中,步骤101之前可能的情形为:确定系统时钟从第一系统时钟调整为第二系统时钟。
所述第一时间戳为:所述第一系统时钟调整为所述第二系统时钟之前,所述第一系统时钟生成的最迟时间戳;所述第二时间戳为:所述第一系统时钟调整为所述第二系统时钟之后,所述第二系统时钟生成的最早时间戳。
这种情形下,步骤102中更新系统时钟的第一时钟版本为第二时钟版本的具体步骤如下:
将所述第二时钟版本作为所述第二系统时钟的时钟版本。
举例来说,系统时钟为第一系统时钟clock1,时钟版本为v1,如在2020年09月20日21时29分05秒的时刻,时钟clock1生成了第一时间戳为20200920212905,流水号中会包括时钟版本和第一时间戳,即v120200920212905。clock1在21时30分时,前拨了30分钟,系统时钟调整为了第二系统时钟clock2,clock2从21时00分开始计时,如在2020年09月20日21时01分05秒的时刻,时钟clock2生成了第二时间戳为20200920210105,显然第二时间戳不迟于第一时间戳,那么便将版本v1更新为v2。如果第二系统时钟重新计时后,再回到2020年09月20日21时29分05秒的时刻,时间戳生成为20200920212905,从而流水号中也会包括时钟版本和第二时间戳,即v220200920212905,从而可以通过v1和v2将之前v1版本生成的时间戳与v2版本生成的时间戳区分开来。
需要说明的是,为了解决系统时钟调整导致的流水号重复问题,还可以使用统一稳定的系统时钟的服务器生成时间戳,每次生成流水号的时候都远程调用一次时钟服务器,生成时间戳。
步骤102所针对的情形是,所述第二时间戳不迟于所述第一时间戳。另一种情形如下:
若所述第二时间戳迟于所述第一时间戳,则将所述第一时钟版本继续作为系统时钟的时钟版本;至少根据所述主机标识、所述第一时钟版本和系统时钟生成的时间戳,生成流水号。
举例来说,系统时钟为第一系统时钟clock1,时钟版本为v1,如在2020年09月20日21时23分05秒的时刻,时钟clock1生成了第一时间戳为20200920212305,流水号中会包括时钟版本和第一时间戳,即v120200920212305。clock1在21时30分时,前拨了5分钟,系统时钟调整为了第二系统时钟clock2,clock2从21时25分开始计时,如在2020年09月20日21时25分05秒的时刻,时钟clock2生成了第二时间戳为20200920212505,显然第二时间戳迟于第一时间戳,那么往后生成的时间戳也不会好第一时间戳及之前的时间戳重复,继续用第一时钟版本即可,也能将同一时刻的时间戳区分开来。
一种可选实施方式中,步骤103具体可以为:
根据混淆信息、所述主机标识、所述第二时钟版本和所述系统时钟生成的时间戳,生成流水号;所述混淆信息包括自增序列号和\或随机数。
需要说明的即便是同一时钟版本下,仍然有可能生成相同的时间戳。举例来说,若时间戳的精确度在秒级,可能出现一秒内收到多个生成流水号请求的情况,那么会在一秒内生成多个相同时间戳的流水号。那么可以通过增加混淆信息进一步区分这些相同时间戳的流水号,主机标识可以唯一标识在集群中生成订单号的一台主机,具体可以根据IP地址得到。自增序列号可以是连续递增的,如000、001、002、003…999;也可以按照一定规律递增,如先奇数递增,再偶数递增如先000、002、004…998,再001、003、005…999。而随机数是进一步增加流水号随机性的,进一步降低生成重复流水号的几率。
需要说明的是,一种可选实施方式中,所述自增序列号的位数是根据历史单位时间内系统生成流水号的最大需求数量确定的。
举例来说,如果历史单位时间内(如1秒内),系统生成流水号的最大需求数量为900,那么十进制下只需要所述自增序列号3位数即可完全区分出生成的900个流水号。
一种可选实施方式中,所述系统时钟生成的时间戳的精确度至少为毫秒级。
举例来说,精确度为毫秒级,时间戳的格式为“年月日时分秒毫秒”,如2020年09月20日22时23分05秒002毫秒,时间戳为202009 20222305 002。
一种可选实施方式中,所述第一时钟版本和所述第二时钟版本为连续递增的两个时钟版本。
上述方法中,通过设置连续的时钟版本,如v1和v2,那么可以指示出系统时钟的调整的信息。
综合图1示出的方法,流水号的结构具体如图2所示,包括以下部分:
时钟版本(clockVersion):可以标识当前时钟调整的次数。如当前生成的时间戳比上次生成的时间戳小,版本号可以自增加一,以保证流水号整体的有序性。该部分长度可自定义,考虑到系统时钟调整频率很低,且分前拨和后拨,只有前拨需要调整时钟版本,而,6位长度可支持100万次时钟前拨,足够保障整体的递增性,超过100万次(自增到999999)后重新从0开始。
时间戳(timestamp):时间戳为系统时钟的当前时刻,格式可以为YYYYMMDDHHMMSS格式生成,一共14位,如20200804102601。
主机标识(machineId):主机标识的长度可自定义,长度越长,集群支持的主机数越多。生成规则可根据IP进行映射,如下表所示。
IP | 主机标识 |
192.168.1.1 | 0 |
192.168.1.2 | 1 |
表1IP地址和主机标识的映射表
自增序列号(sequence):长度可自定义,从0开始递增,自增到最大值后,重新从0开始。
随机数(randomNumber):长度可自定义,随机数的作用是为了防穷举和攻击。
图1示出的方法下,由于考虑了时钟调整的情况,在流水号组成中添加了时钟版本,即使发生了时钟前拨,也能保证生成的流水号不会重复。还可以设置时钟版本是递增生成,整体上能保证流水号的有序性。其次该方法能够在集群的各台主机上独立执行,执行效率高,扩展性强,非常适合分布式集群环境使用。上述方法中,考虑到了分布式系统集群环境下主机的系统时钟的不稳定性,提出了在流水号的组成部分中新增时钟版本的解决方案,很好的解决了时钟调整导致的流水号重复问题。
下面结合图3,详细说明本申请提供的一种流水号生成方法。
步骤(1):获取流水号的上次生成时间戳prevTime(第一时间戳)和系统时钟的当前时间戳(第二时间戳)。如果是第一次获取流水号,上次生成时间戳(第一时间戳)prevTime为0。本机时钟当前时间戳currTime用以作为流水号ID中的时间戳组成部分。
步骤(2):比较上次生成时间戳prevTime和本机时钟当前时间戳currTime。如果currTime大于等于prevTime,时钟版本clockVersion无需调整,如果currTime小于prevTime,说明发生时钟前拨的情况,时钟版本clockVersion自增加一,并且进行持久化保存,以便应用重启后能够重新读取到最新的时钟版本。
步骤(3):分别获取主机标识、自增序列号和随机数。
步骤(4):按照流水号组成规则拼接时钟版本clockVersion、时间戳timestamp、机器号machineId、自增序号sequence和随机数randomNumber,拼接时各组成项若位数不足,组成项前部以0补充。
步骤(5):将上次获取时间prevTime替换为本次生成时间戳currTime,以供下次生成比较。
步骤(6):返回流水号。
如图4所示,本发明提供一种流水号生成装置,包括:获取模块401,用于获取第一时间戳和第二时间戳;所述第一时间戳是系统时钟为第i流水号生成的时间戳;所述第二时间戳是系统时钟为第i+1流水号生成的时间戳;i为正整数;处理模块402,用于若所述第二时间戳不迟于所述第一时间戳,则更新系统时钟的第一时钟版本为第二时钟版本;至少根据主机的主机标识、所述第二时钟版本和系统时钟生成的时间戳,生成流水号。
可选的,所述处理模块402还用于:确定系统时钟从第一系统时钟调整为第二系统时钟;所述第一时间戳为:所述第一系统时钟调整为所述第二系统时钟之前,所述第一系统时钟生成的最迟时间戳;所述第二时间戳为:所述第一系统时钟调整为所述第二系统时钟之后,所述第二系统时钟生成的最早时间戳;所述处理模块402具体用于:将所述第二时钟版本作为所述第二系统时钟的时钟版本。
可选的,所述处理模块402具体用于:根据混淆信息、所述主机标识、所述第二时钟版本和所述系统时钟生成的时间戳,生成流水号;所述混淆信息包括自增序列号和\或随机数。
可选的,所述自增序列号的位数是根据历史单位时间内系统生成流水号的最大需求数量确定的。
可选的,所述系统时钟生成的时间戳的精确度至少为毫秒级。
可选的,所述第一时钟版本和所述第二时钟版本为连续递增的两个时钟版本。
可选的,若所述第二时间戳迟于所述第一时间戳,则将所述第一时钟版本继续作为系统时钟的时钟版本;至少根据所述主机标识、所述第一时钟版本和系统时钟生成的时间戳,生成流水号。
基于同一发明构思,本发明实施例还提供了一种计算机设备,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的流水号生成方法及任一可选方法被执行。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的流水号生成方法及任一可选方法被执行。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种流水号生成方法,其特征在于,包括:
获取第一时间戳和第二时间戳;所述第一时间戳是系统时钟为第i流水号生成的时间戳;所述第二时间戳是系统时钟为第i+1流水号生成的时间戳;i为正整数;
若所述第二时间戳不迟于所述第一时间戳,则更新系统时钟的第一时钟版本为第二时钟版本;
至少根据主机的主机标识、所述第二时钟版本和系统时钟生成的时间戳,生成流水号。
2.如权利要求1所述的方法,其特征在于,所述获取第一时间戳和第二时间戳之前,还包括:
确定系统时钟从第一系统时钟调整为第二系统时钟;
所述第一时间戳为:所述第一系统时钟调整为所述第二系统时钟之前,所述第一系统时钟生成的最迟时间戳;所述第二时间戳为:所述第一系统时钟调整为所述第二系统时钟之后,所述第二系统时钟生成的最早时间戳;
所述更新系统时钟的第一时钟版本为第二时钟版本,包括:
将所述第二时钟版本作为所述第二系统时钟的时钟版本。
3.如权利要求1所述的方法,其特征在于,所述至少根据主机的主机标识、所述第二时钟版本和系统时钟生成的时间戳,生成流水号,包括:
根据混淆信息、所述主机标识、所述第二时钟版本和所述系统时钟生成的时间戳,生成流水号;所述混淆信息包括自增序列号和\或随机数。
4.如权利要求3所述的方法,其特征在于,所述自增序列号的位数是根据历史单位时间内系统生成流水号的最大需求数量确定的。
5.如权利要求1至4任一所述的方法,其特征在于,所述系统时钟生成的时间戳的精确度至少为毫秒级。
6.如权利要求1至4任一所述的方法,其特征在于,所述第一时钟版本和所述第二时钟版本为连续递增的两个时钟版本。
7.如权利要求1至4任一所述的方法,其特征在于,还包括:
若所述第二时间戳迟于所述第一时间戳,则将所述第一时钟版本继续作为系统时钟的时钟版本;
至少根据所述主机标识、所述第一时钟版本和系统时钟生成的时间戳,生成流水号。
8.一种流水号生成装置,其特征在于,包括:
获取模块,用于获取第一时间戳和第二时间戳;所述第一时间戳是系统时钟为第i流水号生成的时间戳;所述第二时间戳是系统时钟为第i+1流水号生成的时间戳;i为正整数;
处理模块,用于若所述第二时间戳不迟于所述第一时间戳,则更新系统时钟的第一时钟版本为第二时钟版本;至少根据主机的主机标识、所述第二时钟版本和系统时钟生成的时间戳,生成流水号。
9.一种计算机设备,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至7中任意一项所述的方法被执行。
10.一种计算机可读存储介质,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至7中任意一项所述的方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011078375.1A CN112182005A (zh) | 2020-10-10 | 2020-10-10 | 一种流水号生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011078375.1A CN112182005A (zh) | 2020-10-10 | 2020-10-10 | 一种流水号生成方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112182005A true CN112182005A (zh) | 2021-01-05 |
Family
ID=73947351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011078375.1A Pending CN112182005A (zh) | 2020-10-10 | 2020-10-10 | 一种流水号生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112182005A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113408246A (zh) * | 2021-06-30 | 2021-09-17 | 商盟商务服务有限公司 | 获取单号的方法、装置及系统 |
CN114282968A (zh) * | 2021-12-22 | 2022-04-05 | 中国农业银行股份有限公司 | 一种流水号的获取方法、装置、服务器和存储介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020058A (zh) * | 2011-09-21 | 2013-04-03 | 阿里巴巴集团控股有限公司 | 一种多版本数据获取方法和装置 |
CN105072160A (zh) * | 2015-07-17 | 2015-11-18 | 联动优势科技有限公司 | 一种流水号生成方法、装置及服务器 |
CN109639775A (zh) * | 2018-11-27 | 2019-04-16 | 湖南蚁为软件有限公司 | 全局单调递增id生成方法、装置、系统及设备 |
CN109739684A (zh) * | 2018-11-20 | 2019-05-10 | 清华大学 | 基于向量时钟的分布式键值数据库的副本修复方法与装置 |
CN109739836A (zh) * | 2018-12-29 | 2019-05-10 | 上海交通大学 | 用于多版本数据库选取和更新时间戳的方法和系统 |
CN110147281A (zh) * | 2019-05-15 | 2019-08-20 | 上海淇毓信息科技有限公司 | 优化雪花算法在金融业务中应用的方法、装置、电子设备 |
CN110457335A (zh) * | 2019-08-09 | 2019-11-15 | 重庆紫光华山智安科技有限公司 | 一种身份标识生成方法、装置以及计算机可读存储介质 |
CN110554732A (zh) * | 2019-08-22 | 2019-12-10 | 北京奇艺世纪科技有限公司 | 一种标识号生成方法、生成装置、电子设备及存储介质 |
CN110619114A (zh) * | 2019-09-26 | 2019-12-27 | 北京明略软件系统有限公司 | 流水号生成方法及系统 |
CN110830608A (zh) * | 2019-11-14 | 2020-02-21 | 腾讯科技(深圳)有限公司 | 一种全局唯一标识符生成方法、装置、设备及存储介质 |
US20200159843A1 (en) * | 2018-11-19 | 2020-05-21 | Clover Health | Generating tables using data records |
CN111680052A (zh) * | 2020-06-02 | 2020-09-18 | 深圳前海微众银行股份有限公司 | 一种生成身份标识号的方法及装置 |
CN111694792A (zh) * | 2020-05-29 | 2020-09-22 | 中国建设银行股份有限公司 | 一种基于snowflake的标识生成方法和装置 |
-
2020
- 2020-10-10 CN CN202011078375.1A patent/CN112182005A/zh active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020058A (zh) * | 2011-09-21 | 2013-04-03 | 阿里巴巴集团控股有限公司 | 一种多版本数据获取方法和装置 |
CN105072160A (zh) * | 2015-07-17 | 2015-11-18 | 联动优势科技有限公司 | 一种流水号生成方法、装置及服务器 |
US20200159843A1 (en) * | 2018-11-19 | 2020-05-21 | Clover Health | Generating tables using data records |
CN109739684A (zh) * | 2018-11-20 | 2019-05-10 | 清华大学 | 基于向量时钟的分布式键值数据库的副本修复方法与装置 |
CN109639775A (zh) * | 2018-11-27 | 2019-04-16 | 湖南蚁为软件有限公司 | 全局单调递增id生成方法、装置、系统及设备 |
CN109739836A (zh) * | 2018-12-29 | 2019-05-10 | 上海交通大学 | 用于多版本数据库选取和更新时间戳的方法和系统 |
CN110147281A (zh) * | 2019-05-15 | 2019-08-20 | 上海淇毓信息科技有限公司 | 优化雪花算法在金融业务中应用的方法、装置、电子设备 |
CN110457335A (zh) * | 2019-08-09 | 2019-11-15 | 重庆紫光华山智安科技有限公司 | 一种身份标识生成方法、装置以及计算机可读存储介质 |
CN110554732A (zh) * | 2019-08-22 | 2019-12-10 | 北京奇艺世纪科技有限公司 | 一种标识号生成方法、生成装置、电子设备及存储介质 |
CN110619114A (zh) * | 2019-09-26 | 2019-12-27 | 北京明略软件系统有限公司 | 流水号生成方法及系统 |
CN110830608A (zh) * | 2019-11-14 | 2020-02-21 | 腾讯科技(深圳)有限公司 | 一种全局唯一标识符生成方法、装置、设备及存储介质 |
CN111694792A (zh) * | 2020-05-29 | 2020-09-22 | 中国建设银行股份有限公司 | 一种基于snowflake的标识生成方法和装置 |
CN111680052A (zh) * | 2020-06-02 | 2020-09-18 | 深圳前海微众银行股份有限公司 | 一种生成身份标识号的方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113408246A (zh) * | 2021-06-30 | 2021-09-17 | 商盟商务服务有限公司 | 获取单号的方法、装置及系统 |
CN114282968A (zh) * | 2021-12-22 | 2022-04-05 | 中国农业银行股份有限公司 | 一种流水号的获取方法、装置、服务器和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108647357B (zh) | 数据查询的方法及装置 | |
CN105989059B (zh) | 数据记录核对方法及装置 | |
CN112182005A (zh) | 一种流水号生成方法及装置 | |
CN108228814A (zh) | 数据同步方法及装置 | |
CN107800733B (zh) | 分布式系统中会话标识的生成方法及设备 | |
CN112286939A (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN110602158A (zh) | 全局唯一id生成系统与方法、id生成器与存储介质 | |
US20210081260A1 (en) | Management of application programming interface (api) retention | |
CN114979158B (zh) | 一种资源监控方法、系统、设备及计算机可读存储介质 | |
CN109951541A (zh) | 一种流水号生成方法及服务器 | |
CN111708775B (zh) | 自增id生成方法、装置及系统 | |
CN112069260B (zh) | 数据存储及对账方法和系统 | |
CN110543472A (zh) | 数据对账方法及相关装置 | |
CN111639132B (zh) | 日志同步方法及设备 | |
CN111158837B (zh) | 银行软件功能界面生成方法和装置 | |
CN117472282A (zh) | 基于分布式存储系统的序列号生成方法、装置及电子设备 | |
CN112541040A (zh) | 一种流水号生成方法和装置 | |
CN116737461A (zh) | 文件数据备份方法、系统及存储介质 | |
CN103490856B (zh) | 用于深空探测的Mark5B格式VLBI数据接收解码与纠错系统及方法 | |
CN116306508A (zh) | 一种日期数据转换方法及装置 | |
US20190116238A1 (en) | Cache management using a probabilistic data structure | |
CN113037420B (zh) | 读时间戳的获取方法和装置、电子设备和存储介质 | |
CN115964436A (zh) | 一种数据库集群管理的方法和装置 | |
CN113382088A (zh) | 手机银行消息推送方法及装置 | |
CN112445800A (zh) | 一种数据流水号的生成方法、系统及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |