CN111353773B - 标识的处理方法和装置、存储介质、电子装置 - Google Patents
标识的处理方法和装置、存储介质、电子装置 Download PDFInfo
- Publication number
- CN111353773B CN111353773B CN202010113450.7A CN202010113450A CN111353773B CN 111353773 B CN111353773 B CN 111353773B CN 202010113450 A CN202010113450 A CN 202010113450A CN 111353773 B CN111353773 B CN 111353773B
- Authority
- CN
- China
- Prior art keywords
- identification
- target
- identifier
- sequence
- single 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 54
- 230000015654 memory Effects 0.000 claims description 48
- 238000004590 computer program Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 125000004122 cyclic group Chemical group 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000001502 supplementing effect Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/10—Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
- G06Q20/108—Remote banking, e.g. home banking
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/385—Payment protocols; Details thereof using an alias or single-use codes
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/02—Banking, e.g. interest calculation or account maintenance
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Technology Law (AREA)
- Marketing (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种标识的处理方法和装置、存储介质、电子装置。其中,该方法包括:接收到单号请求,单号请求用于请求生成单号;从目标标识序列段中查找未被使用过的第一标识,目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取的,标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,互不重复的标识序列段包括目标标识序列段;响应于单号请求,返回根据查找到的第一标识生成的单号。本申请解决了相关技术中生成单号的方式不能保证全局唯一的技术问题。
Description
技术领域
本申请涉及互联网领域,具体而言,涉及一种标识的处理方法和装置、存储介质、电子装置。
背景技术
在实际生产业务处理过程中,需要生成各种单号来标识当前的业务处理过程或者关联的要素,如通过支付请求号标识一次支付请求,通过银行订单号标识一笔支付订单,通过商户号来标识一个商户,通过银行卡号表示一张银行卡。为了保证单号与被标识要素的一一对应,需要确保单号的全局唯一,避免因为单号重复造成的各种意外,如用户A和用户B的银行卡的卡号相同,当A付款时可能从用户B的银行卡扣款进而造成用户B同一银行卡的余额会跟着减少。这里的全局唯一是指在已经生成的所有同类型的单号中该单号是唯一的,比如生成银行订单号时需要确保该银行订单号在同一银行通道比如网联下的唯一。
发明人通过对相关技术进行分析,认识到相关技术中一般是采用随机生成的数字与商户信息相拼接的方式形成单号,但是考虑到对于同一商户,其商户信息是固定的,若其请求的单号较多,那么就可能生成重复的随机数,从而生成重复的单号。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种标识的处理方法和装置、存储介质、电子装置,以至少解决相关技术中生成单号的方式不能保证全局唯一的技术问题。
根据本申请实施例的一个方面,提供了一种标识的处理方法,包括:接收到单号请求,单号请求用于请求生成单号;从目标标识序列段中查找未被使用过的第一标识,目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取的,标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,互不重复的标识序列段包括目标标识序列段;响应于单号请求,返回根据查找到的第一标识生成的单号。
根据本申请实施例的另一方面,还提供了一种标识的处理方法,包括:接收到标识请求,其中,标识请求用于为目标业务应用请求标识序列段;从第一缓存的标识序列中查找未被使用过的目标标识序列段,其中,第一缓存是标识服务的多个缓存中的主缓存,标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,互不重复的标识序列段包括目标标识序列段;响应于标识请求,返回目标标识序列段。
根据本申请实施例的另一方面,还提供了一种标识的处理装置,包括:第一接收单元,用于接收到单号请求,其中,单号请求用于请求生成单号;第一查找单元,用于从目标标识序列段中查找未被使用过的第一标识,其中,目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取的,标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,互不重复的标识序列段包括目标标识序列段;第一返回单元,用于响应于单号请求,返回根据查找到的第一标识生成的单号。
根据本申请实施例的另一方面,还提供了一种标识的处理装置,包括:第二接收单元,用于接收到标识请求,其中,标识请求用于为目标业务应用请求标识序列段;第二查找单元,用于从第一缓存的标识序列中查找未被使用过的目标标识序列段,其中,第一缓存是标识服务的多个缓存中的主缓存,标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,互不重复的标识序列段包括目标标识序列段;第二返回单元,用于响应于标识请求,返回目标标识序列段。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。
根据本申请实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。
在本申请实施例中,目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取后保存在本地的,生成单号是直接在本地利用自增的目标标识序列段生成单号,从而避免了与非本地数据库的交互,消除了数据库宕机对本地服务的影响,且对本地缓存的读写速度明显高于非本地的数据库,消除了数据库带来的性能瓶颈;生成单号时可以生成较短的单号(如直接将标识作为单号),由于目标标识序列段是以序列的形式存在,可以按需生成自增的单号。另外,标识服务的缓存可为目标业务应用提供互不重复的标识序列段,利用标识序列段生成的标识自然也是不重复的,从而可以解决相关技术中生成单号的方式不能保证全局唯一的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的标识的处理方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的标识的处理方法的流程图;
图3是根据本申请实施例的一种可选的标识的处理方法的流程图;
图4是根据本申请实施例的一种可选的标识的处理装置的示意图;
图5是根据本申请实施例的一种可选的标识的处理装置的示意图;
以及
图6是根据本申请实施例的一种服务器的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
Lua是一个小巧的脚本语言。Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。
Redis(全称:Remote Dictionary Server远程字典服务)是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
为了确保单号的全局唯一,单号可由两个部分的子单号拼接而来,其中一个部分用来标识特定的业务属性(如业务1采用的标识为“0001”,业务2采用的标识为“0002”),另一个部分是无实际业务含义的字符串,以银行卡号6226011234568为例,卡号中的卡bin值622601用来标识该银行卡的发卡行,后面的12345678则无任何含义。如果单号只是在业务系统内部小范围使用,则可以只由后面的无任何业务含义的字符串构成,例如只在支付系统中使用的支付请求号,因为这种场景下只需要确保小范围内的全局唯一即可,本申请的技术方案可用于直接生成这种类型的单号,也可用来生成由前述两个部分构成的单号中的无任何业务含义的字符串,以保证最终生成的单号的全局唯一性。
根据本申请实施例的一方面,提供了一种标识的处理方法的方法实施例。
可选地,在本实施例中,上述标识的处理方法可以应用于如图1所示的由服务器101和缓存系统103所构成的硬件环境中。如图1所示,服务器101通过网络与缓存系统进行连接,缓存系统可用于为服务器提供服务(如标识段的分配服务等),服务器用于利用所分配的标识段为请求方(如用户终端、业务服务器等)生成单号。上述网络包括但不限于:广域网、城域网或局域网。
本申请实施例的标识的处理方法可以由第一服务器101来执行,图2是根据本申请实施例的一种可选的标识的处理方法的流程图,如图2所示,该方法可以包括以下步骤:
步骤S202,服务器接收到单号请求,单号请求用于请求生成单号。
步骤S204,服务器从目标标识序列段中查找未被使用过的第一标识,目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取的,标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,互不重复的标识序列段包括目标标识序列段,上述多个缓存包括主缓存和备用缓存。
上述标识为可用于其标识作用的字符,如数字字符(如123)、英文字符(如abc)、中文字符等,后续以数字字符为例进行详述。
上述标识服务可以通过一个或者多个设备来承载,如通过一个标识服务器来承载;上述的多个缓存是由标识服务器管理的至少两个Redis实例缓存(也可以采用其他类型的缓存替代,如ehcache、memcache),Redis是一个开源的基于内存的支持高并发的缓存组件,其他应用程序通过Redis定义的网络通信协议与其交互,如本申请可基于内存与其交互,Redis的所有数据全部放在内存中管理,所有数据的读写操作完全是在内存中完成,正常情况下不需要跟磁盘直接交互,因此读写操作非常快,处理一次读写请求耗时在1ms内。因为数据没有直接写入磁盘中,所以在断电服务器宕机时,考虑到此种情况Redis存放在内存中的数据容易丢失,不能依赖单一的Redis来保存关键数据,所以采用的主备机制来避免数据丢失。
Redis本身处理读写请求时采用的是单线程,所有的读写请求按照请求的先后顺序依次排队等待处理,这个效果就等同于数据库的行锁,但是因为Redis在底层实现上没有复杂的加锁解锁逻辑,所以性能比数据库的行锁更高,支持更高的并发,至少是5倍以上。
上述的多个缓存有主缓存和备用缓存之分,即其中至少一个是主缓存、至少一个是备用缓存,主备缓存只是逻辑层面的概念,如果主缓存因为网络或者断电等故障不可用,核实后可将备用缓存标记成主缓存,原来的主缓存变成备用缓存,从而实现缓存组件的高可用。应用程序会在启动时依次同多个缓存实例建立连接,即应用程序在必要时也可直接访问备用缓存,从而确保应用程序可以无缝的从备用缓存切换到主缓存。
步骤S206,响应于单号请求,服务器返回根据查找到的第一标识生成的单号,生成的单号包括该第一标识。
在生成无任何业务含义的字符串(即上述标识)形式的单号时,可基于数据库的全局自增序列生成,如在关系型数据库(如Mysql数据库)中保存序列的当前值,请求数据库获取新的单号时,数据库会将当前值自增一个值,将自增后的值返回,作为新单号,如当前数据库中保存的序列当前值是00001,获取新单号时,数据库在00001的基础上自增1变成00002,00002作为新的单号被返回,该方法是通过数据库的行锁来确保每次获取新单号时只允许一个线程完成序列的自增操作,行锁是指对数据库的某一行记录加锁,同一时刻只允许一个线程操作这行记录,如果有多个线程同时操作这行记录则按照请求的先后顺序排队逐一处理,从而确保单号的全局唯一。
在生成无任何业务含义的字符串(即上述标识)形式的单号时,还可基于机器属性的本地自增序列生成,先基于当前机器的IP(即网络地址)、网卡MAC地址(即物理地址)以及当前时间等唯一属性生成一个唯一的字符串,记为A,然后在一个指定的范围内生成一个随机数作为该随机数的起点,记为B,获取新单号时将该随机数B自增一个值得到C,将A和自增后的值C拼在一起返回即可,比如基于机器属性生成的唯一字符串为54367,生成的随机数为45001,获取下一个单号时,自增1得到45002,返回5436745002,这种方法是通过前面基于机器属性生成的唯一字符串A以及随机生成的起点B两重措施来确保单号时全局唯一的。
上述第一种方法依赖于数据库的行锁,由于强依赖于数据库提供唯一的序列值,受限于数据库的性能瓶颈,最多支持每秒1万次单号自增操作,不能满足目前的需求;强依赖于数据库,数据库宕机导致无法生成新的单号;上述第二种方法依赖于两次随机来确保单号唯一,不适用于长度较短的单号,如6位的单号,因为长度越短,随机出的数字重复概率越大,另外该方法生成的序列在整体上是随机的,无法适用于要求单号是自增序列的特殊场景,比如员工的工号。
而在本申请的技术方案中,目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取后保存在本地的,生成单号是直接在本地利用自增的目标标识序列段生成单号,从而避免了与非本地数据库的交互,消除了数据库宕机对本地服务的影响,且对本地缓存的读写速度明显高于非本地的数据库,消除了数据库带来的性能瓶颈;生成单号时可以生成较短的单号(如直接将标识作为单号),由于目标标识序列段是以序列的形式存在,可以按需生成自增的单号。另外,标识服务的缓存可为目标业务应用提供互不重复的标识序列段,利用标识序列段生成的标识自然也是不重复的,从而可以解决相关技术中生成单号的方式不能保证全局唯一的技术问题。下面结合图2所示的步骤进一步详述本申请的技术方案。
在步骤S202提供的技术方案中,服务器接收到单号请求,单号请求用于请求生成单号。
上述服务器可为一个业务服务生成单号,也可为不同的多个业务服务生成单号,如为订单服务、支付服务、金融服务等生成单号。
对于每一种业务服务,可以通过一个设备集群来实现,这个设备集群中的多个设备可向服务器申请单号,此时,就需要保证这多个设备申请的单号不重复,具体可以通过下文的方式实现。
在步骤S204提供的技术方案中,服务器从目标标识序列段中查找未被使用过的第一标识。
在上述实施例中,在从目标标识序列段中查找未被使用过的第一标识时,若是第一次为目标业务应用申请单号,可以在查找到与目标业务应用关联的第一数据对象之前,按照如下步骤1-步骤3进行初始化:
步骤1,与目标业务应用关联的配置信息(如目标业务应用的名称、单号组成、单号拼接规则等)保存在数据库中,故可从数据库中读取与目标业务应用关联的配置信息。
步骤2,按照配置信息生成与目标业务应用关联的第一数据对象,如在服务器本地创建一个以目标业务应用的名称命名的数据对象。
步骤3,将从标识服务的第一缓存中获取到的第二标识序列段保存在第一数据对象中。
在上述实施例中,在从目标标识序列段中查找未被使用过的第一标识时,可以通过如下步骤4-步骤8实现:
步骤4,查找与目标业务应用关联的第一数据对象,第一数据对象为用于保存标识序列段的对象。
步骤5,查看第一数据对象当前保存的第一标识序列段中是否存在未使用的标识,目标标识序列段包括第一标识序列段。
可选地,查看第一数据对象当前保存的第一标识序列段中是否存在未使用的标识可包括:查找第一标识序列段中的第一当前值,第一标识序列段中的标识用于在响应获取标识的请求时按照预设顺序返回,第一当前值为前一次返回的标识;在第一当前值为第一标识序列段中按照预设顺序排列的最后一个标识的情况下,确定第一标识序列段中不存在未使用的标识;在第一当前值不是第一标识序中列按照预设顺序排列的最后一个标识的情况下,确定第一标识序列段中存在未使用的标识。
以第一标识段为10001-19999为例,以从10001开始自增返回的方式开始生成单号,若当前值不是最大值19999就说明可以继续利用该标识段生成单号。
步骤6,在第一标识序列段中存在未使用的标识的情况下,获取第一标识序列段中未使用的标识为第一标识。
例如,第一标识段10001-19999的当前值为18123,那么获取的第一标识即18124,当前值也更新为18124。
步骤7,在第一标识序列段中不存在未使用的标识的情况下,将第一数据对象当前包括的标识序列段由第一标识序列段更新为从标识服务的第一缓存中获取到的第二标识序列段,目标标识序列段包括第二标识序列段。
步骤8,从第二标识序列段中获取未使用的第一标识。
在步骤S206提供的技术方案中,响应于单号请求,服务器返回根据查找到的第一标识生成的单号,生成的单号包括该第一标识。
在上述实施例中,在服务器返回根据查找到的第一标识生成的单号时,若是第一次为目标业务应用申请单号,可以在返回根据查找到的第一标识生成的单号之前,按照如下步骤1-步骤2进行初始化:
步骤1,在从与目标业务应用关联的第二数据对象中获取单号生成方式之前,从数据库中读取与目标业务应用关联的配置信息。
步骤2,按照配置信息生成与目标业务应用关联的第二数据对象,其中,第二数据对象中保存有配置信息表示的单号生成方式。
返回根据查找到的第一标识生成的单号可以按照如下步骤3-步骤6实现:
步骤3,从与目标业务应用关联的第二数据对象中获取单号生成方式。
步骤4,对第一标识的长度进行处理,得到与单号生成方式指示的长度匹配的第二标识。
例如,需要10位的标识,但是生成的标识为12345(只有5位),那么就可以通过前面或者后面填充字符的方式补齐到10位,如将“12345”填充为“0000012345”。
步骤5,按照单号生成方式指示的顺序将第二标识和单号生成方式指示的字段拼接成待返回的单号。
以发起请求的机器的IP、网卡MAC地址、当前时间、业务标识等唯一属性生成单号的前缀、后缀,然后将第第二标识拼接在前后缀之间,得到所需单号。
步骤6,返回根据查找到的第一标识生成的单号时,返回拼接得到的单号。
上述的配置信息标识用来生成唯一单号的一条单号生成规则记录,可包含如下属性:序列名(或者业务应用的名称)、单号类型、号长度、单号前缀、单号后缀、单号最大值、单号最小值以及步长值中的至少之一,其中序列名用来唯一标识一条单号生成规则;单号类型是指循环自增和单调自增,循环自增是指单号自增到最大值后又从最小值开始自增,单调自增是指单号无限自增,此时会忽略单号最大值;单号前缀和后缀是指放在单号前面和后面的字符串,如前缀可以是当前日期,20191017,后缀可以是某个字母,如用R表示这个单号时退款系统使用的;单号的最大值和最小值是指生成的单号的取值范围;步长值是指每次单号自增的值,如步长值是1000,当前单号是2000,自增1000就变成3000。所有的单号生成规则可通过关系数据库(如mysql)管理。
上述的序列段是指一段连续的单号段,如301001-402001,序列段的长度等于该序列的步长值,示例中是1000。在应用程序内存中会记录序列段的当前值,起始值和上限值,每次应用程序生成新的单号时会在当前值的基础上自增1,返回自增后的值作为新单号,内存中的当前值同时更新,如当前值是301002,请求新单号返回301003,当前值变更成301003。如果序列段当前值大于或者等于序列段的上限值如上述的402001,则表示序列段范围内的单号都用尽了,需要请求Redis获取新的序列段。
本申请实施例的标识的处理方法也可以由缓存系统来执行,图3是根据本申请实施例的一种可选的标识的处理方法的流程图,如图3所示,该方法可以包括以下步骤:
步骤S302,缓存系统接收到服务器的标识请求,标识请求用于服务器为目标业务应用请求标识序列段。
步骤S304,从第一缓存的标识序列中查找未被使用过的目标标识序列段,第一缓存是标识服务的多个缓存中的主缓存,标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,互不重复的标识序列段包括目标标识序列段。
可选地,在从第一缓存的标识序列中查找未被使用过的目标标识序列段时,可在第一缓存中查找与目标业务应用关联的标识序列,如以目标业务应用的名字命名的序列;从标识序列中获取未被使用过的且长度与为目标业务应用配置的步长匹配的目标标识序列段。
步骤S306,响应于标识请求,返回目标标识序列段。
对于上述的缓存系统,可以采用如下方式进行主备备份和切换:
步骤1,在从第一缓存的标识序列中查找未被使用过的目标标识序列段之前,获取多个缓存中的主缓存中标识序列的第二当前值,第二当前值为标识序列中被使用的最大标识。
步骤2,根据第二当前值和为目标业务应用配置的步长确定第三当前值。
可选地,根据第二当前值和为目标业务应用配置的步长确定第三当前值包括:将位置与第二当前值的位置之间的差值为步长的N倍的标识作为第三当前值,N为大于等于1的正整数。
如序列为0-10000,步长为1000,主缓存中的当前值为1999,N为3,那么备用缓存中的当前值为5999。
步骤3,将多个缓存的备用缓存中与目标业务应用关联的标识序列的当前值设置为第三当前值。
可选地,从第一缓存的标识序列中查找未被使用过的目标标识序列段时:在多个缓存中的主缓存发生故障的情况下,将多个缓存中的备用缓存切换为主缓存,将发生故障的主缓存切换为备用缓存;从切换后的主缓存的标识序列中查找未被使用过的目标标识序列段,如上述当前值为5999备用缓存,当前切换为主缓存后,就可以返回6000-6999的序列。
采用本申请的技术方案,可以解决对数据库的强依赖和数据库的并发性能不能满足生产需要的问题,提供基于双缓存和本地序列段实现的生成全局自增ID的高可用高并发的解决方案,可本地高效生成自定义长度,前后缀的全局唯一单号,支持10wTPS以上的调用,具备超强稳定可靠的承载能力。作为一种可选的实施例,下面结合具体实施方式详述获取新单号的技术方案和主备缓存切换、同步的技术方案。
获取新单号的技术方案:
步骤1,判断内存中是否存在指定序列名为A的序列,如果不存在则使用A的序列名初始化,初始化逻辑参考步骤4,如果存在则判断序列段当前值是否大于或者等于序列段的上限值,如果是则执行步骤5来向Redis请求一个新的序列段,如果否则在序列段的当前值的基础上自增1,将自增后的结果返回作为新的子单号。
步骤2,判断步骤1获取的新子单号的长度是否小于预定的序列长度,如果小于则在子单号前面补0,如子单号是10001,序列长度是8,则补0后的子单号变成00010001。
步骤3,将步骤2获取的子单号同序列前缀,序列后缀拼接起来,返回新的单号,如果前缀是特定的字符串就对前缀做特殊处理。如前缀字段是TIME_MMdd,TIME表示该前缀是当前日期,MMdd是日期的格式,比如10月17号对应的前缀就是1017。假定此时后缀是R,步骤2生成的子单号是00010001,则返回的单号时101700010001R。
步骤4,创建一个表示该序列的单号规则的数据对象,然后根据序列名A从数据库查询该序列的单号生成规则,如果查询返回空则说明该序列不存在,终止生成新单号的处理流程返回无效信息(如null);如果查询返回了A的单号生成规则,则根据查询结果更新内存中的表示该序列生成规则的数据对象的相关属性,如单号长度,序列最大值等。如果查询过程中数据库宕机不可用导致查询异常则抛出异常终止获取新单号处理流程。初始化结束后,序列段的当前值、起始值和上限值都是默认值0,因为此时未获取序列段。
步骤5,获取双缓存中主缓存实例,具体的获取过程封装并实现了主备缓存切换逻辑,具体处理流程参考后文主备缓存切换的技术方案。然后根据内存中保存的单号规则中的序列名,序列步长值,序列最小值,序列最大值,借助Lua脚本向Redis请求新的序列段,Redis的处理逻辑参考步骤6。获取到新的序列段后,更新应用程序内存中的序列段当前值,序列段起始值和上限值。
步骤6,首先判断目标序列在主缓存中是否存在,如果不存在则以该序列的序列名为关键字key,该序列的最小值为关键字对应的键值value在主缓存中添加一个key/value对,此value就是该序列的当前值。如果存在则以该序列的序列名作为key,获取该key对应的value,比如value是1001000,将该value作为待返回的序列段的起始值。接着将该value加上序列的步长值得到待返回的序列段的上限值,如果序列类型是循环自增类型则判断该序列段是否大于序列的最大值,如果上限值大于序列段的最大值则将上限值改成序列的最大值,将序列的当前值即value设置成序列最小值,即从序列的最小值重新开始自增;如果上限值小于序列段的最大值则将序列的当前值改成当前值。如步长是1000,序列最大值是1001500,最小值是100,则返回的序列段是1001000-1001500,主缓存中序列当前值是100;如步长是1000,序列最大值是120000,最小值是100,则返回的序列段是1001000-1002000,主缓存中的序列当前值是1002000。如果序列类型是单调自增类型,则忽略序列的最大值,不用判断value是否大于序列的最大值,直接返回value作为序列的上限值。
上述处理流程中序列的生成规则的初始化中需要从数据库中查询生成规则,查询成功后可不再需要跟数据库交互,除非应用重启,因此去除了对数据库的强依赖,即当程序正常运行过程中数据宕机了,程序依然可以正常生成单号。
主备缓存切换的技术方案如下:
应用程序启动时会根据配置文件将双缓存实例中的一个实例标记成MAIN缓存(即主缓存),另一个缓存实例标记成BACK缓存(即备用缓存)。当应用程序获取当前的主缓存实例时会读取另一个配置项,该配置项可由第三方配置管理程序维护,当配置项为MAIN时则应用程序返回MAIN缓存作为主缓存,当配置项为BACK时则应用程序返回BACK缓存作为主缓存。通过调整该配置项即可实现主备缓存的无缝切换,从而确保缓存组件的高可用。
主备缓存同步的技术方案如下:
在应用程序中另外起一个周期执行的任务,该任务会先从数据库中查询出所有的单号生成规则,然后逐一取出其中的序列名,获取当前主缓存实例中该序列名对应的序列当前值,记为A,将序列的当前值加上一个指定倍数(记为B)的步长值得到一个新的当前值,记为C,如果C大于该序列的最大值,则将C减去最大值然后加上最小值,其结果相当于按照步骤6执行B次获取新序列段操作。算出来C以后修改备用缓存中同一序列的当前值为C。以当前值为10000为例,步长值是100,最大值是20000,按照步骤6执行20次后,当前值变成10000+100*20=12000。如果最大值是11500,最小值是100,则按照步骤6执行20次后,当前值变成10000+20*100-11500+100=600。具体的倍数B必须大于应用程序在任务执行周期内获取新的序列段的最大次数,如该任务是5分钟执行一次,应用程序在5分钟内获取新的序列段的最大次数是16次,则B应该至少是17。任务执行完成相当于在备用缓存按照步骤6把所有的序列都执行了B次获取新序列段操作,这样做的目的是为了确保备用缓存中的同一个序列的当前值永远大于主缓存中的当前值,当切换到备用缓存以后生成的新单号不会跟之前主缓存生成的单号重复。
采用本申请的技术方案,可基于Redis、Lua脚本和本地序列段实现的高效生成全局自增ID的解决方案,提供了双缓存的无缝切换和数据同步解决方案,去除了数据库的强依赖,并通过双缓存提供了具有高可用高并发性的生成全局自增序列的解决方案,可高效生成各种自定义的全局唯一字符序列。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述标识的处理方法的标识的处理装置。图4是根据本申请实施例的一种可选的标识的处理装置的示意图,如图4所示,该装置可以包括:
第一接收单元401,用于接收到单号请求,其中,单号请求用于请求生成单号;
第一查找单元403,用于从目标标识序列段中查找未被使用过的第一标识,其中,目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取的,标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,互不重复的标识序列段包括目标标识序列段;
第一返回单元405,用于响应于单号请求,返回根据查找到的第一标识生成的单号。
需要说明的是,该实施例中的第一接收单元401可以用于执行本申请实施例中的步骤S202,该实施例中的第一查找单元403可以用于执行本申请实施例中的步骤S204,该实施例中的第一返回单元405可以用于执行本申请实施例中的步骤S206。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
通过上述模块,目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取后保存在本地的,生成单号是直接在本地利用自增的目标标识序列段生成单号,从而避免了与非本地数据库的交互,消除了数据库宕机对本地服务的影响,且对本地缓存的读写速度明显高于非本地的数据库,消除了数据库带来的性能瓶颈;生成单号时可以生成较短的单号(如直接将标识作为单号),由于目标标识序列段是以序列的形式存在,可以按需生成自增的单号。另外,标识服务的缓存可为目标业务应用提供互不重复的标识序列段,利用标识序列段生成的标识自然也是不重复的,从而可以解决相关技术中生成单号的方式不能保证全局唯一的技术问题。
可选地,第一查找单元还可用于:查找与目标业务应用关联的第一数据对象,其中,第一数据对象为用于保存标识序列段的对象;查看第一数据对象当前保存的第一标识序列段中是否存在未使用的标识,其中,目标标识序列段包括第一标识序列段;在第一标识序列段中存在未使用的标识的情况下,获取第一标识序列段中未使用的标识为第一标识;在第一标识序列段中不存在未使用的标识的情况下,将第一数据对象当前包括的标识序列段由第一标识序列段更新为从标识服务的第一缓存中获取到的第二标识序列段,其中,目标标识序列段包括第二标识序列段;从第二标识序列段中获取未使用的第一标识。
可选地,第一查找单元还可用于:查找第一标识序列段中的第一当前值,其中,第一标识序列段中的标识用于在响应获取标识的请求时按照预设顺序返回,第一当前值为前一次返回的标识;在第一当前值为第一标识序列段中按照预设顺序排列的最后一个标识的情况下,确定第一标识序列段中不存在未使用的标识;在第一当前值不是第一标识序中列按照预设顺序排列的最后一个标识的情况下,确定第一标识序列段中存在未使用的标识。
本申请的装置还可包括:配置单元,用于在查找到与目标业务应用关联的第一数据对象之前,从数据库中读取与目标业务应用关联的配置信息;按照配置信息生成与目标业务应用关联的第一数据对象;将从标识服务的第一缓存中获取到的第二标识序列段保存在第一数据对象中。
可选地,配置单元还可用于:从数据库中读取与目标业务应用关联的配置信息;按照配置信息生成与目标业务应用关联的第二数据对象,其中,第二数据对象中保存有配置信息表示的单号生成方式。
可选地,本申请的返回单元还可用于:从与目标业务应用关联的第二数据对象中获取单号生成方式;对第一标识的长度进行处理,得到与单号生成方式指示的长度匹配的第二标识;按照单号生成方式指示的顺序将第二标识和单号生成方式指示的字段拼接成待返回的单号;返回拼接得到的单号。
根据本申请实施例的另一个方面,还提供了一种用于实施上述标识的处理方法的标识的处理装置。图5是根据本申请实施例的一种可选的标识的处理装置的示意图,如图5所示,该装置可以包括:
第二接收单元501,用于接收到标识请求,其中,标识请求用于为目标业务应用请求标识序列段;
第二查找单元503,用于从第一缓存的标识序列中查找未被使用过的目标标识序列段,其中,第一缓存是标识服务的多个缓存中的主缓存,标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,互不重复的标识序列段包括目标标识序列段;
第二返回单元505,用于响应于标识请求,返回目标标识序列段。
可选地,第二查找单元还可用于:在第一缓存中查找与目标业务应用关联的标识序列;从标识序列中获取未被使用过的且长度与为目标业务应用配置的步长匹配的目标标识序列段。
可选地,本申请的装置还可包括:备份单元,用于在从第一缓存的标识序列中查找未被使用过的目标标识序列段之前,获取多个缓存中的主缓存中标识序列的第二当前值,其中,第二当前值为标识序列中被使用的最大标识;根据第二当前值和为目标业务应用配置的步长确定第三当前值;将多个缓存的备用缓存中与目标业务应用关联的标识序列的当前值设置为第三当前值。
可选地,本申请的备份单元还可用于:将位置与第二当前值的位置之间的差值为步长的N倍的标识作为第三当前值。
可选地,第二查找单元还可用于:在多个缓存中的主缓存发生故障的情况下,将多个缓存中的备用缓存切换为主缓存,将发生故障的主缓存切换为备用缓存;从切换后的主缓存的标识序列中查找未被使用过的目标标识序列段。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的另一个方面,还提供了一种用于实施上述标识的处理方法的服务器或存储系统。
图6是根据本申请实施例的一种服务器的结构框图,如图6所示,该服务器可以包括:一个或多个(图6中仅示出一个)处理器601、存储器603、以及传输装置605,如图6所示,该服务器还可以包括输入输出设备607。
其中,存储器603可用于存储软件程序以及模块,如本申请实施例中的标识的处理方法和装置对应的程序指令/模块,处理器601通过运行存储在存储器603内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的标识的处理方法。存储器603可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器603可进一步包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置605用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置605包括一个网络适配器(NetworkInterface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置605为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器603用于存储应用程序。
处理器601可以通过传输装置605调用存储器603存储的应用程序,以执行下述步骤:
接收到单号请求,其中,单号请求用于请求生成单号;
从目标标识序列段中查找未被使用过的第一标识,其中,目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取的,标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,互不重复的标识序列段包括目标标识序列段;
响应于单号请求,返回根据查找到的第一标识生成的单号。
处理器601还用于执行下述步骤:
查找与目标业务应用关联的第一数据对象,其中,第一数据对象为用于保存标识序列段的对象;
查看第一数据对象当前保存的第一标识序列段中是否存在未使用的标识,其中,目标标识序列段包括第一标识序列段;
在第一标识序列段中存在未使用的标识的情况下,获取第一标识序列段中未使用的标识为第一标识;
在第一标识序列段中不存在未使用的标识的情况下,将第一数据对象当前包括的标识序列段由第一标识序列段更新为从标识服务的第一缓存中获取到的第二标识序列段,其中,目标标识序列段包括第二标识序列段;
从第二标识序列段中获取未使用的第一标识。
采用本申请实施例,目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取后保存在本地的,生成单号是直接在本地利用自增的目标标识序列段生成单号,从而避免了与非本地数据库的交互,消除了数据库宕机对本地服务的影响,且对本地缓存的读写速度明显高于非本地的数据库,消除了数据库带来的性能瓶颈;生成单号时可以生成较短的单号(如直接将标识作为单号),由于目标标识序列段是以序列的形式存在,可以按需生成自增的单号。另外,标识服务的缓存可为目标业务应用提供互不重复的标识序列段,利用标识序列段生成的标识自然也是不重复的,从而可以解决相关技术中生成单号的方式不能保证全局唯一的技术问题。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图6所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图6其并不对上述电子装置的结构造成限定。例如,终端还可包括比图6中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图6所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行标识的处理方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
接收到单号请求,其中,单号请求用于请求生成单号;
从目标标识序列段中查找未被使用过的第一标识,其中,目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取的,标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,互不重复的标识序列段包括目标标识序列段;
响应于单号请求,返回根据查找到的第一标识生成的单号。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
查找与目标业务应用关联的第一数据对象,其中,第一数据对象为用于保存标识序列段的对象;
查看第一数据对象当前保存的第一标识序列段中是否存在未使用的标识,其中,目标标识序列段包括第一标识序列段;
在第一标识序列段中存在未使用的标识的情况下,获取第一标识序列段中未使用的标识为第一标识;
在第一标识序列段中不存在未使用的标识的情况下,将第一数据对象当前包括的标识序列段由第一标识序列段更新为从标识服务的第一缓存中获取到的第二标识序列段,其中,目标标识序列段包括第二标识序列段;
从第二标识序列段中获取未使用的第一标识。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (14)
1.一种标识的处理方法,其特征在于,包括:
接收到标识请求,其中,所述标识请求用于为目标业务应用请求标识序列段;
从第一缓存的标识序列中查找未被使用过的目标标识序列段,其中,所述第一缓存是标识服务的多个缓存中的主缓存,所述标识服务的缓存用于为所述目标业务应用提供互不重复的标识序列段,所述互不重复的标识序列段包括所述目标标识序列段;
响应于所述标识请求,返回所述目标标识序列段;
在从第一缓存的标识序列中查找未被使用过的目标标识序列段之前,所述方法还包括:获取所述多个缓存中的主缓存中标识序列的第二当前值,其中,所述第二当前值为标识序列中被使用的最大标识;根据所述第二当前值和为所述目标业务应用配置的步长确定第三当前值;将所述多个缓存的备用缓存中与所述目标业务应用关联的标识序列的当前值设置为所述第三当前值。
2.根据权利要求1所述的方法,其特征在于,从第一缓存的标识序列中查找未被使用过的目标标识序列段包括:
在所述第一缓存中查找与所述目标业务应用关联的标识序列;
从所述标识序列中获取未被使用过的且长度与为所述目标业务应用配置的步长匹配的所述目标标识序列段。
3.根据权利要求1所述的方法,其特征在于,根据所述第二当前值和为所述目标业务应用配置的步长确定第三当前值包括:
将位置与所述第二当前值的位置之间的差值为步长的N倍的标识作为所述第三当前值,其中,N为正整数。
4.根据权利要求3所述的方法,其特征在于,从第一缓存的标识序列中查找未被使用过的目标标识序列段包括:
在所述多个缓存中的主缓存发生故障的情况下,将所述多个缓存中的备用缓存切换为主缓存,将发生故障的主缓存切换为备用缓存;
从切换后的主缓存的标识序列中查找未被使用过的所述目标标识序列段。
5.一种标识的处理方法,其特征在于,包括:
接收到单号请求,其中,所述单号请求用于请求生成单号;
从目标标识序列段中查找未被使用过的第一标识,其中,所述目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取的,所述标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,所述互不重复的标识序列段包括所述目标标识序列段,所述目标标识序列段是利用权利要求1至4中任意一项提供的方法得到的;
响应于所述单号请求,返回根据查找到的所述第一标识生成的单号。
6.根据权利要求5所述的标识的处理方法,其特征在于,从目标标识序列段中查找未被使用过的第一标识包括:
查找与所述目标业务应用关联的第一数据对象,其中,所述第一数据对象为用于保存标识序列段的对象;
查看所述第一数据对象当前保存的第一标识序列段中是否存在未使用的标识,其中,所述目标标识序列段包括所述第一标识序列段;
在所述第一标识序列段中存在未使用的标识的情况下,获取所述第一标识序列段中未使用的标识为所述第一标识;
在所述第一标识序列段中不存在未使用的标识的情况下,将所述第一数据对象当前包括的标识序列段由所述第一标识序列段更新为从所述标识服务的第一缓存中获取到的第二标识序列段,其中,所述目标标识序列段包括所述第二标识序列段;从所述第二标识序列段中获取未使用的所述第一标识。
7.根据权利要求6所述的标识的处理方法,其特征在于,查看所述第一数据对象当前保存的第一标识序列段中是否存在未使用的标识包括:
查找所述第一标识序列段中的第一当前值,其中,所述第一标识序列段中的标识用于在响应获取标识的请求时按照预设顺序返回,所述第一当前值为前一次返回的标识;
在所述第一当前值为所述第一标识序列段中按照所述预设顺序排列的最后一个标识的情况下,确定所述第一标识序列段中不存在未使用的标识;
在所述第一当前值不是所述第一标识序中列按照所述预设顺序排列的最后一个标识的情况下,确定所述第一标识序列段中存在未使用的标识。
8.根据权利要求6所述的标识的处理方法,其特征在于,在查找到与所述目标业务应用关联的第一数据对象之前,所述方法还包括:
从数据库中读取与所述目标业务应用关联的配置信息;
按照所述配置信息生成与所述目标业务应用关联的所述第一数据对象;
将从所述标识服务的第一缓存中获取到的第二标识序列段保存在所述第一数据对象中。
9.根据权利要求5至8中任意一项所述的标识的处理方法,其特征在于,
返回根据查找到的所述第一标识生成的单号之前,所述方法还包括:从与所述目标业务应用关联的第二数据对象中获取单号生成方式;对所述第一标识的长度进行处理,得到与所述单号生成方式指示的长度匹配的第二标识;按照所述单号生成方式指示的顺序将所述第二标识和所述单号生成方式指示的字段拼接成待返回的单号;
返回根据查找到的所述第一标识生成的单号包括:返回拼接得到的单号。
10.根据权利要求9所述的标识的处理方法,其特征在于,在从与所述目标业务应用关联的第二数据对象中获取单号生成方式之前,所述方法还包括:
从数据库中读取与所述目标业务应用关联的配置信息;
按照所述配置信息生成与所述目标业务应用关联的所述第二数据对象,其中,所述第二数据对象中保存有所述配置信息表示的单号生成方式。
11.一种标识的处理装置,其特征在于,包括:
第一接收单元,用于接收到单号请求,其中,所述单号请求用于请求生成单号;
第一查找单元,用于从目标标识序列段中查找未被使用过的第一标识,其中,所述目标标识序列段是从标识服务的多个缓存中作为主缓存的第一缓存中获取的,所述标识服务的缓存用于为目标业务应用提供互不重复的标识序列段,所述互不重复的标识序列段包括所述目标标识序列段,所述目标标识序列段是利用权利要求1至4中任意一项提供的方法得到的;
第一返回单元,用于响应于所述单号请求,返回根据查找到的所述第一标识生成的单号。
12.一种标识的处理装置,其特征在于,包括:
第二接收单元,用于接收到标识请求,其中,所述标识请求用于为目标业务应用请求标识序列段;
第二查找单元,用于从第一缓存的标识序列中查找未被使用过的目标标识序列段,其中,所述第一缓存是标识服务的多个缓存中的主缓存,所述标识服务的缓存用于为所述目标业务应用提供互不重复的标识序列段,所述互不重复的标识序列段包括所述目标标识序列段;
第二返回单元,用于响应于所述标识请求,返回所述目标标识序列段;
其中,在从第一缓存的标识序列中查找未被使用过的目标标识序列段之前,获取所述多个缓存中的主缓存中标识序列的第二当前值,其中,所述第二当前值为标识序列中被使用的最大标识;根据所述第二当前值和为所述目标业务应用配置的步长确定第三当前值;将所述多个缓存的备用缓存中与所述目标业务应用关联的标识序列的当前值设置为所述第三当前值。
13.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至10任一项中所述的方法。
14.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行上述权利要求1至10任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010113450.7A CN111353773B (zh) | 2020-02-24 | 2020-02-24 | 标识的处理方法和装置、存储介质、电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010113450.7A CN111353773B (zh) | 2020-02-24 | 2020-02-24 | 标识的处理方法和装置、存储介质、电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111353773A CN111353773A (zh) | 2020-06-30 |
CN111353773B true CN111353773B (zh) | 2024-01-16 |
Family
ID=71197178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010113450.7A Active CN111353773B (zh) | 2020-02-24 | 2020-02-24 | 标识的处理方法和装置、存储介质、电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111353773B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112073554B (zh) * | 2020-09-08 | 2023-04-18 | 腾讯科技(深圳)有限公司 | 全局唯一标识生成方法、设备以及计算机可读存储介质 |
CN112948646B (zh) * | 2021-04-01 | 2022-12-13 | 支付宝(杭州)信息技术有限公司 | 数据识别方法和装置 |
CN113064903B (zh) * | 2021-04-25 | 2022-12-13 | 小马国炬(玉溪)科技有限公司 | 一种全局id生成方法、装置、设备及存储介质 |
CN113408246A (zh) * | 2021-06-30 | 2021-09-17 | 商盟商务服务有限公司 | 获取单号的方法、装置及系统 |
CN115103024B (zh) * | 2022-06-21 | 2024-03-15 | 联仁健康医疗大数据科技股份有限公司 | 一种序列号生成方法、装置、电子设备及存储介质 |
CN116186796B (zh) * | 2023-02-21 | 2024-01-30 | 中国人民解放军海军工程大学 | 序列号生成方法、系统、电子设备及存储介质 |
CN117635273A (zh) * | 2023-12-12 | 2024-03-01 | 苏州思客信息技术有限公司 | 业务订单号生成方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106911780A (zh) * | 2017-02-28 | 2017-06-30 | 北京三快在线科技有限公司 | 业务id生成方法、装置及系统 |
CN107229555A (zh) * | 2017-05-04 | 2017-10-03 | 北京小度信息科技有限公司 | 标识生成方法和装置 |
CN109104490A (zh) * | 2018-08-29 | 2018-12-28 | 北京达佳互联信息技术有限公司 | 业务标识管理方法、装置、电子设备及存储介质 |
WO2019072103A1 (zh) * | 2017-10-11 | 2019-04-18 | 阿里巴巴集团控股有限公司 | 目标数据的获取方法和装置 |
CN109656920A (zh) * | 2018-10-19 | 2019-04-19 | 中国建设银行股份有限公司 | 序列号处理方法及系统、装置和存储介质 |
CN109670975A (zh) * | 2018-12-17 | 2019-04-23 | 泰康保险集团股份有限公司 | 计算机系统中生成单号的方法、介质及电子设备 |
CN110196860A (zh) * | 2018-04-12 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 唯一标识分配方法及装置、电子设备、存储介质 |
CN110807035A (zh) * | 2019-11-05 | 2020-02-18 | 泰康保险集团股份有限公司 | 流水号生成方法、装置、设备及存储介质 |
CN110807657A (zh) * | 2019-10-25 | 2020-02-18 | 网银在线(北京)科技有限公司 | 订单处理方法、装置、设备及计算机可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7738919B2 (en) * | 2005-09-19 | 2010-06-15 | Silverbrook Research Pty Ltd | Link object to card |
US10061562B2 (en) * | 2012-09-29 | 2018-08-28 | Pivotal Software, Inc. | Random number generator in a parallel processing database |
-
2020
- 2020-02-24 CN CN202010113450.7A patent/CN111353773B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106911780A (zh) * | 2017-02-28 | 2017-06-30 | 北京三快在线科技有限公司 | 业务id生成方法、装置及系统 |
CN107229555A (zh) * | 2017-05-04 | 2017-10-03 | 北京小度信息科技有限公司 | 标识生成方法和装置 |
WO2019072103A1 (zh) * | 2017-10-11 | 2019-04-18 | 阿里巴巴集团控股有限公司 | 目标数据的获取方法和装置 |
CN110196860A (zh) * | 2018-04-12 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 唯一标识分配方法及装置、电子设备、存储介质 |
CN109104490A (zh) * | 2018-08-29 | 2018-12-28 | 北京达佳互联信息技术有限公司 | 业务标识管理方法、装置、电子设备及存储介质 |
CN109656920A (zh) * | 2018-10-19 | 2019-04-19 | 中国建设银行股份有限公司 | 序列号处理方法及系统、装置和存储介质 |
CN109670975A (zh) * | 2018-12-17 | 2019-04-23 | 泰康保险集团股份有限公司 | 计算机系统中生成单号的方法、介质及电子设备 |
CN110807657A (zh) * | 2019-10-25 | 2020-02-18 | 网银在线(北京)科技有限公司 | 订单处理方法、装置、设备及计算机可读存储介质 |
CN110807035A (zh) * | 2019-11-05 | 2020-02-18 | 泰康保险集团股份有限公司 | 流水号生成方法、装置、设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
haricharan rengamani,et al.the unique identification number project:challenges and recommendations.《《Ethics and policy of biometrics》 》.2010,第6005卷 146-153 146-153. * |
王正军.商品条码印刷资格认定管理系统的设计与实现.《信息科技》.2019,62-65. * |
田英爱等.持久对象标识的生成方法.《制造业自动化》.2005,第27卷(第11期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111353773A (zh) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111353773B (zh) | 标识的处理方法和装置、存储介质、电子装置 | |
CN106911780B (zh) | 业务id生成方法、装置及系统 | |
CN107133234B (zh) | 缓存数据更新的方法、装置及系统 | |
US10713034B2 (en) | Updating web resources | |
CN111314238B (zh) | 令牌的管理方法和装置、存储介质、电子装置 | |
CN108846753B (zh) | 用于处理数据的方法和装置 | |
US11250395B2 (en) | Blockchain-based transaction processing methods and apparatuses and electronic devices | |
CN107025289B (zh) | 一种数据处理的方法及相关设备 | |
CN110162543A (zh) | 一种信息查询方法及装置 | |
CN110677492B (zh) | 一种访问请求处理方法、装置、电子设备及存储介质 | |
CN113886743B (zh) | 缓存资源的刷新方法、装置及系统 | |
CN111581239A (zh) | 缓存刷新方法和电子设备 | |
CN110784498A (zh) | 一种个性化数据容灾方法及装置 | |
CN113722323A (zh) | 业务序列号生成方法、发号器组件、设备和存储介质 | |
CN111857979B (zh) | 一种分布式系统的信息管理方法、系统、存储介质及设备 | |
CN111353772B (zh) | 单号的生成方法和装置、存储介质、电子装置 | |
CN112328632B (zh) | 一种分布式两级缓存的方法和系统 | |
CN108959548B (zh) | 业务请求的处理方法及装置 | |
CN112749172A (zh) | 一种缓存与数据库之间的数据同步方法及系统 | |
CN113486025B (zh) | 数据存储方法、数据查询方法及装置 | |
CN111614750A (zh) | 一种数据更新方法、系统、设备及存储介质 | |
CN115118703B (zh) | 服务调用方法及装置、电子设备 | |
CN113297211B (zh) | 一种大数据高并发下人群画像存储及定向系统及方法 | |
CN117762574A (zh) | 分布式数据库中全局事务的管理方法及装置 | |
CN118034822A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |