CN113076303A - 分布式系统中业务标识的生成方法和装置 - Google Patents
分布式系统中业务标识的生成方法和装置 Download PDFInfo
- Publication number
- CN113076303A CN113076303A CN202110411291.3A CN202110411291A CN113076303A CN 113076303 A CN113076303 A CN 113076303A CN 202110411291 A CN202110411291 A CN 202110411291A CN 113076303 A CN113076303 A CN 113076303A
- Authority
- CN
- China
- Prior art keywords
- identification
- identifier
- service
- interval
- configuration rule
- 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
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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种分布式系统中业务标识的生成方法和装置,标识生成服务器接收业务服务器发送的业务标识请求消息,该业务标识请求消息用于请求目标业务的标识,其次获取本次使用的标识区间,该标识区间是根据标识配置规则确定的,该标识配置规则中包括标识阈值、标识递增步长和标识版本号,然后根据业务标识请求消息确定标识生成方式,该标识生成方式为随机方式或者递增方式,根据标识生成方式,从标识区间中确定目标业务的标识并返回。该方式支持随机和递增两种方式灵活的为业务分配标识,且标识生成规则对标识的长度没有严格要求,相比于UUID性能更好,且标识的生成不依赖于系统时间,相对于Snowflake方式能够保证生成的标识不重复。
Description
技术领域
本发明涉及数据库技术,尤其涉及一种分布式系统中业务标识的生成方法和装置。
背景技术
通用唯一识别码(University Unique Identifier,简称UUID)作为分布式系统中元素(例如服务、业务、数据等)的一种标识,能够唯一标识一个元素,且不需要通过中央控制端集中管理和生成,每个设备都可以独立的生成UUID,且不会与其他设备生成的UUID冲突,因此,广泛应用于分布式系统中。
UUID是一个128比特的数值,可以通过一定的算法计算得到,为了提高UUID的搜索效率,UUID可以缩短至32位或者16位,UUID可以基于当前时间、计数器和硬件标识(通常为设备的无线网卡的MAC地址)生成。
但是,UUID的生成方式单一,且生成效率低。
发明内容
本发明提供一种分布式系统中业务标识的生成方法和装置,能够灵活高效的为分布式系统的业务生成标识。
本发明第一方面提供一种分布式系统中业务标识的生成方法,应用于标识生成服务器,包括:
接收业务服务器发送的业务标识请求消息,所述业务标识请求消息用于请求目标业务的标识;
获取本次使用的标识区间,所述标识区间是根据标识配置规则确定的,所述标识配置规则中包括标识阈值、标识递增步长和标识版本号;
根据所述业务标识请求消息确定标识生成方式,所述标识生成方式为随机方式或者递增方式;
根据所述标识生成方式,从所述标识区间中确定所述目标业务的标识;
向所述业务服务器返回请求响应,所述请求响应中包括所述目标业务的标识。
可选的,所述获取本次使用的标识区间,包括:
加悲观锁,所述悲观锁在所述目标业务的标识生成之后解锁;
判断所述业务标识请求消息是否为所述标识生成服务器启动后的第一次请求;
如果所述业务标识请求消息是所述标识生成服务器启动后的第一次请求,则更新所述标识配置规则以及所述标识区间,更新后的所述标识区间为本次使用的标识区间;
如果所述业务标识请求消息不是所述标识生成服务器启动后的第一次请求,则将本地缓存空间读取到的标识区间作为本次使用的标识区间。
可选的,所述标识生成方式为随机方式,所述根据所述标识生成方式,从所述标识区间中确定所述目标业务的标识,包括:
从所述标识区间中获取一个随机数;
当所述随机数未被使用时,根据所述随机数生成所述目标业务的标识;
当所述随机数据已被使用时,且随机数的获取次数小于或等于第一阈值时,重新从所述标识区间中获取一个随机数;
当所述随机数已被使用,且所述随机数的重新获取次数大于第一阈值时,更新所述标识配置规则以及所述标识区间。
可选的,从所述标识区间中获取一个随机数之后,还包括:
使用比特位图判断所述随机数是否被使用过,其中,所述比特位图中包括所述标识区间中已被使用过的随机数对应的比特位。
可选的,所述第一阈值为标识增长步长和负载因子的乘积,所述负载因子大于0且小于1。
可选的,所述标识生成方式为递增方式,所述根据所述标识生成方式,从所述标识区间中确定所述目标业务的标识,包括:
使用当前标识加1得到候选标识;
当所述候选标识小于或等于所述标识区间的上限值时,根据所述候选标识生成所述目标业务的标识;
当所述候选标识大于所述标识区间的上限值时,更新所述标识配置规则以及所述标识区间,返回执行使用所述当前标识加1得到候选标识的步骤。
可选的,所述使用所述当前标识加1得到候选标识之前,还包括:
判断所述当前标识是否大于或等于第二阈值,所述第二阈值小于所述标识区间的上限值;
当所述当前标识大于或等于所述第二阈值时,更新所述标识配置规则以及所述标识区间;
当所述当前标识小于所述第二阈值,或者所述当前标识大于或等于所述第二阈值时,使用所述当前标识加1得到候选标识。
可选的,所述第二阈值为所述标识区间的上限值与负载因子的乘积,所述负载因子大于0且小于1;
所述更新所述标识配置规则以及所述标识区间,包括:
采用异步方式使用排它锁更新所述标识配置规则以及所述标识区间。
可选的,所述更新所述标识配置规则以及所述标识区间,包括:
使用排他锁从所述数据库中读取所述标识配置规则;
当从所述数据库中读取到的所述标识配置规则中包括的标识版本号与本地缓存空间中存储的标识版本号不相同,且从所述数据库读取所述标识配置规则的读取次数小于或等于预设次数时,重新使用排他锁从所述数据库中读取所述标识配置规则;
当从所述数据库中读取到的所述标识配置规则中包括的标识版本号与本地缓存空间中存储的标识版本号相同时,根据所述标识配置规则中包括的标识阈值和标识递增步长得到新的标识阈值,更新所述标识配置规则中的标识版本号;
根据所述新的标识阈值和更新后的标识版本号更新所述数据库以及本地缓存空间中存储的所述标识配置规则;
根据所述新的标识阈值和所述标识配置规则中的标识递增步长得到所述标识区间。
可选的,所述方法还包括:当从所述数据库中读取到的所述标识配置规则中包括的标识版本号与本地缓存空间中存储的标识版本号不相同,且从所述读取次数大于所述预设次数时,向所述业务服务器返回请求失败消息。
可选的,所述接收业务服务器发送的业务标识请求消息之前,还包括:
启动服务,并更新第一标识为所述标识生成服务器从未被访问过;
从所述数据库获取多个标识配置规则,并存储到本地缓存空间,所述标识配置规则包括所述标识配置规则的标识、业务描述信息、业务标识的初始值、标识阈值、标识递增步长、标识版本号和业务标识是否连续递增的指示信息。
可选的,所述标识配置规则中还包括业务前缀码、所述标识配置规则的初始创建时间和最新修改时间。
可选的,所述判断所述业务标识请求消息是否为所述标识生成服务器启动后的第一次请求,包括:
根据所述第一标识判断所述业务标识请求消息是否所述标识生成服务器启动之后收到的第一个请求;
如果所述业务标识请求消息是所述标识生成服务器启动后的第一次请求,所述使用排它锁更新所述标识配置规则以及所述标识区间之后,还包括:
更新所述第一标识为所述标识生成服务器已被访问过。
可选的,所述标识配置规则包括多个字段,所述标识配置规则中的每个字段占用一个缓存行;
所述根据所述新的标识阈值和更新后的标识版本号更新本地缓存空间中存储的所述标识配置规则,包括:
将所述新的标识阈值更新到标识阈值字段对应的缓存行;
当所述标识阈值字段对应的缓存行的字节没有被占满时,补齐所述标识阈值字段对应的缓存行;
将更新后的标识版本号更新到版本号字段对应的缓存行;
当所述版本号字段对应的缓存行的字节没有被占满时,补齐所述版本号字段对应的缓存行。
可选的,所述方法还包括:统计所述目标业务对所述数据库的访问频率,当所述访问频率高于预设频率时,增大所述标识配置规则中的标识递增步长。
可选的,所述标识配置规则中还包括业务前缀,所述根据所述随机数生成所述目标业务的标识,包括:将所述业务前缀加在所述随机数之前生成所述目标业务的标识。
可选的,所述标识配置规则中还包括业务前缀,所述根据所述候选标识生成所述目标业务的标识,包括:将所述业务前缀加在所述候选标识之前生成所述目标业务的标识。
第二方面,本发明提供一种标识生成服务器,包括:
接收模块,用于接收业务服务器发送的业务标识请求消息,所述业务标识请求消息用于请求目标业务的标识;
获取模块,用于获取本次使用的标识区间,所述标识区间是根据标识配置规则确定的,所述标识配置规则中包括标识阈值、标识递增步长和标识版本号;
第一确定模块,用于根据所述业务标识请求消息确定标识生成方式,所述标识生成方式为随机方式或者递增方式;
第二确定模块,用于根据所述标识生成方式,从所述标识区间中确定所述目标业务的标识;
发送模块,用于向所述业务服务器返回请求响应,所述请求响应中包括所述目标业务的标识。
第三方面,本发明提供一种标识生成服务器,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如本发明第一方面所述的方法。
第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如本发明第一方面所述的方法。
第五方面,本发明提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如本发明第一方面所述的方法。
本发明提供一种分布式系统中业务标识的生成方法和装置,标识生成服务器接收业务服务器发送的业务标识请求消息,该业务标识请求消息用于请求目标业务的标识,其次获取本次使用的标识区间,该标识区间是根据标识配置规则确定的,该标识配置规则中包括标识阈值、标识递增步长和标识版本号,然后根据业务标识请求消息确定标识生成方式,该标识生成方式为随机方式或者递增方式,根据标识生成方式,从标识区间中确定目标业务的标识并返回。该方式支持随机和递增两种方式灵活的为业务分配标识,且标识生成规则对标识的长度没有严格要求,相比于UUID性能更好,且标识的生成不依赖于系统时间,相对于Snowflake方式能够保证生成的标识不重复。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本发明适用的网络架构的示意图;
图2为发明实施例一提供的分布式系统中业务标识的生成方法的流程图;
图3为发明实施例二提供的更新标识配置规则和标识区间的方法的流程图;
图4为发明实施例三提供的采用随机方式生成业务标识的方法的流程图;
图5为发明实施例四提供的采用递增方式生成业务标识的方法的流程图;
图6为发明实施例五提供的分布式系统中业务标识的生成方法的流程图;
图7为本发明实施例六提供的一种标识生成服务器的结构示意图;
图8为本发明实施例七提供的标识生成服务器的一种结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1为本发明适用的网络架构的示意图,如图1所示,该网络架构包括三个子网络:业务服务11、标识(identity,简称ID)生成服务器集群12和数据库13。
业务服务11中包括多个业务服务器,该多个业务服务器中包括用于处理不同业务的服务器,例如包括订单业务服务器111、商品业务服务器112等。业务服务器用于向ID生成服务器集群12请求业务标识,ID生成服务器集群12根据请求生成业务标识,并向业务服务器返回业务标识。
ID生成服务集群12中包括多个ID生成服务器,图1所示集群中,共包括N个ID生成服务器,每个ID生成服务器用于根据标识配置规则生成业务标识,其中,一个ID生成服务器可用于生成一种业务对应的标识,也可以生成多种业务对应的标识。ID生成服务集群12集群支持动态扩容,以保证ID服务高可用。
数据库13用于提供存储服务,可以存储标识配置规则,以及其他一些和业务标识相关的内容,数据库可以采用一主多从的形式,保证存储服务高可用。
基于上述网络架构,图2为发明实施例一提供的分布式系统中业务标识的生成方法的流程图,本实施例的方法应用于标识生成服务器,如图2所示,本实施例提供的方法包括以下步骤:
S101、接收业务服务器发送的业务标识请求消息,该业务标识请求消息用于请求目标业务的标识。
业务服务器可以根据自己的需求通过超文本传输协议(Hyper Text TransferProtocol,简称HTTP)或者远程过程调用(Remote Procedure Call,简称RPC)请求调用ID生成服务器获取所需的目标业务的ID。可选的,该业务标识请求消息中可以包括业务类型标识,业务类型标识用于指示所请求的标识对应的业务类型。
S102、获取本次使用的标识区间,该标识区间是根据标识配置规则确定的,该标识配置规则中包括标识阈值、标识递增步长和标识版本号。
一种示例性的方式中,先加悲观锁(Pessimistic Lock),该悲观锁在目标业务的标识生成之后解锁,然后判断业务标识请求消息是否为标识生成服务器启动后的第一次请求,如果该业务标识请求消息不是标识生成服务器启动后的第一次请求,则将本地缓存空间读取到的标识区间作为本次使用的标识区。如果业务标识请求消息是标识生成服务器启动后的第一次请求,则更新标识配置规则和标识区间,更新后的标识区间为本次使用的标识区间。
为了解决并发问题引入了悲观锁,悲观锁顾名思义就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。本实施例中,在接收到业务标识请求消息之后,会加悲观锁,则该业务标识请求消息处理过程中使用的数据都会被加锁,即其他请求无法对该业务标识请求消息处理过程中使用的数据进行修改。通过加悲观锁使得多个业务标识请求消息之间串行进行处理,即串行为多个业务生成业务标识,从而能够避免为两个业务分配相同的业务标识。
当标识生成服务器启动之后,第一次收到业务标识请求消息时,此时,标识生成服务器并没有生成标识区间,即本地缓存空间中没有存储可用的标识区间,需要从数据库读取标识配置规则并生成本次使用的标识区间。
一种实现方式中,设置第一标识,第一标识用于表示标识生成服务器是否被访问过,当标识生成服务器启动之后,更新第一标识为标识生成服务器从未被访问过,当标识生成服务器对第一个业务标识请求消息进行处理之后,将第一标识更新为标识生成服务器被访问过,后续当标识生成服务器接收到业务标识请求消息之后,根据第一标识判断标识生成服务器是否被访问过。标识生成服务器被访问过说明标识生成服务器根据标识配置规则生成了标识区间。
如果业务标识请求消息是标识生成服务器启动后的第一次请求,则更新标识配置规则以及标识区间,更新后的标识区间为本次使用的标识区间,这里更新标识配置规则包括更新数据库中存储的标识配置规则和本地缓存空间中存储的标识配置规则,通过更新保证数据库中存储的标识配置规则和本地缓存空间中存储的标识配置规则相同,更新标识区间是指更新本地缓存空间中存储的标识区间,本地缓存空间中存储的标识区间是根据本地缓存空间中存储的标识配置规则生成。
数据库中存储有多个标识配置规则,每个标识配置规则能够被多个标识生成服务器修改,标识配置规则中包括标识阈值、标识递增步长和标识版本号,其中,标识阈值可以理解为标识区间的最小值,标识阈值加上标识递增步长得到标识区间的最大值。
标识版本号也可以称为乐观锁版本号,乐观锁是相对悲观锁而言的,乐观锁假设数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则返回给用户错误的信息,让用户决定如何去做。乐观锁适用于读操作多的场景,这样可以提高程序的吞吐量。本实施例中,对于数据库中的标识配置规则的维护采用乐观锁。
可以理解,标识配置规则中还包括一些其他信息,例如,标识配置规则的标识、业务描述信息、业务标识的初始值、业务标识是否连续递增的指示信息、标识配置规则的初始创建时间和最新修改时间等。标识配置规则的标识也称为主键,能够唯一标识一条规则,业务描述信息中可以包括规则描述,业务类型等,业务标识的初始值是固定不变的,标识阈值是不断更新的。
标识生成服务器向数据库请求标识配置规则,请求消息中包括请求的规则的标识或者其他信息,例如,请求消息中包括业务类型,数据库接收到请求消息后,根据业务类型确定标识生成服务器所请求的标识配置规则。
标识生成服务器接收到数据库返回的标识配置规则之后,根据数据库返回的标识配置规则以及本地缓存空间存储的标识配置规则,更新标识配置规则以及标识区间。
S103、根据业务标识请求消息确定标识生成方式,该标识生成方式为随机方式或者递增方式。
标识生成服务器可以根据请求消息的接口入参确定标识生成方式。
S104、根据标识生成方式,从标识区间中确定目标业务的标识。
本实施例中,标识生成服务器同时支持随机方式和递增方式两种方式生成业务标识,使得业务标识的生成更加灵活,满足不同业务的差异化需求。
当标识生成方式为随机方式时,从标识区间中确定目标业务的标识,可以通过如下方式:先从标识区间中获取一个随机数,然后判断随机数是否被使用过,当随机数未被使用时,根据随机数生成目标业务的标识。当随机数据已被使用时,且随机数的获取次数小于或等于第一阈值时,重新从标识区间中获取一个随机数。当随机数已被使用,且随机数的重新获取次数大于第一阈值时,更新标识配置规则以及所述标识区间。
当随机数据已被使用时,需要重新从标识区间获取一个随机数,在实际过程中可能需要多次获取才能得到未被使用的随机数,其中,标识区间中未被使用的随机数越少(即已被使用的随机数越多),获取到未被使用的随机数使用的获取次数越大,标识区间中未被使用的随机数越躲,获取到未被使用的随机数使用的获取次数越小。
所以设定一个获取次数的阈值,即第一阈值,每次获取到已被使用的随机数据之后将获取次数加1,并判断随机数的获取次数是否小于或等于第一阈值,如果随机数的获取次数小于或等于第一阈值,则重新从标识区间中获取一个随机数,如果随机数的获取次数大于第一阈值,则不再重新获取随机数,说明标识区间中未被使用的随机数数量很少,需要重新获取新的标识区间,则更新标识配置规则以及标识区间。
可选的,该第一阈值为标识增长步长和负载因子的乘积,负载因子的取值为大于0且小于1,示例性的,负载因子的取值为0.8、0.85、0.9等。负载因子可以配置在标识配置规则中,也可以单独配置在标识生成服务器的系统中。
可选的,标识配置规则中还包括业务前缀,业务前缀用于区分不同的业务,当标识配置规则中包括业务前缀时,可以将业务前缀加在随机数之前或者之后生成目标业务的标识。当标识配置规则中不包括业务前缀时,可以直接将随机数作为目标业务的标识。
当标识生成方式为递增方式时,从标识区间中确定所述目标业务的标识,可以为:使用当前标识加1得到候选标识,当候选标识小于或等于标识区间的上限值时,根据候选标识生成目标业务的标识。当候选标识大于标识区间的上限值时,更新标识配置规则以及标识区间,返回执行使用当前标识加1得到候选标识的步骤。
当前标识存储在本地存储空间中,具体可以存储在标识区间中或者标识配置规则中。由于该方式中标识是按照预定规则递增的,所以需要获知当前标识和递增规则才能确定下一个标识。该递增规则可以是在当前标识的基础上加上预设步长的下一个标识,该预设步长通常为1,即每次在当前标识的基础上加1得到下一个标识。标识区间的上限值即标识区间的最大值,由标识阈值加上标识递增步长得到。
可选的,标识配置规则中还包括业务前缀,业务前缀用于区分不同的业务,当标识配置规则中包括业务前缀时,可以将业务前缀加在候选标识之前或者之后生成目标业务的标识。当标识配置规则中不包括业务前缀时,可以直接将后选标识作为目标业务的标识。
当生成的业务标识中包括业务前缀时,可以保证业务标识具有业务属性,用户根据业务标识即可获知业务类型或者其他信息。其中,业务前缀可以是数字、字母、数字和字母的组合。随机数和候选标识通常是数字。
S105、向业务服务器返回请求响应,该请求响应中包括目标业务的标识。
业务服务器通过上述方式生成目标业务的标识,并向业务服务器返回目标业务的标识。
可选的,本实施例中,还可以统计目标业务对数据库的访问频率,该访问频率可以是每秒查询率(Query Per Second,简称QPS)。当访问频率高于预设频率时,增大标识配置规则中的标识递增步长,使得服务的标识递增步长和QPS保持正相关,从而保证数据库性能的稳定。
本实施例中,标识生成服务器接收业务服务器发送的业务标识请求消息,该业务标识请求消息用于请求目标业务的标识,其次获取本次使用的标识区间,该标识区间是根据标识配置规则确定的,该标识配置规则中包括标识阈值、标识递增步长和标识版本号,然后根据业务标识请求消息确定标识生成方式,该标识生成方式为随机方式或者递增方式,根据标识生成方式,从标识区间中确定目标业务的标识并返回。该方式能够灵活的为业务分配标识。
在实施例一的基础上,本发明实施例二提供一种更新标识配置规则和标识区间的方法,通常在以下情况下需要更新标识配置规则和标识区间:标识生成服务器第一次接收到业务标识请求消息,标识生成服务器的本地缓存空间中存储的业务标识的使用量达到了阈值,需要重新生成新的标识区间。图3为发明实施例二提供的更新标识配置规则和标识区间的方法的流程图,如图3所示,本实施例提供的方法包括以下步骤。
S201、使用排他锁从数据库中读取标识配置规则。
S202、判断从数据库中读取到的标识版本号与本地缓存空间中存储的标识版本号是否相同。
本实施例中,使用乐观锁的方式对数据库中的标识配置规则进行更新,从数据库中读取到的标识版本号是指从数据库中读取标识配置规则中包括的标识版本号。当从数据库中读取到的标识版本号与本地缓存空间中存储的标识版本号相同时,执行步骤S203,当从数据库中读取到的标识版本号与本地缓存空间中存储的标识版本号不相同时,执行步骤S204。
S203、判断读取次数是否大于预设次数。
该读取次数是指从数据库中读取标识配置规则的次数,每次读取该标识配置规则之后,将读取次数加1,该读取次数的初始可以为0。当该预设次数不大于(即小于或等于)预设次数时,返回执行步骤S201,当该预设次数大于预设此时,执行步骤S207。
S204、根据标识配置规则中包括的标识阈值和标识递增步长得到新的标识阈值,更新标识配置规则中的标识版本号。
标识生成服务器可以将标识阈值加上标识递增步长得到新的标识阈值,将标识版本号加1得到新的标识版本号(或者称为更新后的标识版本号)。
S205、根据新的标识阈值和更新后的标识版本号更新数据库以及本地缓存空间中存储的标识配置规则。
在更新数据库中的标识配置规则时,可以将新的标识阈值和更新后的标识版本号替换标识配置规则中的对应值,将更新后的标识配置规则发送给数据库,也可以将新的标识阈值和更新后的标识版本号携带在数据库更新消息中发送给数据库,由数据库根据该更新消息更新数据库中的标识配置规则。如果标识配置规则中包括最新修改时间,则相应的更新该最新修改时间。
该标识配置规则包括多个字段,例如,包括标识配置规则的标识、业务描述信息、业务标识的初始值、标识阈值、标识递增步长、标识版本号、业务标识是否连续递增的指示信息、业务前缀码、初始创建时间和最新修改时间等字段。可选的,标识配置规则中的每个字段占用一个缓存行(cache line)。
缓存系统中是以缓存行为单位进行存储的,缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节,当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。为了解决伪共享的问题,本实施例中,将标识配置规则的每个字段设置为占用一个缓存行,而该字段的实际取值可能只占用缓存行中的部分字节,所以需要对冗余的多个long类型字段进行补齐,例如,每个缓存行占用64个字节,标识阈值占用了32个字节,那么剩余32字节需要补齐。
具体的,将新的标识阈值更新到标识阈值字段对应的缓存行,当标识阈值字段对应的缓存行的字节没有被占满时,补齐标识阈值字段对应的缓存行,当标识阈值字段对应的缓存行被占满时,则不需要补齐。同样,将更新后的标识版本号更新到版本号字段对应的缓存行,当版本号字段对应的缓存行的字节没有被占满时,补齐版本号字段对应的缓存行,当版本号字段对应的缓存行的字节被占满时,不需要补齐版本号字段对应的缓存行。
S206、根据新的标识阈值和标识配置规则中的标识递增步长得到标识区间。
在标识配置规则更新完成之后,根据新的标识阈值和标识递增步长生成新的标识区间,并将该新的标识区间存储到本地缓存空间中。
S207、向业务服务器返回请求失败消息。
本实施例中,使用数据库排他锁从数据库中读取标识配置规则,避免多个请求同时从数据库读取相同的数据,减轻系统性能损耗。当从数据库中读取到的所述标识配置规则中包括的标识版本号与本地缓存空间中存储的标识版本号不相同,且从数据库读取标识配置规则的读取次数小于或等于预设次数时,重新使用排他锁从数据库中读取所述标识配置规则,当从数据库中读取到的标识配置规则中包括的标识版本号与本地缓存空间中存储的标识版本号相同时,根据标识配置规则中包括的标识阈值和标识递增步长得到新的标识阈值,更新标识配置规则中的标识版本号,根据更新后的标识配置规则得到新的标识区间。通过加入标识版本号字段,更新标识配置规则时通过对比版本号避免多个请求重复更新该规则,造成资源的浪费。
在实施例一和实施例二的基础上,本发明实施例三提供一种采用随机方式生成业务标识的方法,图4为发明实施例三提供的采用随机方式生成业务标识的方法的流程图,如图4所示,本实施例提供的方法包括以下步骤。
S301、从标识区间中获取一个随机数。
该标识区间是指由标识阈值和标识递增步长构成的区间。
S302、使用比特位图判断随机数是否被使用过。
一种实现方式中,该比特位图(bit set)中包括标识区间中已被使用过的随机数对应的比特位,示例性的,当该比特位的值为0或1,当比特位的值为0时,表示该比特位对应的随机数未被使用过,当比特位的值为1时,标识该比特位对应的随机数被使用过。或者,当比特位的值1时,表示该比特位对应的随机数未被使用过,当比特位的值为0时,标识该比特位对应的随机数被使用过。判断比特位图中是否存在该随机数,如果比特位图中存在该随机数,则确定该随机数被使用过,如果比特位图中不存在该随机数,则确定该随机数未被使用过。
可以理解,也可以通过其他方式判断随机数是否被使用,本实施例只是举例说明,并不构成限定。
当随机数被使用过时,执行步骤S303,当随机数未被使用过时,执行步骤S305。
S303、判断随机数的获取次数是否大于第一阈值。
当随机数被使用过时,需要重新从标识区间中获取一个新的随机数,当随机数的获取次数大于第一阈值时,执行步骤S304,当随机数的获取次数不大于第一阈值时,返回执行步骤S301,通过多次循环才能获取到为被使用的随机数。
该第一阈值可以是一个经验值,也可以是标识增长步长和负载因子的乘积,负载因子大于0且小于1。或者,将标识增长步长和负载因子的乘积取整后作为第一阈值。
S304、更新标识配置规则以及标识区间。
标识生成服务器可以采用异步方式更新标识配置规则和标识区间,采用异步方式更新可以理解为在处理请求的同时更新标识配置规则和标识区间,即标识配置规则的更新不会影响请求的处理,使得能够标识生成服务器能够及时向业务服务器返回业务标识。标识配置规则和标识区间的更新方式可以采用实施例二的方法,这里不再赘述。
S305、根据随机数生成目标业务的标识。
可以将随机数作为目标业务的标识,或者将业务前缀加上随机数构成目标业务的标识。
可选的,在另一种实现方式中,也可以将使用过的随机数从标识区间中删除,那么从标识区间中读取到随机数都是未被使用过的,也不需要判断随机数是否被使用过。
本实施例中,通过比特位图做过滤器判断随机数是否被使用过,能够方便的排除已被使用过的随机数,准确的为业务生成标识。
在实施例一和实施例二的基础上,本发明实施例四提供一种采用递增方式生成业务标识的方法,图5为发明实施例四提供的采用递增方式生成业务标识的方法的流程图,如图5所示,本实施例提供的方法包括以下步骤。
S401、判断当前标识是否大于或等于第二阈值,该第二阈值小于标识区间的上限值。
当前标识即为前一业务标识请求消息确定的业务标识,该当前标识可以记录在本地缓存空间中,每次生成新的业务标识之后,更新该当前标识。
可选的,第二阈值为标识区间的上限值与负载因子的乘积,该负载因子大于0且小于1。
当当前标识大于或等于所述第二阈值时,执行步骤S403,当当前标识小于第二阈值或者当前标识大于或等于第二阈值时,均执行步骤S402。
S402、使用当前标识加1得到候选标识。
S403、更新标识配置规则以及标识区间。
标识生成服务器可以采用异步方式更新标识配置规则和标识区间,采用异步方式更新可以理解为在处理请求的同时更新标识配置规则和标识区间,即标识配置规则的更新不会影响请求的处理,使得能够标识生成服务器能够及时向业务服务器返回业务标识。标识配置规则和标识区间的更新方式可以采用实施例二的方法,这里不再赘述。
S404、判断候选标识是否大于标识区间的上限值。
当候选标识大于标识区间的上限值时,执行步骤S405,当候选标识不大于(即小于或等于)标识区间的上限值时,执行S406。
S405、更新标识配置规则以及标识区间。
本步骤的具体实现参照步骤S403的描述,在步骤S405执行完之后,执行步骤S401,更新标识配置规则之后,如果第二阈值为所述标识区间的上限值与负载因子的乘积,那么第二阈值也相应变化,所有需要重新判断当前标识是否大于或等于第二阈值。
S406、根据候选标识生成目标业务的标识。
可以将候选标识作为目标业务的标识,或者将业务前缀加上候选标识构成目标业务的标识。
本实施例中,通过设置负载因子,当本地缓存空间中的标识未使用完,就从数据库获取业务标识规则并更新本地缓存空间中的业务标识规则,能够避免标识生成服务器由于从数据库读取业务标识配置规则而无法向业务服务器返回业务标识,导致业务时延较大或者业务标识请求失败。如果在本地缓存空间中的标识使用完之后在从数据库获取业务标识规则,那么在更新业务标识规则过程中没有可用标识为业务分配,从而导致业务时延较大或者业务标识请求失败。
在前述实施例的基础上,本发明实施例五提供一种分布式系统中业务标识的生成方法,图6为发明实施例五提供的分布式系统中业务标识的生成方法的流程图,如图6所示,本实施例提供的方法包括以下步骤。
S501、将标识配置规则配置在数据库的数据表中。
该标识配置规则可以包括标识配置规则包括主键、业务描述信息、业务标识的初始值、标识阈值、标识递增步长、标识版本号、业务标识是否连续递增的指示信息、业务前缀码、规则初始创建时间和最新修改时间等。
S502、标识生成服务器启动服务。
启动服务之后标识生成服务器能够向业务服务器提供标识生成服务,启动服务之后更新第一标识为标识生成服务器从未被访问过。
S503、标识生成服务器从数据库中将所有标识配置规则读取到本地缓存空间中。
S504、业务服务器向标识生成服务器发送业务标识请求消息。
S505、标识生成服务器对业务标识请求消息加别悲观锁。
悲观锁用于解决并发问题,当标识生成服务器接收到多个业务标识请求消息时,通过悲观锁,能够顺序对多个业务标识请求消息进行处理。
S506、判断业务标识请求消息是否为服务启动后的第一次请求。
可以通过第一标识判断该请求是否为服务启动后的第一次请求,如果第一标识为标识生成服务器从未被访问过,则确定该请求是服务启动后的第一次请求,如果第一标识为标识生成服务器已被访问过,则确定该请求不是服务启动后的第一次请求。其中,在第一次请求之后第一标识被更新为标识生成服务器已被访问过。当该请求是服务启动后的第一次请求时,执行步骤S507,当该请求不是服务启动后的第一次请求时,执行步骤S509。
S507、更新数据库中该业务标识请求消息对应的标识配置规则。
本步骤更新了标识配置规则中的标识阈值和版本号,具体更新过程参照前述实施例的描述,这里不再赘述。
S508、标识生成服务器将更新后的标识配置规则存储到本地缓存空间。
可以通过补齐缓存行的方式将更新后的标识配置规则存储到本地缓存空间,具体实现方式参照前述实施例的描述,这里不再赘述。
S509、标识生成服务器从本地缓存空间中确定目标业务的标识。
本实施例中,可以通过随机方式和递增方式从本地缓存空间中确定目标业务的标识,针对随机方式,标识生成服务器根据本地缓存空间中存储的标识配置规则,从标识阈值到标识阈值+标识递增步长之间生成一个随机数,针对递增方式,本地缓存空间中保存了该标识生成规则的当前标识,将当前标识+1得到候选标识,进一步判断候选标识是否可用,并生成业务标识,上述两个方式的具体实现方式参照实施例三和实施例四的相关描述,这里不再赘述。
S510、标识生成服务器解除悲观锁。
S511、标识生成服务器向业务服务器返回请求的业务标识。
图7为本发明实施例六提供的一种标识生成服务器的结构示意图,如图7所示,本实施例提供的服务器包括200,包括:
接收模块21,用于接收业务服务器发送的业务标识请求消息,所述业务标识请求消息用于请求目标业务的标识;
获取模块22,用于获取本次使用的标识区间,所述标识区间是根据标识配置规则确定的,所述标识配置规则中包括标识阈值、标识递增步长和标识版本号;
第一确定模块23,用于根据所述业务标识请求消息确定标识生成方式,所述标识生成方式为随机方式或者递增方式;
第二确定模块24,用于根据所述标识生成方式,从所述标识区间中确定所述目标业务的标识;
发送模块25,用于向所述业务服务器返回请求响应,所述请求响应中包括所述目标业务的标识。
可选的,所述获取模块22具体用于:
加悲观锁,所述悲观锁在所述目标业务的标识生成之后解锁;
判断所述业务标识请求消息是否为所述标识生成服务器启动后的第一次请求;
如果所述业务标识请求消息是所述标识生成服务器启动后的第一次请求,则更新所述标识配置规则以及所述标识区间,更新后的所述标识区间为本次使用的标识区间;
如果所述业务标识请求消息不是所述标识生成服务器启动后的第一次请求,则将本地缓存空间读取到的标识区间作为本次使用的标识区间。
可选的,所述标识生成方式为随机方式,所述根据所述标识生成方式,从所述标识区间中确定所述目标业务的标识,具体为:
从所述标识区间中获取一个随机数;
当所述随机数未被使用时,根据所述随机数生成所述目标业务的标识;
当所述随机数据已被使用时,且随机数的获取次数小于或等于第一阈值时,重新从所述标识区间中获取一个随机数;
当所述随机数已被使用,且所述随机数的重新获取次数大于第一阈值时,更新所述标识配置规则以及所述标识区间。
可选的,所述获取模块22从所述标识区间中获取一个随机数之后,还用于:使用比特位图判断所述随机数是否被使用过,其中,所述比特位图中包括所述标识区间中已被使用过的随机数对应的比特位。
可选的,所述第一阈值为标识增长步长和负载因子的乘积,所述负载因子大于0且小于1。
可选的,所述标识生成方式为递增方式,所述根据所述标识生成方式,从所述标识区间中确定所述目标业务的标识,具体为:
使用当前标识加1得到候选标识;
当所述候选标识小于或等于所述标识区间的上限值时,根据所述候选标识生成所述目标业务的标识;
当所述候选标识大于所述标识区间的上限值时,更新所述标识配置规则以及所述标识区间,返回执行使用所述当前标识加1得到候选标识的步骤。
可选的,所述获取模块22使用所述当前标识加1得到候选标识之前,还用于:
判断所述当前标识是否大于或等于第二阈值,所述第二阈值小于所述标识区间的上限值;
当所述当前标识大于或等于所述第二阈值时,更新所述标识配置规则以及所述标识区间;
当所述当前标识小于所述第二阈值,或者所述当前标识大于或等于所述第二阈值时,使用所述当前标识加1得到候选标识。
可选的,所述第二阈值为所述标识区间的上限值与负载因子的乘积,所述负载因子大于0且小于1;
所述更新所述标识配置规则以及所述标识区间,包括:
采用异步方式使用排它锁更新所述标识配置规则以及所述标识区间。
可选的,所述更新所述标识配置规则以及所述标识区间,具体为:
使用排他锁从所述数据库中读取所述标识配置规则;
当从所述数据库中读取到的所述标识配置规则中包括的标识版本号与本地缓存空间中存储的标识版本号不相同,且从所述数据库读取所述标识配置规则的读取次数小于或等于预设次数时,重新使用排他锁从所述数据库中读取所述标识配置规则;
当从所述数据库中读取到的所述标识配置规则中包括的标识版本号与本地缓存空间中存储的标识版本号相同时,根据所述标识配置规则中包括的标识阈值和标识递增步长得到新的标识阈值,更新所述标识配置规则中的标识版本号;
根据所述新的标识阈值和更新后的标识版本号更新所述数据库以及本地缓存空间中存储的所述标识配置规则;
根据所述新的标识阈值和所述标识配置规则中的标识递增步长得到所述标识区间。
可选的,当从所述数据库中读取到的所述标识配置规则中包括的标识版本号与本地缓存空间中存储的标识版本号不相同,且从所述读取次数大于所述预设次数时,所述发送模块25还用于:向所述业务服务器返回请求失败消息。
可选的,还包括启动模块,用于:
启动服务,并更新第一标识为所述标识生成服务器从未被访问过;
从所述数据库获取多个标识配置规则,并存储到本地缓存空间,所述标识配置规则包括所述标识配置规则的标识、业务描述信息、业务标识的初始值、标识阈值、标识递增步长、标识版本号和业务标识是否连续递增的指示信息。
可选的,所述标识配置规则中还包括业务前缀码、所述标识配置规则的初始创建时间和最新修改时间。
可选的,所述判断所述业务标识请求消息是否为所述标识生成服务器启动后的第一次请求,具体为:
根据所述第一标识判断所述业务标识请求消息是否所述标识生成服务器启动之后收到的第一个请求;
如果所述业务标识请求消息是所述标识生成服务器启动后的第一次请求,所述获取模块22使用排它锁更新所述标识配置规则以及所述标识区间之后,还用于:更新所述第一标识为所述标识生成服务器已被访问过。
可选的,所述标识配置规则包括多个字段,所述标识配置规则中的每个字段占用一个缓存行;
所述根据所述新的标识阈值和更新后的标识版本号更新本地缓存空间中存储的所述标识配置规则,具体为:
将所述新的标识阈值更新到标识阈值字段对应的缓存行;
当所述标识阈值字段对应的缓存行的字节没有被占满时,补齐所述标识阈值字段对应的缓存行;
将更新后的标识版本号更新到版本号字段对应的缓存行;
当所述版本号字段对应的缓存行的字节没有被占满时,补齐所述版本号字段对应的缓存行。
可选的,还包括统计模块,用于统计所述目标业务对所述数据库的访问频率,当所述访问频率高于预设频率时,增大所述标识配置规则中的标识递增步长。
可选的,所述标识配置规则中还包括业务前缀,所述根据所述随机数生成所述目标业务的标识,具体为:将所述业务前缀加在所述随机数之前生成所述目标业务的标识。
可选的,所述标识配置规则中还包括业务前缀,所述根据所述候选标识生成所述目标业务的标识,具体为:将所述业务前缀加在所述候选标识之前生成所述目标业务的标识。
本实施例的装置,可用于执行上述实施例一至实施例五任一实施例所述的方法,具体实现方式和技术效果类似,这里不再赘述。
图8为本发明实施例七提供的标识生成服务器的一种结构示意图,如图8所示,该标识生成服务器300包括:处理器31、存储器32和收发器33,所述存储器32用于存储指令,所述收发器33用于和其他设备通信,所述处理器31用于执行所述存储器中存储的指令,以使所述电子设备300执行如上述实施例一至五中任一实施例所述的方法,具体实现方式和技术效果类似,这里不再赘述。
本发明实施例八提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述实施例一至五中任一实施例所述的方法,具体实现方式和技术效果类似,这里不再赘述。
本发明实施例九提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上述实施例一至五中任一实施例所述的方法,具体实现方式和技术效果类似,这里不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (21)
1.一种分布式系统中业务标识的生成方法,应用于标识生成服务器,其特征在于,包括:
接收业务服务器发送的业务标识请求消息,所述业务标识请求消息用于请求目标业务的标识;
获取本次使用的标识区间,所述标识区间是根据标识配置规则确定的,所述标识配置规则中包括标识阈值、标识递增步长和标识版本号;
根据所述业务标识请求消息确定标识生成方式,所述标识生成方式为随机方式或者递增方式;
根据所述标识生成方式,从所述标识区间中确定所述目标业务的标识;
向所述业务服务器返回请求响应,所述请求响应中包括所述目标业务的标识。
2.根据权利要求1所述的方法,其特征在于,所述获取本次使用的标识区间,包括:
加悲观锁,所述悲观锁在所述目标业务的标识生成之后解锁;
判断所述业务标识请求消息是否为所述标识生成服务器启动后的第一次请求;
如果所述业务标识请求消息是所述标识生成服务器启动后的第一次请求,则更新所述标识配置规则以及所述标识区间,更新后的所述标识区间为本次使用的标识区间;
如果所述业务标识请求消息不是所述标识生成服务器启动后的第一次请求,则将本地缓存空间读取到的标识区间作为本次使用的标识区间。
3.根据权利要求1所述的方法,其特征在于,所述标识生成方式为随机方式,所述根据所述标识生成方式,从所述标识区间中确定所述目标业务的标识,包括:
从所述标识区间中获取一个随机数;
当所述随机数未被使用时,根据所述随机数生成所述目标业务的标识;
当所述随机数据已被使用时,且随机数的获取次数小于或等于第一阈值时,重新从所述标识区间中获取一个随机数;
当所述随机数已被使用,且所述随机数的重新获取次数大于第一阈值时,更新所述标识配置规则以及所述标识区间。
4.根据权利要求3所述的方法,其特征在于,从所述标识区间中获取一个随机数之后,还包括:
使用比特位图判断所述随机数是否被使用过,其中,所述比特位图中包括所述标识区间中已被使用过的随机数对应的比特位。
5.根据权利要求3所述的方法,其特征在于,所述第一阈值为标识增长步长和负载因子的乘积,所述负载因子大于0且小于1。
6.根据权利要求1所述的方法,其特征在于,所述标识生成方式为递增方式,所述根据所述标识生成方式,从所述标识区间中确定所述目标业务的标识,包括:
使用当前标识加1得到候选标识;
当所述候选标识小于或等于所述标识区间的上限值时,根据所述候选标识生成所述目标业务的标识;
当所述候选标识大于所述标识区间的上限值时,更新所述标识配置规则以及所述标识区间,返回执行使用所述当前标识加1得到候选标识的步骤。
7.根据权利要求6所述的方法,其特征在于,所述使用所述当前标识加1得到候选标识之前,还包括:
判断所述当前标识是否大于或等于第二阈值,所述第二阈值小于所述标识区间的上限值;
当所述当前标识大于或等于所述第二阈值时,更新所述标识配置规则以及所述标识区间;
当所述当前标识小于所述第二阈值,或者所述当前标识大于或等于所述第二阈值时,使用所述当前标识加1得到候选标识。
8.根据权利要求7所述的方法,其特征在于,所述第二阈值为所述标识区间的上限值与负载因子的乘积,所述负载因子大于0且小于1;
所述更新所述标识配置规则以及所述标识区间,包括:
采用异步方式使用排它锁更新所述标识配置规则以及所述标识区间。
9.根据权利要求2、3、6、7中任一项所述的方法,其特征在于,所述更新所述标识配置规则以及所述标识区间,包括:
使用排他锁从所述数据库中读取所述标识配置规则;
当从所述数据库中读取到的所述标识配置规则中包括的标识版本号与本地缓存空间中存储的标识版本号不相同,且从所述数据库读取所述标识配置规则的读取次数小于或等于预设次数时,重新使用排他锁从所述数据库中读取所述标识配置规则;
当从所述数据库中读取到的所述标识配置规则中包括的标识版本号与本地缓存空间中存储的标识版本号相同时,根据所述标识配置规则中包括的标识阈值和标识递增步长得到新的标识阈值,更新所述标识配置规则中的标识版本号;
根据所述新的标识阈值和更新后的标识版本号更新所述数据库以及本地缓存空间中存储的所述标识配置规则;
根据所述新的标识阈值和所述标识配置规则中的标识递增步长得到所述标识区间。
10.根据权利要求9所述的方法,其特征在于,还包括:
当从所述数据库中读取到的所述标识配置规则中包括的标识版本号与本地缓存空间中存储的标识版本号不相同,且从所述读取次数大于所述预设次数时,向所述业务服务器返回请求失败消息。
11.根据权利要求2所述的方法,其特征在于,所述接收业务服务器发送的业务标识请求消息之前,还包括:
启动服务,并更新第一标识为所述标识生成服务器从未被访问过;
从所述数据库获取多个标识配置规则,并存储到本地缓存空间,所述标识配置规则包括所述标识配置规则的标识、业务描述信息、业务标识的初始值、标识阈值、标识递增步长、标识版本号和业务标识是否连续递增的指示信息。
12.根据权利要求11所述的方法,其特征在于,所述标识配置规则中还包括业务前缀码、所述标识配置规则的初始创建时间和最新修改时间。
13.根据权利要求11所述的方法,其特征在于,所述判断所述业务标识请求消息是否为所述标识生成服务器启动后的第一次请求,包括:
根据所述第一标识判断所述业务标识请求消息是否所述标识生成服务器启动之后收到的第一个请求;
如果所述业务标识请求消息是所述标识生成服务器启动后的第一次请求,所述使用排它锁更新所述标识配置规则以及所述标识区间之后,还包括:
更新所述第一标识为所述标识生成服务器已被访问过。
14.根据权利要求9所述的方法,其特征在于,所述标识配置规则包括多个字段,所述标识配置规则中的每个字段占用一个缓存行;
所述根据所述新的标识阈值和更新后的标识版本号更新本地缓存空间中存储的所述标识配置规则,包括:
将所述新的标识阈值更新到标识阈值字段对应的缓存行;
当所述标识阈值字段对应的缓存行的字节没有被占满时,补齐所述标识阈值字段对应的缓存行;
将更新后的标识版本号更新到版本号字段对应的缓存行;
当所述版本号字段对应的缓存行的字节没有被占满时,补齐所述版本号字段对应的缓存行。
15.根据权利要求1-8任一项所述的方法,其特征在于,还包括:
统计所述目标业务对所述数据库的访问频率;
当所述访问频率高于预设频率时,增大所述标识配置规则中的标识递增步长。
16.根据权利要求3所述的方法,其特征在于,所述标识配置规则中还包括业务前缀;
所述根据所述随机数生成所述目标业务的标识,包括:
将所述业务前缀加在所述随机数之前生成所述目标业务的标识。
17.根据权利要求6所述的方法,其特征在于,所述标识配置规则中还包括业务前缀;
所述根据所述候选标识生成所述目标业务的标识,包括:
将所述业务前缀加在所述候选标识之前生成所述目标业务的标识。
18.一种标识生成服务器,其特征在于,包括:
接收模块,用于接收业务服务器发送的业务标识请求消息,所述业务标识请求消息用于请求目标业务的标识;
获取模块,用于获取本次使用的标识区间,所述标识区间是根据标识配置规则确定的,所述标识配置规则中包括标识阈值、标识递增步长和标识版本号;
第一确定模块,用于根据所述业务标识请求消息确定标识生成方式,所述标识生成方式为随机方式或者递增方式;
第二确定模块,用于根据所述标识生成方式,从所述标识区间中确定所述目标业务的标识;
发送模块,用于向所述业务服务器返回请求响应,所述请求响应中包括所述目标业务的标识。
19.一种标识生成服务器,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至17任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至17任一项所述的方法。
21.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至17任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110411291.3A CN113076303A (zh) | 2021-04-16 | 2021-04-16 | 分布式系统中业务标识的生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110411291.3A CN113076303A (zh) | 2021-04-16 | 2021-04-16 | 分布式系统中业务标识的生成方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113076303A true CN113076303A (zh) | 2021-07-06 |
Family
ID=76617725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110411291.3A Pending CN113076303A (zh) | 2021-04-16 | 2021-04-16 | 分布式系统中业务标识的生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113076303A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113886276A (zh) * | 2021-12-06 | 2022-01-04 | 北京达佳互联信息技术有限公司 | 业务创建方法、装置、服务器及存储介质 |
CN113986555A (zh) * | 2021-11-10 | 2022-01-28 | 深圳前海微众银行股份有限公司 | 缓存优化方法、装置、设备及可读存储介质 |
CN114124541A (zh) * | 2021-11-25 | 2022-03-01 | 北京锐安科技有限公司 | 一种规则id的数据处理方法、装置、设备及存储介质 |
CN115002078A (zh) * | 2022-05-11 | 2022-09-02 | 北京奇艺世纪科技有限公司 | 一种id生成方法及装置 |
CN116346885A (zh) * | 2023-05-24 | 2023-06-27 | 北京飞轮数据科技有限公司 | 标识信息生成方法、装置、电子设备和计算机可读介质 |
-
2021
- 2021-04-16 CN CN202110411291.3A patent/CN113076303A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986555A (zh) * | 2021-11-10 | 2022-01-28 | 深圳前海微众银行股份有限公司 | 缓存优化方法、装置、设备及可读存储介质 |
CN114124541A (zh) * | 2021-11-25 | 2022-03-01 | 北京锐安科技有限公司 | 一种规则id的数据处理方法、装置、设备及存储介质 |
CN114124541B (zh) * | 2021-11-25 | 2024-02-09 | 北京锐安科技有限公司 | 一种规则id的数据处理方法、装置、设备及存储介质 |
CN113886276A (zh) * | 2021-12-06 | 2022-01-04 | 北京达佳互联信息技术有限公司 | 业务创建方法、装置、服务器及存储介质 |
CN113886276B (zh) * | 2021-12-06 | 2022-03-25 | 北京达佳互联信息技术有限公司 | 业务创建方法、装置、服务器及存储介质 |
CN115002078A (zh) * | 2022-05-11 | 2022-09-02 | 北京奇艺世纪科技有限公司 | 一种id生成方法及装置 |
CN115002078B (zh) * | 2022-05-11 | 2024-04-09 | 北京奇艺世纪科技有限公司 | 一种id生成方法及装置 |
CN116346885A (zh) * | 2023-05-24 | 2023-06-27 | 北京飞轮数据科技有限公司 | 标识信息生成方法、装置、电子设备和计算机可读介质 |
CN116346885B (zh) * | 2023-05-24 | 2023-07-28 | 北京飞轮数据科技有限公司 | 标识信息生成方法、装置、电子设备和计算机可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113076303A (zh) | 分布式系统中业务标识的生成方法和装置 | |
CN111694649B (zh) | 资源调度方法、装置、计算机设备和存储介质 | |
CN109361609B (zh) | 防火墙设备的报文转发方法、装置、设备及存储介质 | |
CN107733957B (zh) | 分布式服务配置系统及版本号分配方法 | |
CN109117275B (zh) | 基于数据分片的对账方法、装置、计算机设备及存储介质 | |
CN109766349B (zh) | 任务防重方法、装置、计算机设备及存储介质 | |
CN104572727A (zh) | 一种数据查询方法及装置 | |
CN111159233B (zh) | 分布式缓存方法、系统、计算机设备以及存储介质 | |
US20190372825A1 (en) | Communication apparatus, communication method, and recording medium | |
US20170285951A1 (en) | Packed row representation for efficient network serialization with direct column indexing in a network switch | |
CN108429641B (zh) | 一种网络设备管理方法及装置 | |
CN112328632B (zh) | 一种分布式两级缓存的方法和系统 | |
CN111711708B (zh) | 一种LoRaWAN终端设备地址分配方法 | |
JP6233846B2 (ja) | 可変長ノンスの生成 | |
US10185735B2 (en) | Distributed database system and a non-transitory computer readable medium | |
CN110888892A (zh) | 一种区块同步方法、装置及存储介质 | |
CN113163027B (zh) | 数据标识的生成方法、装置、设备及存储介质 | |
CN115391703A (zh) | 一种界面信息处理方法及装置 | |
CN113905252A (zh) | 直播间的数据存储方法、装置、电子设备及存储介质 | |
CN113779052A (zh) | 数据更新方法、装置、设备及存储介质 | |
CN113760519A (zh) | 分布式事务处理方法、装置、系统和电子设备 | |
CN106021121B (zh) | 用以优化分组缓冲器空间的分组处理系统、方法和设备 | |
CN112866355B (zh) | 用于服务器故障转移和负荷平衡的系统和方法 | |
CN117075823B (zh) | 对象查找方法、系统、电子设备及存储介质 | |
CN113793148B (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 |