CN110580305A - 生成标识符的方法、装置、系统和介质 - Google Patents

生成标识符的方法、装置、系统和介质 Download PDF

Info

Publication number
CN110580305A
CN110580305A CN201810499663.0A CN201810499663A CN110580305A CN 110580305 A CN110580305 A CN 110580305A CN 201810499663 A CN201810499663 A CN 201810499663A CN 110580305 A CN110580305 A CN 110580305A
Authority
CN
China
Prior art keywords
identifier
time information
instance
generating
current time
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.)
Granted
Application number
CN201810499663.0A
Other languages
English (en)
Other versions
CN110580305B (zh
Inventor
卞祥
沈志明
金晓明
周龙亭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201810499663.0A priority Critical patent/CN110580305B/zh
Publication of CN110580305A publication Critical patent/CN110580305A/zh
Application granted granted Critical
Publication of CN110580305B publication Critical patent/CN110580305B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了一种生成标识符的方法、装置、系统和介质。所述生成标识符的方法包括:获取表征第一标识符的生成时间的第一时间信息,获取用于生成所述第一标识符的实例的标识信息,获取所述第一标识符的序列号,基于所述第一时间信息、所述实例的标识信息、以及所述第一标识符的序列号生成所述第一标识符。本公开还可提供了了一种用于生成标识符的方法、装置、系统和介质。所述用于生成标识符的方法包括接收为特定业务生成标识符的请求,响应于所述请求,确定为所述特定业务提供标识符生成服务的一个或多个实例,以及通过所述一个或多个实例中的一个实例根据本公开提供的生成标识符的方法生成标识符。

Description

生成标识符的方法、装置、系统和介质
技术领域
本公开涉及互联网技术领域,更具体地,涉及一种生成标识符的方法、装置、系统和介质,以及一种用于生成标识符的方法、装置、系统和介质。
背景技术
几乎所有的系统,都需要对大量的数据和消息进行唯一的标识。现有的标识符生成方案中常用的有UUID(Universally Unique Identifier,通用唯一识别码)或MySQL数据库的自增长标识机制。
在实现本公开构思的过程中,发明人发现现有技术中至少存在如下问题:UUID是16进制的字符串,不是整数,字段比较长,不好做数据库的索引字段,而且字符串无法排序,更无法保证生成的标识符的递增趋势;MySQL自增长标识机制中标识符的生成性能依赖于MySQL数据库的读写性能。
发明内容
有鉴于此,本公开提供了一种能够生成整数标识符的标识符生成方法、装置、介质和系统。本公开还提供了一种不依赖于数据库的、可水平扩展的用于生成标识符的方法、装置、介质和系统
本公开的第一方面提供了一种生成标识符的方法。所述方法包括获取表征第一标识符的生成时间的第一时间信息,其中所述第一时间信息为[0,2M)范围内的一个整数,获取用于生成所述第一标识符的实例的标识信息,其中所述实例的标识信息为[0,2N)范围内的一个整数,获取所述第一标识符的序列号,其中所述第一标识符的序列号为[0,2R)范围内的一个整数,以及基于所述第一时间信息、所述实例的标识信息、以及所述第一标识符的序列号生成所述第一标识符,其中所述第一标识符为[0,2M+N+R+x)范围内的一个整数,其中M,N和R均为大于等于1的正整数,以及x为大于等于0的整数。
根据本公开的实施例,基于所述第一时间信息、所述实例的标识信息、以及所述第一标识符的序列号生成所述第一标识符,包括通过位操作生成所述第一标识符;具体为:
ID=time<<(R+N)|machine_id<<R|seq,
其中,ID为所述第一标识符,time为所述第一时间信息,machine_id为所述实例的标识信息,seq为所述第一标识符的序列号。
根据本公开的实施例,所述第一时间信息的计量单位包括毫秒;和/或M=41,N=10,R=12。
根据本公开的实施例,所述方法还包括接收生成所述第一标识符的请求信息。所述获取表征第一标识符的生成时间的第一时间信息包括:响应于接收到的所述请求信息,获取表征当前时刻的当前时间信息、以及表征第二标识符的生成时间的第二时间信息,其中所述第二标识符为所述实例在当前时刻之前生成的标识符;比较所述当前时间信息与所述第二时间信息的大小,其中所述当前时间信息与所述第二时间信息均为从同一计时起点开始,以预定的计时单位累计得到的整数;基于所述比较的结果确定所述第一时间信息。
根据本公开的实施例,基于所述比较的结果确定所述第一时间信息,包括响应于所述当前时间信息小于所述第二时间信息,确定所述实例提供的标识符生成服务发生错误,或者响应于所述当前时间信息大于所述第二时间信息,确定以所述当前时间信息作为所述第一时间信息,或者响应于所述当前时间信息等于所述第二时间信息,根据所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定所述第一时间信息。响应于所述当前时间信息等于所述第二时间信息,根据所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定所述第一时间信息,具体包括在所述实例具有继续生成标识符的资源的条件下,确定以所述第二时间信息作为所述第一时间信息,或者在所述实例不具有继续生成标识符的资源的条件下,等待在当前时刻之后的下一个计时单位内生成所述第一标识符;以及确定将表征所述下一个计时单位的下一时间信息作为所述第一时间信息。
根据本公开的实施例,响应于所述当前时间信息等于所述第二时间信息,根据所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定所述第一时间信息,还包括确定所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源。所述确定所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源具体包括获取所述第二标识符的序列号加1后,对2R求余所得的计算结果,在所述计算结果为零时,确定所述实例在当前时刻所在的计时单位内没有继续生成标识符的资源,或者在所述计算结果不为零时,确定所述实例在当前时刻所在的计时单位内具有继续生成标识符的资源。
根据本公开的实施例,获取所述第一标识符的序列号,包括当所述第一时间信息与所述第二时间信息不同时,随机确定0~9中任意一个数作为所述第一标识符的序列号,或者当所述第一时间信息与所述第二时间信息相同时,将所述第二标识符的序列号加1以获得所述第一标识符的序列号。
本公开的第二方面提供了一种用于生成标识符的方法。所述方法包括接收为特定业务生成标识符的请求,响应于所述请求,确定为所述特定业务提供标识符生成服务的一个或多个实例,以及通过所述一个或多个实例中的一个实例根据本公开第一方面提供的方法生成所述第一标识符。
根据本公开的实施例,所述用于生成标识符的方法,还包括注册所述一个或多个实例,以使所述一个或多个实例具备为所述特定业务提供标识符生成服务的能力。
本公开的第三方面提供了一种生成标识符的装置,包括时间信息获取模块、实例标识获取模块、序列号获取模块和标识符生成模块。时间信息获取模块用于获取表征第一标识符的生成时间的第一时间信息,其中所述第一时间信息为[0,2M)范围内的一个整数。实例标识获取模块用于获取用于生成所述第一标识符的实例的标识信息,其中所述实例的标识信息为[0,2N)范围内的一个整数。序列号获取模块用于获取所述第一标识符的序列号,其中所述第一标识符的序列号为[0,2R)范围内的一个整数。标识符生成模块用于基于所述第一时间信息、所述实例的标识信息、以及所述第一标识符的序列号生成所述第一标识符,其中所述第一标识符为[0,2M+N+R+x)范围内的一个整数,其中M,N和R均为大于等于1的正整数,以及x为大于等于0的整数。
根据本公开的实施例,所述标识符生成模块具体用于通过位操作生成所述第一标识符,具体包括:
ID=time<<(R+N)|machine_id<<R|seq,
其中,ID为所述第一标识符,time为所述第一时间信息,machine_id为所述实例的标识信息,seq为所述第一标识符的序列号。
根据本公开的实施例,所述第一时间信息的计量单位包括毫秒;和/或M=41,N=10,R=12。
根据本公开的实施例,所述装置还包括请求信息接收模块。所述请求信息接收模块用于接收生成所述第一标识符的请求信息。所述时间信息获取模块包括时间信息获取子模块、时间信息比较子模块和时间信息确定子模块。时间信息获取子模块用于响应于接收到的所述请求信息,获取表征当前时刻的当前时间信息、以及表征第二标识符的生成时间的第二时间信息,其中所述第二标识符为所述实例在当前时刻之前生成的标识符。时间信息比较子模块用于比较所述当前时间信息与所述第二时间信息的大小,其中所述当前时间信息与所述第二时间信息均为从同一计时起点开始,以预定的计时单位累计得到的整数。时间信息确定子模块用于基于所述比较结果确定所述第一时间信息。
根据本公开的实施例,所述时间信息确定子模块具体用于响应于所述当前时间信息小于所述第二时间信息,确定所述实例提供的标识符生成服务发生错误,或者响应于所述当前时间信息大于所述第二时间信息,确定以所述当前时间信息作为所述第一时间信息,或者响应于所述当前时间信息等于所述第二时间信息,根据所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定所述第一时间信息。其中,响应于所述当前时间信息等于所述第二时间信息,根据所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定所述第一时间信息,包括在所述实例具有继续生成标识符的资源的条件下,确定以所述第二时间信息作为所述第一时间信息,或者在所述实例不具有继续生成标识符的资源的条件下,等待在当前时刻之后的下一个计时单位内生成所述第一标识符;以及确定将表征所述下一个计时单位的下一时间信息作为所述第一时间信息。
根据本公开的实施例,响应于所述当前时间信息等于所述第二时间信息,根据所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定所述第一时间信息,还包括确定所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源。其中,确定所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源,具体包括获取所述第二标识符的序列号加1后,对2R求余所得的计算结果,在所述计算结果为零时,确定所述实例在当前时刻所在的计时单位内没有继续生成标识符的资源,或者在所述计算结果不为零时,确定所述实例在当前时刻所在的计时单位内具有继续生成标识符的资源。
根据本公开的实施例,序列号获取模块,具体用于当所述第一时间信息与所述第二时间信息不同时,随机确定0~9中任意一个数作为所述第一标识符的序列号,或者当所述第一时间信息与所述第二时间信息相同时,将所述第二标识符的序列号加1以获得所述第一标识符的序列号。
本公开的第四方面提供了一种用于生成标识符的装置,包括请求接收模块、实例确定模块以及标识符生成模块。请求接收模块用于接收为特定业务生成标识符的请求。实例确定模块用于响应于所述请求,确定为所述特定业务提供标识符生成服务的一个或多个实例。标识符生成模块用于通过所述一个或多个实例中的一个实例根据本公开第一方面提供的生成标识符的方法生成所述第一标识符。
根据本公开的实施例,所述装置还包括注册模块。注册模块用于注册所述一个或多个实例,以使所述一个或多个实例具备为所述特定业务提供标识符生成服务的能力。
本公开的第五方面提供了一种生成标识符的系统。所述系统包括一个或多个处理器,以及用于存储一个或多个程序的存储装置。其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行本公开第一方面提供的生成标识符的方法。
本公开的第六方面提供了一种计算机可读介质,其上存储有可执行指令。该指令被处理器执行时使处理器执行本公开第一方面提供的生成标识符的方法。
本公开的第七方面提供了一种生成标识符的系统。所述系统包括一个或多个处理器、以及用于存储一个或多个程序的存储装置。其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行本公开第二方面提供的用于生成标识符的方法。
本公开的第八方面提供了一种计算机可读介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行本公开第二方面提供的用于生成标识符的方法。
本公开的第九方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于执行本公开第一方面或第二方面提供的方法。
根据本公开的实施例,可以至少部分地解决UUID标识符字符串长、难以检索的问题,并因此可以实现生成的标识符为整数,便于检索和排序等的技术效果。
根据本公开的实施例,可以至少部分地减少标识符的生成对数据库的依赖,并因此可以实现标识符的生成对系统异常的适应调整能力、以及提升标识符生成服务的水平扩展能力。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的生成标识符的方法、装置、系统和介质的应用场景;
图2A示意性示出了根据本公开实施例的生成标识符的方法的流程图;
图2B示意性示出了根据本公开实施例的生成标识符的方法生成的一个64位的整数标识符的数据结构;
图3A示意性示出了根据本公开另一实施例的生成标识符的方法的流程图;
图3B示意性示出了根据本公开实施例的生成标识符的方法的一个具体应用的流程图;
图4A示意性示出了根据本公开实施例的用于生成标识符的方法的流程图;
图4B示意性示出了根据本公开实施例的用于生成标识符的一个系统架构的示例;
图4C示意性示出了图4B示例的系统架构中标识符生成服务启动过程中加载的配置文件的格式;
图5示意性示出了根据本公开实施例的生成标识符的装置的框图;
图6A示意性示出了根据本公开另一实施例的生成标识符的装置的框图;
图6B示意性示出了根据本公开实施例的生成标识符的装置中时间信息获取模块的框图;
图7示意性示出了根据本公开实施例的适于实现生成标识符的计算机系统的方框图。
图8示意性示出了根据本公开实施例的用于生成标识符的装置的框图;以及
图9示意性示出了根据本公开实施例的适于实现用于生成标识符的计算机系统的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性。
本公开实施例提供了一种生成标识符的方法、装置、系统和介质。该生成标识符的方法包括:获取表征第一标识符的生成时间的第一时间信息,获取用于生成该第一标识符的实例的标识信息,获取该第一标识符的序列号,基于该第一时间信息、该实例的标识信息、以及该第一标识符的序列号生成该第一标识符。根据本公开的实施例,生成的标识符可以为整数,方便检索,甚至可以对标识符进行排序等。
本公开实施例还可提供了了一种用于生成标识符的方法、装置、系统和介质。该用于生成标识符的方法包括接收为特定业务生成标识符的请求,响应于该请求确定为该特定业务提供标识符生成服务的一个或多个实例,以及通过该一个或多个实例中的一个实例根据本公开提供的生成标识符的方法生成标识符。根据本公开的实施例,可以至少部分地减少标识符的生成对数据库的依赖,并因此可以实现标识符的生成对系统异常的适应调整能力、以及提升标识符生成服务的水平扩展能力。
图1示意性示出了根据本公开实施例的生成标识符的方法、装置、系统和介质的应用场景100。需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的应用场景100可以包括用户服务部分100A和标识符生成服务部分100B。用户服务部分100A可以根据业务需求调用标识符生成服务部分100B的标识符生成服务,以生成业务所需的标识符,从而对大量的业务信息或数据中的每一个进行唯一标识。例如,当一个用户通过业务服务部分100A进行账户注册时,对应于该账户注册业务就可以调用标识符生成服务部分100B,以生成一个对应于该注册账户的唯一标识符。再例如,当用户通过业务服务部分100A中的购物平台进行了下单,对应于该订单业务就可以通过标识符生成服务部分100B生成一个对应于该订单的唯一标识符。
根据该实施例,用户服务部分100A包括用户终端101、102、103,网络104和业务后台服务器105,网络104用以在用户终端101、102、103和业务后台服务器105之间提供通信链路的介质。标识符生成服务部分100B包括一个或多个标识符生成服务器(集群)111和网络112,网络112用以在标识符生成服务器(集群)111中、以及标识符生成服务器(集群)111与业务后台服务器105之间提供通信链路的介质。在一些实施例中,标识符生成服务部分100B可以是分布式系统。网络104和网络112可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。具体地,用户服务部分100A中的业务后台服务器105可以根据业务需求产生对应的标识符生成请求,并通过该请求调用标识符生成服务部分100B的标识符生成服务。
根据该实施例,在用户服务部分100A中,用户可以使用用户终端101、102、103通过网络104与业务后台服务器105交互,以接收或发送消息等(例如,注册、下单、发送邮件、搜索信息、写微博或博客等)。用户终端101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
用户终端101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
业务后台服务器105可以是提供各种服务的服务器,例如对用户利用用户终端101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。业务后台服务器105可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给用户终端。根据本公开的实施例,业务后台服务器105还可以根据与用户终端101、102、103的业务交互需求等,产生调用标识符生成服务部分100B的标识符生成请求信息。
根据该实施例,在标识符生成服务部分100B中,一个标识符生成服务器111中可以部署一个或多个用于提供标识符生成服务的实例。每个实例可以根据注册信息确定其所针对的特定业务,例如是为网站注册业务提供标识符生成服务、或者为下单业务提供标识符生成服务等。
根据本公开的一些实施例,在标识符生成服务部分100B中还可以包括注册管理服务器113。该注册管理服务器113可以用于管理部署在标识符生成服务器(集群)111中的一个或多个实例,例如管理各个实例的注册、或查询等。在一些实施例中,该注册管理服务器113可以不属于标识符生成服务器(集群)111,但能够与标识符生成服务器(集群)111进行通信链接的一个或多个服务器。或者,在另一些实施例中,该注册管理服务器113也可以是标识符生成服务器(集群)111中的具有注册服务功能的服务器。
需要说明的是,本公开实施例所提供的生成标识符的方法一般可以由标识符生成服务器(集群)111中的一个实例执行。相应地,本公开实施例所提供的生成标识符的装置一般可以设置于标识符生成服务器(集群)111中。
本公开实施例所提供的用于生成标识符的方法也可以由标识符生成服务部分100B中的服务器集群执行。相应地,本公开实施例所提供的生成标识符的装置一般可以设置于标识符生成服务部分100B中的服务器集群中。
应该理解,图1中的用户终端、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的用户终端、网络和服务器。
图2A示意性示出了根据本公开实施例的生成标识符的方法的流程图。
如图2A所示,该方法包括操作S210~操作S240。
在操作S210,获取表征第一标识符的生成时间的第一时间信息,其中该第一时间信息为[0,2M)范围内的一个整数。
在操作S220,获取用于生成该第一标识符的实例的标识信息,其中该实例的标识信息为[0,2N)范围内的一个整数。该实例的标识信息可以是根据该实例的注册信息获得。
在操作S230,获取该第一标识符的序列号,其中该第一标识符的序列号为[0,2R)范围内的一个整数。
然后,在操作S240,基于该第一时间信息、该实例的标识信息、以及该第一标识符的序列号生成该第一标识符,其中该第一标识符为[0,2M+N+R+x)范围内的一个整数,其中M,N和R均为大于等于1的正整数,以及x为大于等于0的整数。
具体地,可以通过对该第一时间信息、该实例的标识信息、以及该第一标识符的序列号按照任意方式进行组合或者运算,生成第一标识符。在一些实施例中,生成的该第一标识符中除了包括该第一时间信息、该实例的标识信息、以及该第一标识符的序列号以外,还可以包括其他信息(例如,用户自定义信息)。
现有技术中通用UUID标识符由十六进制的字符串组成,例如550e8400-e29b-41d4-a716-446655440000,分别是由MAC地址、时间戳、随机数等元素位于不同的位上获得的。这种标识符字段比较长,不利于检索。
相反,根据本公开实施例生成的标识符,基于该第一时间信息、该实例的标识信息、以及该第一标识符的序列号三部分组合生成,可以获得一个整数标识符,便于检索查询,可以方便地作为数据库的索引字段。
根据本公开的实施例,操作S240中基于该第一时间信息、该实例的标识信息、以及该第一标识符的序列号生成该第一标识符,可以是通过位操作生成该第一标识符。具体地,在一个实施例中,通过位操作生成的该第一标识符可以如下:
ID=ttme<<(R+N)|machine_id<<R|seq,
其中,ID为该第一标识符,time为该第一时间信息,machine_id为该实例的标识信息,seq为该第一标识符的序列号。
根据本公开的实施例,在通过位操作生成该第一标识符时,可以将第一时间信息左移至高位,从而可以使得生成的整数标识符随时间递增,方便了标识符的排序。
根据本公开的实施例,该第一时间信息的计量单位包括毫秒。根据本公开的一个实施例,M=41,N=10,以及R=12。根据本公开实施例生成的一个64位的整数标识符的实例如图2B所示。
图2B示意性示出了根据本公开实施例的生成标识符的方法生成的一个64位的整数标识符的数据结构。
如图2B所示,根据本公开的实施例,
ID=time<<(R+N)|machine_id<<R|seq,
其中,M=41,N=10,以及R=12。通过位操作,该标识符ID的二进制表示中,最低位的12位为序列号,紧接着序列号的10位为该示例的标识信息,然后高位对应为41位的第一时间信息。
具体地,操作S240通过位操作生成该第一标识符的原理可以参考如下的示例。
例如,第一时间信息time=2199021682231,对应的二进制是:
11111111111111111111001111111111000110111;然后,高位补0,得到64位二进制数就是:
0000000000000000000000011111111111111111111001111111111000110111。
再例如,该实例的标识信息machine_id=1,高位补0对应的64位二进制是:
0000000000000000000000000000000000000000000000000000000000000001。
该第一标识符的序列号seq=2,高位补0对应的64位二进制是:
0000000000000000000000000000000000000000000000000000000000000010;
time左移22位后面补0,得到左移后的time:
0111111111111111111110011111111110001101110000000000000000000000。
machine_id左移12位后面补0,得到左移后的machine_id:
0000000000000000000000000000000000000000000000000001000000000000。
然后把左移后的time、左移后的machine_id以及seq进行或运算,即:0或1=1,0或0=0,1或0=1,1或1=1。
从而得到的第一标识符ID对应的二进制为:
0111111111111111111110011111111110001101110000000001000000000010,
即ID=9223365437868216322。
图3A示意性示出了根据本公开另一实施例的生成标识符的方法的流程图。
如图3A所述,该方法中除了操作S210~操作S240外,在操作S210之前还包括有操作S310。更进一步地,操作S210还具体包括操作S211~操作S213。
在操作S310,接收生成该第一标识符的请求信息。
在操作S211,响应于接收到的该请求信息,获取表征当前时刻的当前时间信息、以及表征第二标识符的生成时间的第二时间信息,其中该第二标识符为该实例在当前时刻之前生成的标识符。该第二时间信息表征的是该实例中上一个标识符的生成时间的时间信息。
在操作S212,比较该当前时间信息与该第二时间信息的大小,其中该当前时间信息与该第二时间信息均为从同一计时起点开始,以预定的计时单位累计得到的整数。
在操作S213,基于该比较的结果确定该第一时间信息。
根据本公开的实施例,该比较的结果可能是该当前时间信息小于、等于或大于该第二时间信息中的任意一种,因而基于该比较的结果确定该第一时间信息可以包括多种情况。具体而言可以是,响应于该当前时间信息小于该第二时间信息,确定该实例提供的标识符生成服务发生错误,在这种情况下认为该实例的时钟回拨了,服务发生错误,从而该实例不能用于生成第一标识符。或者,响应于该当前时间信息大于该第二时间信息,确定以该当前时间信息作为该第一时间信息。或者,响应于该当前时间信息等于该第二时间信息,根据该实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定该第一时间信息。
进一步地,根据该实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定该第一时间信息,可以先确定该实例在当前时刻所在的计时单位内是否有继续生成标识符的资源,然后在该实例具有继续生成标识符的资源的条件下,确定以该第二时间信息作为该第一时间信息,或者在该实例不具有继续生成标识符的资源的条件下,等待在当前时刻之后的下一个计时单位内生成该第一标识符,以及确定将表征该下一个计时单位的下一时间信息作为该第一时间信息。
根据本公开的实施例,确定该实例在当前时刻所在的计时单位内是否有继续生成标识符的资源,具体可以是先通过获取该第二标识符的序列号加1后,对2R求余所得的计算结果。在该计算结果为零时,说明该实例当前时刻所在的计时单位中的可产生的标识符资源都用完了,从而确定该实例在当前时刻所在的计时单位内没有继续生成标识符的资源。或者,在该计算结果不为零时,可以确定该实例在当前时刻所在的计时单位内具有继续生成标识符的资源。
根据本公开的实施例,操作S230具体可以是当该第一时间信息与该第二时间信息不同时,随机确定0~9中任意一个数作为该第一标识符的序列号。或者当该第一时间信息与该第二时间信息相同时,将该第二标识符的序列号加1以获得该第一标识符的序列号。
下面参考图3B,结合具体实施例对根据本公开实施例的生成标识符的方法做进一步说明。
图3B示意性示出了根据本公开实施例的生成标识符的方法的一个具体应用的流程图。为便于描述,以毫秒为计时单位,并且M=41,N=10,以及R=12为例,对图3B进行说明。
首先,接收到生成该第一标识符的请求信息(操作S310)时,获取一些常用变量,例如包括表征当前毫秒时间的当前时间信息now、以及表征上一次生成的标识符(即第二标识符)的毫秒时间的第二时间信息last_time(操作S211)、第二标识符的序列号seq2,实例的标识信息machine_id(操作S220)(以下为便于描述,部分描述以符号直接代替对应的术语)。
然后,比较当前时间信息now和第二时间信息last_time(操作S212)。此后基于该比较的结果确定该第一时间信息time(操作S213)
具体地,如果now<last_time(即当前时间信息小于第二时间信息),说明该实例所在的标识符生成服务器111的时钟回拨了。这种情况基本上不可能发生,如果发生了,确定服务发生错误,返回一个错误码,业务后台重新向其他实例发送请求。
如果now=last_time(即当前时间信息等于第二时间信息),说明上次生成的标识符(即第二标识符)和这次将要生成的第一标识符在同一个毫秒内。在这种情况下,需要进一步判断该实例在当前时刻所在的计时单位内是否有继续生成标识符的资源。
具体地,可以把seq2+1,然后对4096求余,得到计算结果mod(seq2+1,4096)。如果mod(seq2+1,4096)=0,说明该实例在当前这一毫秒中可生成标识符的资源都全部用完了,需要等到下一毫秒,再生成本次请求对应的第一标识符。在这种情况下,第一时间信息就是表征该下一个计时单位的下一时间信息,即time=next_time。或者,如果mod(seq2+1,4096)≠0,说明该实例在当前这一毫秒中能够继续生成标识符。此时,可以以第二时间信息或者当前时间信息作为第一时间信息,即time=now=last_time。
如果now>last_time,说明上次生成的标识符(即第二标识符)和这次将要生成的第一标识符不在同一个毫秒。此时,可以在当前时刻生成第一标识符,从而表征第一标识符的生成时间的第一时间信息就可以是当前时间信息,即time=now>last_time。
接着,在操作S230,根据第一时间信息与第二时间信息是否相同,可以知道当前要生成的第一标识符与上一个标识符(即第二标识符)是否在同一毫秒内。
如果第一时间信息与第二时间信息不相同,说明当前要生成的第一标识符在第二标识符之后的某一毫秒内生成。在这种情况下,根据本公开的实施例,可以随机确定0~9中任意一个数作为该第一标识符的序列号seq。根据本公开的实施例,这里的该第一标识符的序列号seq之所以从0到9中任选一个开始,而不是从0开始,是为了保证生成的标识符的尾数不都是0,从而做到随机。因为在一些情形中,有的业务后台401请求生成标识符的时间间隔可能会比较长,例如可能一毫秒都不会来请求一次。
如果第一时间信息与第二时间信息相同,说明当前要生成的第一标识符在第二标识符在同一毫秒内生成。在这种情况下,根据本公开的实施例,将该第二标识符的序列号加1以获得该第一标识符的序列号,即seq=seq2+1。
自此,第一时间信息time(即41位时间戳)、实例标识信息machine_id、第一标识符的序列号seq都有了。根据本公开的实施例,在操作S240中通过位操作算出64位的第一标识符,如下:
ID=time<<22|machine_id<<12|seq。
图4A示意性示出了根据本公开实施例的用于生成标识符的方法的流程图。
如图4A所示,该方法包括操作S420~操作S440。在一些实施例中,在操作S420之前还包括操作S410。
在操作S410,注册该一个或多个实例,以使该一个或多个实例具备为该特定业务提供标识符生成服务的能力。具体地,可以根据业务规模、数据吞吐量设置所需的实例的个数并进行注册。
在操作S420,接收为特定业务生成标识符的请求。例如,可以是标识符生成服务部分100B中的服务器集群中的注册管理服务器113接收该请求。
在操作S430,响应于该请求,确定为该特定业务提供标识符生成服务的一个或多个实例。
在操作S440,通过该一个或多个实例中的一个实例参考图2A~图3B所描述的方法生成该第一标识符。
根据本公开的实施例,可以至少部分地减少标识符的生成对数据库的依赖。标识符是在部署在各个服务器中的实例中生成的。并且,可以根据标识符生成服务的需求规模增加或减少注册实例的数量,从而提升标识符生成服务的水平扩展能力。并且,对于特定业务可以注册多个实例,从而当其中一个实例出现故障时,还可以请求其他实例为该特定业务提供标识符生成服务,从而可以实现标识符的生成对系统异常的适应调整能力。
图4B示意性示出了根据本公开实施例的用于生成标识符的一个系统架构400的示例。
该系统架构400包括业务后台401(例如,包括部署在业务后台服务器105上的业务管理服务)、标识符生成服务402(例如,包括部署在标识符生成服务器(集群)111上的一个或多个实例)以及注册中心403(例如,包括部署在注册管理服务器113上的注册服务)。其中,业务后台401为标识符生成请求的一方,标识符生成服务402为生成标识符成的一方,注册中心403为对标识符生成服务402中的每个实例进行注册、数据查询或者信息存储的一方。该系统架构400中还可以包括开发者管理终端404。该开发者管理终端404可以为开发者在注册中心403对实例进行注册和管理提供交互平台。
注册中心403可以是一个分布式服务,可以提供的服务包括:(1.1)提供实例的地址的存储和查询;(1.2)提供实例的标识信息的存储和查询。具体描述如下。
关于(1.1)提供标识符生成服务地址的存储和查询,其中,存储在注册中心403的结构如表1.1所示:
表1.1每个实例的地址配置示例
表1.1中,ServiceName是标识符生成服务所针对的业务名,例如可以是用户登录服务、用户注册服务、用户订单服务。AppId(业务信息)例如可以是用户终端的各类应用程序APP的名称等信息。
关于(1.2)提供实例的标识信息machine_id的存储和查询。在一个实施例中,存储在注册中心403的machine_id的配置信息可以如表1.2所示:
表1.2每个实例的标识信息的配置信息
开发者管理终端404是注册中心403的web页面操作平台,可以提供的服务功能包括:(2.1)开发者通过这个管理平台在注册中心403配置每个实例的地址(包括网际协议和端口,即IP和PORT),操作结果如表1.1所示;(2.2)开发者通过这个管理平台在注册中心403配置每个实例的标识信息,操作结果如表1.2所示。
业务后台401是标识符生成请求方,根据业务需求请求生成标识符以唯一性地标识其中的数据或者信息。
标识符生成服务402中的多个实例可以构成一个分布式服务,其中每一个实例可以参考本公开实施例提供的图2A~图3B描述的方法生成标识符。
根据本公开的一个实施例,该系统架构400执行根据本公开实施例的用于生成标识符的方法可以包括如下步骤流程。
第一步:通过开发者管理终端404在注册中心403注册标识符生成服务402中每个实例的地址。例如,开发者可以通过开发者管理终端404填写标识符生成服务402中一个或多个实例的地址,格式如表1.1所示。开发者管理终端404接收到该一个或多个实例的地址后,可以向注册中心403发TCP/UDP请求。如果请求返回成功,说明该实例的地址注册成功。如果请求返回失败,说明该一个或多个实例的地址注册失败,此时需要重新操作。
第二步:通过开发者管理终端404在注册中心403注册标识符生成服务402中每个实例的标识信息。例如,开发者通过开发者管理终端404填写一个或多个实例的标识信息,格式如表1.2所示。开发者管理终端404接收到如表1.2所示的该一个或多个实例的标识信息后,向注册中心403发TCP/UDP请求。如果请求返回成功,说明该一个或多个实例的标识信息注册成功。如果请求返回失败,说明该一个或多个实例的标识信息注册失败。根据本公开的一个实施例,当N=10时,实例的标识信息[0,1024)的一个整数,换言之,在标识符生成服务器(集群)111上最多可以部署1024个实例。
第三步:标识符生成服务402的标识符生成服务启动。例如,标识符生成服务402中的每个实例可以先加载对应的标识符生成服务的配置文件到该实例所在的标识符生成服务器111的内存中,通过配置文件拿到该实例的标识符服务的端口PORT信息。
图4C示意性示出了图4B示例的系统架构中标识符生成服务启动过程中加载的配置文件的格式。配置文件的格式可以是XML,具体格式可以参考如图4C所示。
另外,在一些实施例中,当标识符生成服务器111具有linux系统时,可以通过linux系统函数获取该本地服务器的IP,从而获得每个实例的地址(包括实例的IP和PORT。)
第四步:标识符生成服务402从注册中心403获取每个实例的标识信息。成功之后,标识符生成服务402中的一个或多个实例具备了为特定业务提供标识符生成服务的能力。
具体地,例如,每个标识符生成服务器111可以根据部署于其上的实例的IP和PORT,给注册中心403发TCP/UDP请求,请求的参数主要包括(IdService,machine_id,IP:PORT),具体格式参考表1.2。
如果请求成功,获取到实例的标识信息。自此,该实例具备了为特定业务提供标识符生成服务的能力。根据本公开的实施例,标识符生成服务不依赖于任何第三方的数据库或者服务等。换言之,即使注册中心403因为某种原因挂机了,对标识符生成服务也不影响,这是因为标识符生成服务402和注册中心403之间可以只在启动的时候有过一次交互。
如果请求失败,此时需要去检查为什么请求实例的标识信息会失败。根据该实施例,某一个实例的标识符生成服务能力没有启动成功是没有问题的,这是因为提供标识生成服务的标识符生成服务402可以是分布式服务,对应于同一特定业务可以有很多个实例,每个实例都是无状态的。另外,如果遇到请求注册中心403始终失败,而标识符生成服务402需要整体重新启动或者需要增加新的实例进行扩容时,在实际应用中还可以在相应的标识符生成服务器111的配置文件中手动配置实例的标识信息。
第五步:业务后台401向注册中心403发送请求以获取为特定业务提供标识符生成服务的实例的地址。例如,业务后台401可以给注册中心403发TCP/UDP请求,请求的参数主要包括(IdService,AppId)。业务后台401从注册中心403处获取的与该业务后台401的业务相对应的实例的地址可以是多个(即为该业务后台401所请求的特定业务提供的实例可以是多个),也可以是一个(例如,经过注册中心403筛查并选择出的适宜执行本次标识符生成业务的一个实例的地址)。在一个实施例中,业务后台401可以每隔一定间隔(例如,两分钟)去注册中心403请求一次实例的地址,这样可以及时更新实例的地址,以避免实例在注册中心403中被变更后造成的业务冲突。在一些实施例中,业务后台401可以将请求到实例的地址写入到业务后台401的内存中,这样,如果没有到两分钟,业务后台401可以不发网络请求而直接从内存中读取提供特定业务的标识符生成服务的地址。在一些实施例中,如果请求注册中心403失败,可以以业务后台401的内存中的地址为准的,从而如果注册中心403挂机,标识符的生成服务仍能够正常运行,提高了系统的异常情况调整能力。
第六步:业务后台401可以按照从注册中心403获取到的地址,向标识符生成服务402中的一个实例发送获取生成标识符的TCP/UDP请求。
第七步:标识符生成服务402中接收到请求的实例,根据图2A~图3B所描述的方法生成第一标识符。
第八步:根据业务需求,标识符生成服务402可以将生成的第一标识符发送给业务后台401或者其他需求方。
根据本公开的实施例,该系统架构400可以以毫秒作为计时单位。以下简单分析当M=41,N=10,R=12时,该系统架构400的运行性能。
以毫秒作为计时单位时,相比于以秒作为计时单位时,单个实例的吞吐量会大大提升。例如,在R=12(即序列号为[0,4096)范围内的一个整数)的情况下,以秒作为计时单位时,理论上一个实例每秒只能生成4096个标识符,吞吐量太低,不符合海量请求的需求。而相反,以毫秒作为计时单位,理论上一个实例每秒可以生成1000*4096个标识符,也就是大约400万个标识符。
再者,因为该第一标识符的时间信息包括了41位时间戳,默认情况下41位的毫秒时间戳可以支持该系统架构400运行69年。
最后,该系统架构400能支持多少吞吐量呢?由于实例的标识信息由10位组成,所以该系统架构400中最多支持1024个实例,假如一个标识符生成服务器111上部署一个实例,那么单机的吞吐量是5万个/秒,从而该系统架400支持的吞吐量可以达5千万个/秒。基于以上分析可见,该系统架构400执行用于生成标识符的方法,可以支持互联网的海量访问。
图5示意性示出了根据本公开实施例的生成标识符的装置500的框图。
如图5所示,根据本公开的实施例,该生成标识符的装置500包括时间信息获取模块510、实例标识获取模块520、序列号获取模块530和标识符生成模块540。根据本公开的实施例,装置500可以用于实现参考图2A~图3B所描述的生成标识符的方法。
时间信息获取模块510用于获取表征第一标识符的生成时间的第一时间信息,其中该第一时间信息为[0,2M)范围内的一个整数。
实例标识获取模块520用于获取用于生成该第一标识符的实例的标识信息,其中该实例的标识信息为[0,2N)范围内的一个整数。
序列号获取模块530用于获取该第一标识符的序列号,其中该第一标识符的序列号为[0,2R)范围内的一个整数。
标识符生成模块540用于基于该第一时间信息、该实例的标识信息、以及该第一标识符的序列号生成该第一标识符,其中该第一标识符为[0,2M+N+R+x)范围内的一个整数,其中M,N和R均为大于等于1的正整数,以及x为大于等于0的整数。
根据本公开的实施例,该标识符生成模块540具体用于通过位操作生成该第一标识符,具体包括:
ID=time<<(R+N)|machine_id<<R|seq,
其中,ID为该第一标识符,time为该第一时间信息,machine_id为该实例的标识信息,seq为该第一标识符的序列号。
根据本公开的实施例,该第一时间信息的计量单位包括毫秒;和/或M=41,N=10,R=12。
图6A示意性示出了根据本公开另一实施例的生成标识符的装置600的框图。
如图6A所示,根据本公开的实施例,该装置600除了包括时间信息获取模块510、实例标识获取模块520、序列号获取模块530和标识符生成模块540以外,还包括请求信息接收模块610。根据本公开的实施例,根据本公开的实施例,装置600可以用于实现参考图2A~图3B所描述的生成标识符的方法。
该请求信息接收模块610用于接收生成该第一标识符的请求信息。
图6B示意性示出了根据本公开实施例的生成标识符的装置600中时间信息获取模块510的框图。
如图6B所示,该时间信息获取模块510包括时间信息获取子模块511、时间信息比较子模块512和时间信息确定子模块513。
时间信息获取子模块511用于响应于接收到的该请求信息,获取表征当前时刻的当前时间信息、以及表征第二标识符的生成时间的第二时间信息,其中该第二标识符为该实例在当前时刻之前生成的标识符。
时间信息比较子模块512用于比较该当前时间信息与该第二时间信息的大小,其中该当前时间信息与该第二时间信息均为从同一计时起点开始,以预定的计时单位累计得到的整数。
时间信息确定子模块513用于基于该比较结果确定该第一时间信息。
根据本公开的实施例,该时间信息确定子模块513具体用于响应于该当前时间信息小于该第二时间信息,确定该实例提供的标识符生成服务发生错误,或者响应于该当前时间信息大于该第二时间信息,确定以该当前时间信息作为该第一时间信息,或者响应于该当前时间信息等于该第二时间信息,根据该实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定该第一时间信息。其中,响应于该当前时间信息等于该第二时间信息,根据该实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定该第一时间信息,包括在该实例具有继续生成标识符的资源的条件下,确定以该第二时间信息作为该第一时间信息,或者在该实例不具有继续生成标识符的资源的条件下,等待在当前时刻之后的下一个计时单位内生成该第一标识符;以及确定将表征该下一个计时单位的下一时间信息作为该第一时间信息。
根据本公开的实施例,响应于该当前时间信息等于该第二时间信息,根据该实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定该第一时间信息,还包括确定该实例在当前时刻所在的计时单位内是否有继续生成标识符的资源。其中,确定该实例在当前时刻所在的计时单位内是否有继续生成标识符的资源,具体包括获取该第二标识符的序列号加1后,对2R求余所得的计算结果,在该计算结果为零时,确定该实例在当前时刻所在的计时单位内没有继续生成标识符的资源,或者在该计算结果不为零时,确定该实例在当前时刻所在的计时单位内具有继续生成标识符的资源。
根据本公开的实施例,序列号获取模块530具体用于当该第一时间信息与该第二时间信息不同时,随机确定0~9中任意一个数作为该第一标识符的序列号,或者当该第一时间信息与该第二时间信息相同时,将该第二标识符的序列号加1以获得该第一标识符的序列号。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,时间信息获取模块510、实例标识获取模块520、序列号获取模块530和标识符生成模块540、请求信息接收模块610以及时间信息获取子模块511、时间信息比较子模块512和时间信息确定子模块513中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,时间信息获取模块510、实例标识获取模块520、序列号获取模块530和标识符生成模块540、请求信息接收模块610以及时间信息获取子模块511、时间信息比较子模块512和时间信息确定子模块513中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,时间信息获取模块510、实例标识获取模块520、序列号获取模块530和标识符生成模块540、以及时间信息获取子模块511、时间信息比较子模块512和时间信息确定子模块513中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图7示意性示出了根据本公开实施例的适用于生成标识符的计算机系统700的方框图。
图7示出的计算机系统700仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,根据本公开实施例的计算机系统700包括处理器701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。处理器701例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器701还可以包括用于缓存用途的板载存储器。处理器701可以包括用于执行参考图2A~图3B所描述的根据本公开实施例的生成标识符的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 703中,存储有系统700操作所需的各种程序和数据。处理器701、ROM 702以及RAM 703通过总线704彼此相连。处理器701通过执行ROM 702和/或RAM 703中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,该程序也可以存储在除ROM 702和RAM 703以外的一个或多个存储器中。处理器701也可以通过执行存储在该一个或多个存储器中的程序来执行参考图2A~图3B所描述的根据本公开实施例的生成标识符的方法流程的各种操作。
根据本公开的实施例,系统700还可以包括输入/输出(I/O)接口705,输入/输出(I/O)接口705也连接至总线704。系统700还可以包括连接至I/O接口705的以下部件中的一项或多项:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
根据本公开的实施例,根据本公开实施例的生成标识符的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被处理器701执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现参考图2A~图3B所描述的根据本公开实施例的生成标识符的方法。
根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。
例如,根据本公开的实施例,计算机可读介质可以包括上文描述的ROM 702和/或RAM 703和/或ROM702和RAM703以外的一个或多个存储器。
图8示意性示出了根据本公开实施例的用于生成标识符的装置800的框图。
如图8所示,根据本公开实施例的用于生成标识符的装置800包括请求接收模块810、实例确定模块820以及标识符生成模块830。该装置800能够用于实现参考图4A~图4C所描述的根据本公开实施例的用于生成标识符的方法。
请求接收模块810用于接收为特定业务生成标识符的请求。实例确定模块820用于响应于该请求,确定为该特定业务提供标识符生成服务的一个或多个实例。标识符生成模块830用于通过该一个或多个实例中的一个实例参考图2A~图3B所描述的根据本公开实施例的生成标识符的方法生成该第一标识符。
根据本公开的实施例,该装置800还可以包括注册模块840。注册模块840用于注册该一个或多个实例,以使该一个或多个实例具备为该特定业务提供标识符生成服务的能力。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,请求接收模块810、实例确定模块820、标识符生成模块830、以及注册模块840中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,请求接收模块810、实例确定模块820、标识符生成模块830、以及注册模块840中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,请求接收模块810、实例确定模块820、标识符生成模块830、以及注册模块840中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图9示意性示出了根据本公开实施例的适于实现用于生成标识符的计算机系统900的框图。
如图9所示,根据本公开实施例的计算机系统900包括处理器901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行参考图4A~图4C所描述的根据本公开实施例的用于生成标识符的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 903中,存储有系统900操作所需的各种程序和数据。处理器901、ROM 902以及RAM 903通过总线904彼此相连。处理器901通过执行ROM 902和/或RAM 903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,该程序也可以存储在除ROM 902和RAM 903以外的一个或多个存储器中。处理器901也可以通过执行存储在该一个或多个存储器中的程序来执行参考图4A~图4C描述的根据本公开实施例的用于生成标识符的方法流程的各种操作。
根据本公开的实施例,系统900还可以包括输入/输出(I/O)接口905,输入/输出(I/O)接口905也连接至总线904。系统900还可以包括连接至I/O接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现参考图4A~图4C所描述的根据本公开实施例的用于生成标识符的方法。
根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是一一但不限于一一电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。
例如,根据本公开的实施例,计算机可读介质可以包括上文描述的ROM 902和/或RAM 903和/或ROM 902和RAM 903以外的一个或多个存储器。附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (22)

1.一种生成标识符的方法,包括:
获取表征第一标识符的生成时间的第一时间信息,其中所述第一时间信息为[0,2M)范围内的一个整数;
获取用于生成所述第一标识符的实例的标识信息,其中所述实例的标识信息为[0,2N)范围内的一个整数;
获取所述第一标识符的序列号,其中所述第一标识符的序列号为[0,2R)范围内的一个整数;
基于所述第一时间信息、所述实例的标识信息、以及所述第一标识符的序列号生成所述第一标识符,其中所述第一标识符为[0,2M+N+R+x)范围内的一个整数,其中M,N和R均为大于等于1的正整数,以及x为大于等于0的整数。
2.根据权利要求1所述的方法,其中,基于所述第一时间信息、所述实例的标识信息、以及所述第一标识符的序列号生成所述第一标识符,包括:
通过位操作生成所述第一标识符,包括:
ID=time<<(R+N)|machine_id<<R|seq,
其中,ID为所述第一标识符,time为所述第一时间信息,machine_id为所述实例的标识信息,seq为所述第一标识符的序列号。
3.根据权利要求2所述的方法,其中:
所述第一时间信息的计量单位包括毫秒;和/或
M=41,N=10,以及R=12。
4.根据权利要求1所述的方法,其中:
所述方法还包括:
接收生成所述第一标识符的请求信息;
所述获取表征第一标识符的生成时间的第一时间信息包括:
响应于接收到的所述请求信息,获取表征当前时刻的当前时间信息、以及表征第二标识符的生成时间的第二时间信息,其中所述第二标识符为所述实例在当前时刻之前生成的标识符;
比较所述当前时间信息与所述第二时间信息的大小,其中所述当前时间信息与所述第二时间信息均为从同一计时起点开始,以预定的计时单位累计得到的整数;
基于所述比较的结果确定所述第一时间信息。
5.根据权利要求4所述的方法,其中,基于所述比较的结果确定所述第一时间信息,包括:
响应于所述当前时间信息小于所述第二时间信息,确定所述实例提供的标识符生成服务发生错误;或者
响应于所述当前时间信息大于所述第二时间信息,确定以所述当前时间信息作为所述第一时间信息;或者
响应于所述当前时间信息等于所述第二时间信息,根据所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定所述第一时间信息,包括:
在所述实例具有继续生成标识符的资源的条件下,确定以所述第二时间信息作为所述第一时间信息;或者
在所述实例不具有继续生成标识符的资源的条件下,等待在当前时刻之后的下一个计时单位内生成所述第一标识符;以及确定将表征所述下一个计时单位的下一时间信息作为所述第一时间信息。
6.根据权利要求5所述的方法,其中,响应于所述当前时间信息等于所述第二时间信息,根据所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定所述第一时间信息,还包括:
确定所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源,包括:
获取所述第二标识符的序列号加1后,对2R求余所得的计算结果;
在所述计算结果为零时,确定所述实例在当前时刻所在的计时单位内没有继续生成标识符的资源;或者
在所述计算结果不为零时,确定所述实例在当前时刻所在的计时单位内具有继续生成标识符的资源。
7.根据权利要求5所述的方法,其中,获取所述第一标识符的序列号,包括:
当所述第一时间信息与所述第二时间信息不同时,随机确定0~9中任意一个数作为所述第一标识符的序列号;或者
当所述第一时间信息与所述第二时间信息相同时,将所述第二标识符的序列号加1以获得所述第一标识符的序列号。
8.一种用于生成标识符的方法,包括:
接收为特定业务生成标识符的请求;
响应于所述请求,确定为所述特定业务提供标识符生成服务的一个或多个实例;以及
通过所述一个或多个实例中的一个实例根据权利要求1~7任意一项所述的方法生成所述第一标识符。
9.根据权利要求8所述的方法,还包括:
注册所述一个或多个实例,以使所述一个或多个实例具备为所述特定业务提供标识符生成服务的能力。
10.一种生成标识符的装置,包括:
时间信息获取模块,用于获取表征第一标识符的生成时间的第一时间信息,其中所述第一时间信息为[0,2M)范围内的一个整数;
实例标识获取模块,用于获取用于生成所述第一标识符的实例的标识信息,其中所述实例的标识信息为[0,2N)范围内的一个整数;
序列号获取模块,用于获取所述第一标识符的序列号,其中所述第一标识符的序列号为[0,2R)范围内的一个整数;
标识符生成模块,用于基于所述第一时间信息、所述实例的标识信息、以及所述第一标识符的序列号生成所述第一标识符,其中所述第一标识符为[0,2M+N+R+x)范围内的一个整数,其中M,N和R均为大于等于1的正整数,以及x为大于等于0的整数。
11.根据权利要求10所述的装置,其中,所述标识符生成模块具体用于通过位操作生成所述第一标识符,包括:
ID=time<<(R+N)|machine_id<<R|seq,
其中,ID为所述第一标识符,time为所述第一时间信息,machine_id为所述实例的标识信息,seq为所述第一标识符的序列号。
12.根据权利要求11所述的装置,其中:
所述第一时间信息的计量单位包括毫秒;和/或
M=41,N=10,以及R=12。
13.根据权利要求10所述的装置,其中:
所述装置还包括:
请求信息接收模块,用于接收生成所述第一标识符的请求信息;
以及
所述时间信息获取模块包括:
时间信息获取子模块,用于响应于接收到的所述请求信息,获取表征当前时刻的当前时间信息、以及表征第二标识符的生成时间的第二时间信息,其中所述第二标识符为所述实例在当前时刻之前生成的标识符;
时间信息比较子模块,用于比较所述当前时间信息与所述第二时间信息的大小,其中所述当前时间信息与所述第二时间信息均为从同一计时起点开始,以预定的计时单位累计得到的整数;
时间信息确定子模块,用于基于所述比较结果确定所述第一时间信息。
14.根据权利要求13所述的装置,其中,时间信息确定子模块具体用于:
响应于所述当前时间信息小于所述第二时间信息,确定所述实例提供的标识符生成服务发生错误;或者
响应于所述当前时间信息大于所述第二时间信息,确定以所述当前时间信息作为所述第一时间信息;或者
响应于所述当前时间信息等于所述第二时间信息,根据所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定所述第一时间信息,包括:
在所述实例具有继续生成标识符的资源的条件下,确定以所述第二时间信息作为所述第一时间信息;或者
在所述实例不具有继续生成标识符的资源的条件下,等待在当前时刻之后的下一个计时单位内生成所述第一标识符;以及确定将表征所述下一个计时单位的下一时间信息作为所述第一时间信息。
15.根据权利要求14所述的装置,其中,响应于所述当前时间信息等于所述第二时间信息,根据所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源来确定所述第一时间信息,还包括:
确定所述实例在当前时刻所在的计时单位内是否有继续生成标识符的资源,包括:
获取所述第二标识符的序列号加1后,对2R求余所得的计算结果;
在所述计算结果为零时,确定所述实例在当前时刻所在的计时单位内没有继续生成标识符的资源;或者
在所述计算结果不为零时,确定所述实例在当前时刻所在的计时单位内具有继续生成标识符的资源。
16.根据权利要求14所述的装置,其中序列号获取模块具体用于:
当所述第一时间信息与所述第二时间信息不同时,随机确定0~9中任意一个数作为所述第一标识符的序列号;或者
当所述第一时间信息与所述第二时间信息相同时,将所述第二标识符的序列号加1以获得所述第一标识符的序列号。
17.一种用于生成标识符的装置,包括:
请求接收模块,用于接收为特定业务生成标识符的请求;
实例确定模块,用于响应于所述请求,确定为所述特定业务提供标识符生成服务的一个或多个实例;以及
标识符生成模块,用于通过所述一个或多个实例中的一个实例根据权利要求1~7任意一项所述的方法生成所述第一标识符。
18.根据权利要求17所述的装置,还包括:
注册模块,用于注册所述一个或多个实例,以使所述一个或多个实例具备为所述特定业务提供标识符生成服务的能力。
19.一种生成标识符的系统,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~7任意一项所述的生成标识符的方法。
20.一种计算机可读介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~7任意一项所述的生成标识符的方法。
21.一种生成标识符的系统,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求8或9所述的用于生成标识符的方法。
22.一种计算机可读介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求8或9所述的用于生成标识符的方法。
CN201810499663.0A 2018-05-22 2018-05-22 生成标识符的方法、装置、系统和介质 Active CN110580305B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810499663.0A CN110580305B (zh) 2018-05-22 2018-05-22 生成标识符的方法、装置、系统和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810499663.0A CN110580305B (zh) 2018-05-22 2018-05-22 生成标识符的方法、装置、系统和介质

Publications (2)

Publication Number Publication Date
CN110580305A true CN110580305A (zh) 2019-12-17
CN110580305B CN110580305B (zh) 2024-04-16

Family

ID=68809145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810499663.0A Active CN110580305B (zh) 2018-05-22 2018-05-22 生成标识符的方法、装置、系统和介质

Country Status (1)

Country Link
CN (1) CN110580305B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111353772A (zh) * 2020-02-24 2020-06-30 网银在线(北京)科技有限公司 单号的生成方法和装置、存储介质、电子装置
CN112487317A (zh) * 2020-11-23 2021-03-12 中国人寿保险股份有限公司 一种统一资源定位符转换方法、装置、设备及介质
CN112541137A (zh) * 2020-12-10 2021-03-23 清华大学 标识符的生成方法、装置、电子设备及存储介质
CN112667685A (zh) * 2020-12-29 2021-04-16 北京先进数通信息技术股份公司 一种流水号配置方法、装置、设备及存储介质
CN113271342A (zh) * 2021-04-27 2021-08-17 北京沃东天骏信息技术有限公司 一种信息处理方法及装置、存储介质
CN113553097A (zh) * 2021-07-30 2021-10-26 上海玳鸽信息技术有限公司 模型版本管理方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140068048A1 (en) * 2012-08-31 2014-03-06 International Business Machines Corporation Managing remote devices
CN107229555A (zh) * 2017-05-04 2017-10-03 北京小度信息科技有限公司 标识生成方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140068048A1 (en) * 2012-08-31 2014-03-06 International Business Machines Corporation Managing remote devices
CN107229555A (zh) * 2017-05-04 2017-10-03 北京小度信息科技有限公司 标识生成方法和装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111353772A (zh) * 2020-02-24 2020-06-30 网银在线(北京)科技有限公司 单号的生成方法和装置、存储介质、电子装置
CN111353772B (zh) * 2020-02-24 2024-01-16 网银在线(北京)科技有限公司 单号的生成方法和装置、存储介质、电子装置
CN112487317A (zh) * 2020-11-23 2021-03-12 中国人寿保险股份有限公司 一种统一资源定位符转换方法、装置、设备及介质
CN112541137A (zh) * 2020-12-10 2021-03-23 清华大学 标识符的生成方法、装置、电子设备及存储介质
CN112667685A (zh) * 2020-12-29 2021-04-16 北京先进数通信息技术股份公司 一种流水号配置方法、装置、设备及存储介质
CN112667685B (zh) * 2020-12-29 2024-04-16 北京先进数通信息技术股份公司 一种流水号配置方法、装置、设备及存储介质
CN113271342A (zh) * 2021-04-27 2021-08-17 北京沃东天骏信息技术有限公司 一种信息处理方法及装置、存储介质
CN113271342B (zh) * 2021-04-27 2023-03-07 北京沃东天骏信息技术有限公司 一种信息处理方法及装置、存储介质
CN113553097A (zh) * 2021-07-30 2021-10-26 上海玳鸽信息技术有限公司 模型版本管理方法及装置
CN113553097B (zh) * 2021-07-30 2022-11-18 上海玳鸽信息技术有限公司 模型版本管理方法及装置

Also Published As

Publication number Publication date
CN110580305B (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
CN110580305B (zh) 生成标识符的方法、装置、系统和介质
CN109150978B (zh) 调试微服务的方法和装置
US9584372B2 (en) Discovering resources of a distributed computing environment
WO2020063851A1 (zh) 一种用于搜索寄宿程序的方法与设备
JP2019530089A (ja) ウェブページとネイティブアプリケーションの間の通信を実現する方法及び装置並びに電子装置
US10963324B2 (en) Predictive microservice systems and methods
CN111510330B (zh) 接口管理装置、方法及存储介质
CN111125107A (zh) 数据处理方法、装置、电子设备和介质
US20130227153A1 (en) Computer-implemented method, computer system and computer readable medium
CN109104368B (zh) 一种请求连接方法、装置、服务器及计算机可读存储介质
US11722481B2 (en) Multiple identity provider authentication system
CN112714042B (zh) 压力测试方法、装置、电子设备和存储介质
CN111400051B (zh) 一种资源调度方法、装置及系统
CN107045452B (zh) 虚拟机调度方法和装置
CN112748962A (zh) 应用加载方法、装置、电子设备和计算机可读介质
JP2022542203A (ja) ミニプログラムのバッチ処理方法、装置、電子機器及び可読記憶媒体
CN112948733B (zh) 接口维护方法、装置、计算设备以及介质
CN109547552B (zh) Api请求处理方法、装置、存储介质及电子设备
CN112837156A (zh) 固定执行顺序的交易方法和装置
CN110401686B (zh) Whois查询方法、装置、设备及其存储介质
CN111771191A (zh) 跨域的内联事件处理程序
CN113760835B (zh) 日志管理方法、中台系统、电子设备和存储介质
CN114285743B (zh) 更新配置信息的方法、装置、电子设备及存储介质
CN109005084B (zh) 验证网络连接的方法、电子设备和计算机可读介质
CN110889040B (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