CN112104743A - 序列生成方法、装置和电子设备 - Google Patents
序列生成方法、装置和电子设备 Download PDFInfo
- Publication number
- CN112104743A CN112104743A CN202010998566.3A CN202010998566A CN112104743A CN 112104743 A CN112104743 A CN 112104743A CN 202010998566 A CN202010998566 A CN 202010998566A CN 112104743 A CN112104743 A CN 112104743A
- Authority
- CN
- China
- Prior art keywords
- sequence
- sequence value
- value
- current
- service
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
- Emergency Protection Circuit Devices (AREA)
Abstract
本发明提供了一种序列生成方法、装置和电子设备,该方法包括:从用于保存有当前序列值的序列管理服务中获取当前序列值;该当前序列值用于被指定服务获取后,记录服务事件的发生顺序;按照使序列管理服务中的当前序列值单调变化的调整规则调整该当前序列值,得到新序列值;然后将新序列值返回给序列管理服务,以使序列管理服务将当前序列值更新为新序列值。该方式可以使序列管理服务中的序列值单调变化,通过单调变化的序列值记录服务事件的发生顺序,从而可以准确地记录服务事件的发生顺序。
Description
技术领域
本发明涉及分布式服务技术领域,尤其是涉及一种序列生成方法、装置和电子设备。
背景技术
分布式系统通常包含有多个服务,每个服务均需要序列值来记录服务上发生的事件的先后顺序。相关技术中,分布式系统中的服务采用该服务所在服务器的时间戳,作为该服务发生的事件的序列值,但由于服务所在服务器的时间戳,有可能被人为的往前或者往后校准,导致时间戳难以准确指示事件发生的先后顺序。
发明内容
本发明的目的在于提供一种序列生成方法、装置和电子设备,以为服务提供准确记录服务上事件发生的先后顺序的序列值。
第一方面,本发明实施例提供了一种序列生成方法,该方法包括:从序列管理服务中获取当前序列值;该序列管理服务用于保存当前序列值;该当前序列值用于:被指定服务获取后,记录服务事件的发生顺序;按照预设的调整规则调整当前序列值,得到新序列值;将新序列值返回给序列管理服务,以使序列管理服务将当前序列值更新为新序列值;该调整规则用于使序列管理服务中的当前序列值单调变化。
在可选的实施方式中,上述按照预设的调整规则调整当前序列值,得到新序列值的步骤,包括:将当前序列值与预设的单位序列值增量相加,得到新序列值。
在可选的实施方式中,上述序列管理服务还用于保存当前序列值对应的序列版本号;上述从序列管理服务中获取当前序列值的步骤,包括:每隔固定时长,从序列管理服务中获取当前序列值和当前序列值对应的序列版本号;将新序列值返回给序列管理服务,以使序列管理服务将当前序列值更新为新序列值的步骤,包括:将新序列值和当前序列值对应的版本号返回给序列管理服务,以使序列管理服务基于当前序列值对应的序列版本号,将当前序列值更新为新序列值,并更新序列管理服务中保存的序列版本号。
第二方面,本发明实施例提供了一种序列生成方法,该方法包括:如果接收到序列生成服务发送的序列值更新请求,提取序列值更新请求携带的序列值;该序列值更新请求携带的序列值为:按照预设的调整规则调整获取的当前序列值,得到的新序列值;将保存的当前序列值更新为新序列值;其中,当前序列值用于:被指定服务获取后,记录服务事件的发生顺序;该调整规则用于使保存的当前序列值单调变化。
在可选的实施方式中,上述序列生成服务包括多个;该序列值更新请求还携带有序列版本号;上述将保存的当前序列值更新为新序列值的步骤,包括:针对于多个序列生成服务中的每个序列生成服务,执行下述操作:判断当前序列生成服务发送的序列值更新请求中的序列版本号是否与保存的序列版本号相同;如果相同,将保存的当前序列值更新为新序列值,并将保存的序列版本号加一;如果不相同,向当前序列生成服务返回更新失败的结果。
在可选的实施方式中,上述将保存的当前序列值更新为新序列值的步骤之后,上述方法还包括:向指定服务提供更新后的当前序列值。
在可选的实施方式中,上述向指定服务提供更新后的当前序列值的步骤,包括:当当前序列值更新为新序列值后,向指定服务发送通知,以使指定服务获取所述新序列值。
在可选的实施方式中,上述向指定服务提供更新后的当前序列值的步骤,包括:接收指定服务发送的序列值查询请求;将当前时刻的当前序列值返回给指定服务。
第三方面,本发明实施例提供了一种序列生成装置,该可装置包括:序列值获取模块,用于从序列管理服务中获取当前序列值;该序列管理服务用于保存当前序列值;该当前序列值用于:被指定服务获取后,记录服务事件的发生顺序;序列值调整模块,用于按照预设的调整规则调整当前序列值,得到新序列值;序列值返回模块,用于将新序列值返回给序列管理服务,以使序列管理服务将当前序列值更新为新序列值;该调整规则用于使序列管理服务中的当前序列值单调变化。
第四方面,本发明实施例提供了一种序列生成方法,该方法包括:请求接收模块,用于如果接收到序列生成服务发送的序列值更新请求,提取序列值更新请求携带的序列值;该序列值更新请求携带的序列值为:按照预设的调整规则调整获取的当前序列值,得到的新序列值;序列值更新模块,用于将保存的当前序列值更新为新序列值;其中,当前序列值用于:被指定服务获取后,记录服务事件的发生顺序;该调整规则用于使保存的当前序列值单调变化。
第五方面,本发明实施例提供了一种电子设备,该电子设备包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现前述实施方式任一项所述的序列生成方法。
第六方面,本发明实施例提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现前述实施方式任一项所述的序列生成方法。
本发明实施例带来了以下有益效果:
本发明提供的一种序列生成方法、装置和电子设备,首先从用于保存当前序列值的序列管理服务中获取当前序列值;该当前序列值用于被指定服务获取后,记录服务事件的发生顺序;进而按照预设的、使序列管理服务中的当前序列值单调变化的调整规则调整该当前序列值,得到新序列值;然后将该新序列值返回给序列管理服务,以使该序列管理服务将当前序列值更新为新序列值。该方式可以使序列管理服务中的序列值单调变化,通过单调变化的序列值记录服务事件的发生顺序,从而可以准确地记录服务事件的发生顺序。
本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种序列生成方法的流程图;
图2为本发明实施例提供的另一种序列生成方法的流程图;
图3为本发明实施例提供的另一种序列生成方法的流程图;
图4为本发明实施例提供的一种序列生成装置的结构示意图;
图5为本发明实施例提供的另一种序列生成装置的结构示意图;
图6为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,分布式系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。分布式系统通常包含有多个服务,这多个服务通常需要共享一个序列中的序列值,来记录各自服务上发生的事件的先后顺序。相关技术中,分布式系统中的服务采用该服务所在服务器的时间戳(从1970年1月1日00:00:00开始,到现在所经过的秒数),作为该服务发生的事件的序列值,但由于服务所在服务器的时间戳,有可能被人为的往前或者往后校准,导致时间戳难以准确指示事件发生的先后顺序。
基于此,本发明实施例提供了一种序列生成方法、装置和电子设备,该技术可以应用于分布式目标系统的序列生成场景中。为了便于对本发明实施例进行理解,首先对本发明实施例所公开的一种序列生成方法进行详细介绍,该方法应用于服务器,该服务器上部署有序列生成服务,该序列生成服务可以理解为服务器中的一个服务程序或者服务进程;如图1所示,该方法包括如下步骤:
步骤S102,从序列管理服务中获取当前序列值;该序列管理服务用于保存当前序列值;该当前序列值用于:被指定服务获取后,记录服务事件的发生顺序。
上述序列管理服务是用来保存当前序列值的,该当前序列值为当前时刻的最新序列值,该当前序列值可以为一个整数或者二进制数等。该序列管理服务可以为指定服务提供保存的当前序列值,以使该指定服务通过该当前序列值记录服务事件的发生顺序。该指定服务通常是分布式系统中的、需要使用当前序列值记录事件发生顺序的服务。
在一些实施例中,服务器中部署的序列生成服务每隔指定时长,会获取序列管理服务中保存的当前序列值。该指定时长可以是一秒钟或者几秒钟等,该指定时长的具体时长可以根据研发需求设定。
步骤S104,按照预设的调整规则调整当前序列值,得到新序列值。
该调整规则用于使序列管理服务中的当前序列值单调变化,该单调变化可以是递增的或者递减的,为了便于直观的反应指定服务中服务事件的先后顺序,该单调变化可以采用递增变化。
在具体实现时,如果使序列管理服务中的当前序列值递增变化,在调整当前序列值时,可将当前序列值与预设增量值(例如,1)相加,得到新序列值;如果使序列管理服务中的当前序列值递减变化,在调整当前序列值时,可将当前序列值与预设减量值(例如,-1)相加,得到新序列值。
步骤S106,将新序列值返回给序列管理服务,以使该序列管理服务将当前序列值更新为新序列值;该调整规则用于使序列管理服务中的当前序列值单调变化。
序列生成服务调整当前序列值,得到新序列值后,会将该新序列值返回给序列管理服务,该序列管理服务会将当前时刻保存的当前序列值替换为接收到的新序列值,从而保证序列管理服务中保存的当前序列值可以单调变化,避免了使用服务器的时间戳作为序列值的弊端。同时,由于序列生成服务每隔指定时间便会从序列管理服务中获取当前序列值,并将根据当前序列值调整的新序列值返回给序列管理服务,从而使得序列管理服务中的当前序列值每隔指定时长更新一次,从而确保了序列值的有效性和实用性。
本发明实施例提供的一种序列生成方法,首先从用于保存当前序列值的序列管理服务中获取当前序列值;该当前序列值用于被指定服务获取后,记录服务事件的发生顺序;进而按照预设的、使序列管理服务中的当前序列值单调变化的调整规则调整该当前序列值,得到新序列值;然后将该新序列值返回给序列管理服务,以使该序列管理服务将当前序列值更新为新序列值。该方式可以使序列管理服务中的序列值单调变化,通过单调变化的序列值记录服务事件的发生顺序,从而可以准确地记录服务事件的发生顺序。
本发明实施例还提供了另一种序列生成方法,该方法在上述实施例方法的基础上实现;该方法重点描述按照预设的调整规则调整当前序列值,得到新序列值的具体过程(通过下述步骤S204实现);如图2所示,该方法包括如下具体步骤:
步骤S202,每隔指定时长,从序列管理服务中获取当前序列值;该序列管理服务用于保存当前序列值;该当前序列值用于:被指定服务获取后,记录服务事件的发生顺序。
步骤S204,将上述当前序列值与预设的单位序列值增量相加,得到新序列值。
上述预设的单位序列值增量是根据研发需求设置的,例如,该单位序列值增量可以设置为1或者10等。在具体实现时,从序列管理服务中获取到当前序列值后,会将该当前序列值与单位序列增量相加,得到新序列值,从而可以保证新序列值相对于当前序列值是单调增加的。
步骤S206,将新序列值返回给序列管理服务,以使该序列管理服务将当前序列值更新为新序列值。
序列管理服务接收到新序列值后,会将其当前时刻保存的序列值(相当于上述当前序列值)更新为新序列值,从而确保了该序列管理服务中保存的序列值随着时间的推移,是严格递增变化的。
通常情况下,服务器中部署有一个序列生成服务即可完成序列管理服务中序列值的更新,为了避免一个序列生成服务故障影响序列值的更新和生成,可以在服务器中部署多个序列生成服务。在具体实现时,部署的多个序列生成服务会并发执行,为了确保序列管理服务中保存的当前序列值一次只由一个序列生成服务返回的新序列值更新,序列管理服务需要通过序列生成服务返回的序列版本号确定是否更新序列值。具体地,上述序列管理服务还用于保存当前序列值对应的序列版本号;上述序列生成方法可以通过下述步骤10-12实现:
步骤10,每隔固定时长,从序列管理服务中获取当前序列值和当前序列值对应的序列版本号。
上述当前序列值对应的序列版本号可以表征当前序列值的更新次数,通常序列版本号越大,表示当前序列值的更新次数越多。
步骤11,将当前序列值与预设的单位序列值增量相加,得到新序列值。
步骤12,将新序列值和当前序列值对应的版本号返回给序列管理服务,以使该序列管理服务基于当前序列值对应的序列版本号,将当前序列值更新为新序列值,并更新序列管理服务中保存的序列版本号。
在具体实现时,序列生成服务每隔固定时长,会从序列管理服务中获取当前序列值和当前序列值对应的序列版本号,并将当前序列值与单位序列值增量的加和确定为新序列值,进而将该新序列值和获取的当前序列值对应的序列版本号返回给序列管理服务,该序列管理服务接收到新序列值和序列版本号后,会检查其保存的序列版本号是否与接收的序列版本号相同,如果相同,说明当前序列值没有被其他序列生成服务返回的新序列值更新,序列管理服务会将其保存的当前序列值更新为新序列值,并将序列管理服务中保存的序列版本号加一,序列版本号加一代表了序列值更新次数加一;如果不相同,说明当前序列值已被其他序列生成服务返回的新序列值更新,此时,序列生成服务向该序列生成服务返回更新失败的结果。
步骤S208,通过序列管理服务向指定服务提供更新后的当前序列值。
在一些实施例中,上述序列管理服务可以与序列生成服务部署在同一个服务器中,也可以部署在不同的服务器中。在具体实现时,当序列管理服务将其保存的当前序列值更为新序列值后,序列管理服务可以向指定服务提供更新后的当前序列值,以使指定服务通过更新后的当前序列值指示服务事件的发生顺序。
在具体实现时,序列管理服务向指定服务提供更新后的当前序列值的方式有两种,一种是当序列管理服务将当前序列值更新为新序列值后,向指定服务发送通知,以使指定服务获取新序列值;另一种是序列管理服务接收指定服务发送的序列值查询请求;将当前时刻的当前序列值返回给指定服务。
上述序列生成方法中,序列生成服务每隔指定时长,从序列管理服务中获取当前序列值;进而将当前序列值与预设的单位序列值增量相加,得到新序列值;再将新序列值返回给序列管理服务,以使该序列管理服务将当前序列值更新为新序列值;然后通过序列管理服务向指定服务提供更新后的当前序列值。该方式中,序列管理服务中保存的序列值的变化始终是严格递增的,使得指定服务获取到的序列值也是严格递增的,从而序列值能够准确表征指定服务中服务事件的发生顺序。
对应于上述方法实施例,本发明实施例还提供了另一种序列生成方法,该方法应用于部署有序列管理服务的服务器中,该序列管理服务器用于保存当前序列值;该序列管理服务可以与序列生成服务进行交互;如图3所示,该方法包括如下步骤:
步骤S302,如果接收到序列生成服务发送的序列值更新请求,提取序列值更新请求携带的序列值;该序列值更新请求携带的序列值为:按照预设的调整规则调整获取的当前序列值,得到的新序列值。
上述当前序列值用于:被指定服务获取后,记录服务事件的发生顺序;该调整规则用于使保存的当前序列值单调变化。上述指定服务为向序列管理服务发送注册请求,且注册成功的服务,也可以理解为分布式系统中的、需要使用当前序列值记录事件发生顺序的服务。
在一些实例中,序列生成服务每隔指定时长从序列管理服务中获取到当前序列值后,会将该当前序列值与单位序列增量相加,得到新序列值,从而可以保证新序列值相对于当前序列值是单调增加。
步骤S304,将保存的当前序列值更新为新序列值。
保存的当前序列值是指保存在序列管理服务中的当前序列值。在一些实施例中,上述序列生成服务包括多个;每个序列生成服务均会向序列管理服务发送序列更新请求,该序列值更新请求中不仅携带有新序列值还携带有序列版本号;基于此,上述步骤S304可以通过下述步骤实现:针对于多个序列生成服务中的每个序列生成服务,执行下述步骤20-22:
步骤20,判断当前序列生成服务发送的序列值更新请求中的序列版本号是否与保存的序列版本号相同;如果相同,执行步骤21;否则,执行步骤22。
步骤21,将保存的当前序列值更新为新序列值,并将保存的序列版本号加一。
上述保存的当前序列值和保存的序列版本号均为序列管理服务中保存的当前序列值和当前序列值对应的序列版本号。如果当前序列生成服务发送的序列值更新请求中的序列版本号与保存的序列版本号相同,说明序列管理服务中保存的当前序列值未被其他序列生成服务发送的序列值更新请求中的新序列值更新,该序列管理服务可以将其保存的当前序列值更新为当前序列生成服务发送的序列值更新请求中的新序列值,并将保存的序列版本号加一。
步骤22,向当前序列生成服务返回更新失败的结果。
如果当前序列生成服务发送的序列值更新请求中的序列版本号与保存的序列版本号不相同,说明序列管理服务中保存的当前序列值已被其他序列生成服务发送的序列值更新请求中的新序列值更新,无法更新为当前序列生成服务发送的序列值更新请求中的新序列值。
在具体实现时,上述序列管理服务可采用zookeeper服务,该zookeeper服务通常是一个高性能、集中化、分布式应用程序协调服务,主要是用来解决分布式应用中用户经常遇到的一些数据管理问题。采用zookeeper服务时,该序列生成方法包括:每个序列生成服务定期从zookeeper服务中获取当前序列值N以及该当前序列值N对应的序列版本号V,然后序列生成服务将当前序列值N加1,得到新序列值N+1,然后根据N+1和获取的序列版本号V生成序列更新请求,zookeeper服务收到序列更新请求时,先检查自己保存的序列版本号是否为V,如果不是,会返回失败;如果是,将其保存的序列值N更新为N+1,同时将序列版本号加1,从而避免了多个序列生成服务并发写回N+1的冲突问题。
在一些实施例中,将保存的当前序列值更新为新序列值之后,序列管理服务会向指定服务提供更新后的当前序列值。具体地,分布式系统中每个需要使用序列值记录服务事件发生顺序的服务,均会向序列管理服务注册,在具体实现时,向序列管理服务注册的指定服务可以通过下述两种方式获取到最新的序列值:
第一种:当序列管理服务中的当前序列值更新为新序列值后,向指定服务发送通知,以使该指定服务获取新序列值。也即是每当序列管理服务中保存的序列值发生变化时,会主动通知在序列管理服务中注册的所有服务,使所有的服务均可以获取到最新的序列值。
第二种:序列管理服务接收指定服务发送的序列值查询请求;该序列管理服务将当前时刻的当前序列值返回给指定服务。该方式相当于指定服务主动从序列管理服务中获取序列值的方式。
上述序列生成方法,如果接收到序列生成服务发送的序列值更新请求,提取序列值更新请求携带的序列值;该序列值更新请求携带的序列值为:按照预设的调整规则调整获取的当前序列值,得到的新序列值;然后将保存的当前序列值更新为新序列值。该方式通过序列生成服务按照序列值单调变化的规则调整得到的新序列值,更新序列管理服务中当前保存的序列值,保证了序列值的单调变化,通过单调变化的序列值记录服务事件的发生顺序,可以准确地记录服务事件的发生顺序。
对应于上述图1所示的方法实施例,本发明实施例提供了一种序列生成装置,如图4所示,该装置包括:
序列值获取模块40,用于从序列管理服务中获取当前序列值;该序列管理服务用于保存当前序列值;该当前序列值用于:被指定服务获取后,记录服务事件的发生顺序。
序列值调整模块41,用于按照预设的调整规则调整当前序列值,得到新序列值。
序列值返回模块42,用于将新序列值返回给序列管理服务,以使该序列管理服务将当前序列值更新为新序列值;该调整规则用于使序列管理服务中的当前序列值单调变化。
上述序列生成装置,首先从用于保存当前序列值的序列管理服务中获取当前序列值;该当前序列值用于被指定服务获取后,记录服务事件的发生顺序;进而按照预设的、使序列管理服务中的当前序列值单调变化的调整规则调整该当前序列值,得到新序列值;然后将该新序列值返回给序列管理服务,以使该序列管理服务将当前序列值更新为新序列值。该方式可以使序列管理服务中的序列值单调变化,通过单调变化的序列值记录服务事件的发生顺序,从而可以准确地记录服务事件的发生顺序。
进一步地,上述序列值调整模块41,用于:将当前序列值与预设的单位序列值增量相加,得到新序列值。
进一步地,上述序列管理服务还用于保存当前序列值对应的序列版本号;上述序列值获取模块40,用于:每隔固定时长,从序列管理服务中获取当前序列值和当前序列值对应的序列版本号;上述序列值返回模块42,用于:将新序列值和当前序列值对应的版本号返回给序列管理服务,以使序列管理服务基于当前序列值对应的序列版本号,将当前序列值更新为新序列值,并更新该序列管理服务中保存的序列版本号。
本发明实施例所提供的序列生成装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
对应于上述图3所示的方法实施例,本发明实施例提供了另一种序列生成装置,如图5所示,该装置包括:
请求接收模块50,用于如果接收到序列生成服务发送的序列值更新请求,提取所述序列值更新请求携带的序列值;所述序列值更新请求携带的序列值为:按照预设的调整规则调整获取的当前序列值,得到的新序列值;
序列值更新模块51,用于将保存的当前序列值更新为所述新序列值;
其中,所述当前序列值用于:被指定服务获取后,记录服务事件的发生顺序;所述调整规则用于使保存的当前序列值单调变化。
上述序列生成装置,如果接收到序列生成服务发送的序列值更新请求,提取序列值更新请求携带的序列值;该序列值更新请求携带的序列值为:按照预设的调整规则调整获取的当前序列值,得到的新序列值;然后将保存的当前序列值更新为新序列值。该方式通过序列生成服务按照序列值单调变化的规则调整得到的新序列值,更新序列管理服务中当前保存的序列值,保证了序列值的单调变化,从而保证了当前保存的序列值被指定服务获取后,能够准确记录服务事件的发生顺序。
具体地,上述序列生成服务包括多个;上述序列值更新请求还携带有序列版本号;上述序列值更新模块51,用于:针对于多个序列生成服务中的每个序列生成服务,执行下述操作:判断当前序列生成服务发送的序列值更新请求中的序列版本号是否与保存的序列版本号相同;如果相同,将保存的当前序列值更新为新序列值,并将保存的序列版本号加一;如果不相同,向当前序列生成服务返回更新失败的结果。
进一步地,上述装置还包括序列值提供模块,用于:向指定服务提供更新后的当前序列值。
在具体实现时,上述序列值提供模块,用于:当当前序列值更新为新序列值后,向指定服务发送通知,以使指定服务获取新序列值。
进一步地,上述序列值提供模块,还用于:接收指定服务发送的序列值查询请求;将当前时刻的当前序列值返回给指定服务。
本发明实施例所提供的序列生成装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明实施例还提供了一种电子设备,如图6所示,该电子设备包括处理器101和存储器100,该存储器100存储有能够被处理器101的机器可执行指令,该处理器101执行机器可执行指令以实现上述序列生成方法。
进一步地,图6所示的电子设备还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
其中,存储器100可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述序列生成方法,具体实现可参见方法实施例,在此不再赘述。
本发明实施例所提供的序列生成方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种序列生成方法,其特征在于,所述方法包括:
从序列管理服务中获取当前序列值;所述序列管理服务用于保存所述当前序列值;所述当前序列值用于:被指定服务获取后,记录服务事件的发生顺序;
按照预设的调整规则调整所述当前序列值,得到新序列值;
将所述新序列值返回给所述序列管理服务,以使所述序列管理服务将所述当前序列值更新为所述新序列值;所述调整规则用于使所述序列管理服务中的当前序列值单调变化。
2.根据权利要求1所述的方法,其特征在于,所述按照预设的调整规则调整所述当前序列值,得到新序列值的步骤,包括:
将所述当前序列值与预设的单位序列值增量相加,得到所述新序列值。
3.根据权利要求1所述的方法,其特征在于,所述序列管理服务还用于保存所述当前序列值对应的序列版本号;
所述从序列管理服务中获取当前序列值的步骤,包括:
每隔固定时长,从所述序列管理服务中获取所述当前序列值和所述当前序列值对应的序列版本号;
所述将所述新序列值返回给所述序列管理服务,以使所述序列管理服务将所述当前序列值更新为所述新序列值的步骤,包括:
将所述新序列值和所述当前序列值对应的版本号返回给所述序列管理服务,以使所述序列管理服务基于所述当前序列值对应的序列版本号,将所述当前序列值更新为所述新序列值,并更新所述序列管理服务中保存的序列版本号。
4.一种序列生成方法,其特征在于,所述方法包括:
如果接收到序列生成服务发送的序列值更新请求,提取所述序列值更新请求携带的序列值;所述序列值更新请求携带的序列值为:按照预设的调整规则调整获取的当前序列值,得到的新序列值;
将保存的当前序列值更新为所述新序列值;
其中,所述当前序列值用于:被指定服务获取后,记录服务事件的发生顺序;所述调整规则用于使保存的当前序列值单调变化。
5.根据权利要求4所述的方法,其特征在于,所述序列生成服务包括多个;所述序列值更新请求还携带有序列版本号;
所述将保存的当前序列值更新为所述新序列值的步骤,包括:
针对于多个所述序列生成服务中的每个序列生成服务,执行下述操作:
判断当前序列生成服务发送的序列值更新请求中的序列版本号是否与保存的序列版本号相同;
如果相同,将保存的当前序列值更新为所述新序列值,并将所述保存的序列版本号加一;
如果不相同,向所述当前序列生成服务返回更新失败的结果。
6.根据权利要求4所述的方法,其特征在于,所述将保存的当前序列值更新为所述新序列值的步骤之后,所述方法还包括:
向所述指定服务提供更新后的所述当前序列值。
7.根据权利要求6所述的方法,其特征在于,所述向所述指定服务提供更新后的所述当前序列值的步骤,包括:
当所述当前序列值更新为所述新序列值后,向所述指定服务发送通知,以使所述指定服务获取所述新序列值。
8.根据权利要求6所述的方法,其特征在于,所述向所述指定服务提供更新后的所述当前序列值的步骤,包括:
接收所述指定服务发送的序列值查询请求;
将当前时刻的所述当前序列值返回给所述指定服务。
9.一种序列生成装置,其特征在于,所述装置包括:
序列值获取模块,用于从序列管理服务中获取当前序列值;所述序列管理服务用于保存所述当前序列值;所述当前序列值用于:被指定服务获取后,记录服务事件的发生顺序;
序列值调整模块,用于按照预设的调整规则调整所述当前序列值,得到新序列值;
序列值返回模块,用于将所述新序列值返回给所述序列管理服务,以使所述序列管理服务将所述当前序列值更新为所述新序列值;所述调整规则用于使所述序列管理服务中的当前序列值单调变化。
10.一种序列生成装置,其特征在于,所述装置包括:
请求接收模块,用于如果接收到序列生成服务发送的序列值更新请求,提取所述序列值更新请求携带的序列值;所述序列值更新请求携带的序列值为:按照预设的调整规则调整获取的当前序列值,得到的新序列值;
序列值更新模块,用于将保存的当前序列值更新为所述新序列值;
其中,所述当前序列值用于:被指定服务获取后,记录服务事件的发生顺序;所述调整规则用于使保存的当前序列值单调变化。
11.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至8任一项所述的序列生成方法。
12.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使处理器实现权利要求1至8任一项所述的序列生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010998566.3A CN112104743B (zh) | 2020-09-21 | 2020-09-21 | 序列生成方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010998566.3A CN112104743B (zh) | 2020-09-21 | 2020-09-21 | 序列生成方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112104743A true CN112104743A (zh) | 2020-12-18 |
CN112104743B CN112104743B (zh) | 2022-08-16 |
Family
ID=73755036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010998566.3A Active CN112104743B (zh) | 2020-09-21 | 2020-09-21 | 序列生成方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112104743B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120179645A1 (en) * | 2011-01-07 | 2012-07-12 | Microsoft Corporation | Transaction support for distributed data |
CN103020268A (zh) * | 2012-12-26 | 2013-04-03 | 大唐软件技术股份有限公司 | 关系型数据库序列号应用方法和系统 |
CN103631910A (zh) * | 2013-11-26 | 2014-03-12 | 烽火通信科技股份有限公司 | 一种分布式数据库多列复合查询的系统及方法 |
CN106899654A (zh) * | 2016-08-10 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种序列值生成方法、装置及系统 |
CN108416040A (zh) * | 2018-03-14 | 2018-08-17 | 上海达梦数据库有限公司 | 一种数据库修复方法、装置、终端设备及存储介质 |
CN108804442A (zh) * | 2017-04-27 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 序列号生成方法和装置 |
CN108829413A (zh) * | 2018-05-07 | 2018-11-16 | 北京达佳互联信息技术有限公司 | 数据更新方法、装置及计算机可读存储介质、服务器 |
CN109446202A (zh) * | 2018-11-09 | 2019-03-08 | 上海达梦数据库有限公司 | 标识符分配方法、装置、服务器和存储介质 |
CN109597853A (zh) * | 2018-10-22 | 2019-04-09 | 平安科技(深圳)有限公司 | 业务场景元素序列号生成方法、装置、介质和计算机设备 |
CN110704424A (zh) * | 2019-09-03 | 2020-01-17 | 华为技术有限公司 | 一种应用于数据库的排序方法、装置及相关设备 |
CN111400283A (zh) * | 2020-03-19 | 2020-07-10 | 中国建设银行股份有限公司 | 一种数据处理方法、系统、电子设备及存储介质 |
CN111625543A (zh) * | 2020-05-27 | 2020-09-04 | 贵州易鲸捷信息技术有限公司 | 一种基于HBase表实现全局单调递增的序列的方法 |
-
2020
- 2020-09-21 CN CN202010998566.3A patent/CN112104743B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120179645A1 (en) * | 2011-01-07 | 2012-07-12 | Microsoft Corporation | Transaction support for distributed data |
CN103020268A (zh) * | 2012-12-26 | 2013-04-03 | 大唐软件技术股份有限公司 | 关系型数据库序列号应用方法和系统 |
CN103631910A (zh) * | 2013-11-26 | 2014-03-12 | 烽火通信科技股份有限公司 | 一种分布式数据库多列复合查询的系统及方法 |
CN106899654A (zh) * | 2016-08-10 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种序列值生成方法、装置及系统 |
CN108804442A (zh) * | 2017-04-27 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 序列号生成方法和装置 |
CN108416040A (zh) * | 2018-03-14 | 2018-08-17 | 上海达梦数据库有限公司 | 一种数据库修复方法、装置、终端设备及存储介质 |
CN108829413A (zh) * | 2018-05-07 | 2018-11-16 | 北京达佳互联信息技术有限公司 | 数据更新方法、装置及计算机可读存储介质、服务器 |
CN109597853A (zh) * | 2018-10-22 | 2019-04-09 | 平安科技(深圳)有限公司 | 业务场景元素序列号生成方法、装置、介质和计算机设备 |
CN109446202A (zh) * | 2018-11-09 | 2019-03-08 | 上海达梦数据库有限公司 | 标识符分配方法、装置、服务器和存储介质 |
CN110704424A (zh) * | 2019-09-03 | 2020-01-17 | 华为技术有限公司 | 一种应用于数据库的排序方法、装置及相关设备 |
CN111400283A (zh) * | 2020-03-19 | 2020-07-10 | 中国建设银行股份有限公司 | 一种数据处理方法、系统、电子设备及存储介质 |
CN111625543A (zh) * | 2020-05-27 | 2020-09-04 | 贵州易鲸捷信息技术有限公司 | 一种基于HBase表实现全局单调递增的序列的方法 |
Non-Patent Citations (1)
Title |
---|
王达: "《时间序列数据挖掘研究与应用》", 《中国优秀博硕士学位论文全文数据库(博士)——信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112104743B (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019201039A1 (zh) | 一种更新应用程序的方法、系统及应用服务器 | |
CN107179940B (zh) | 一种任务执行的方法及装置 | |
CN109788026B (zh) | 消息处理方法及装置 | |
CN110471780B (zh) | 分布式事件处理装置、终端和计算机存储介质 | |
CN111031135B (zh) | 消息传送方法、装置及电子设备 | |
CN110781372B (zh) | 一种优化网站的方法、装置、计算机设备及存储介质 | |
CN111182089A (zh) | 容器集群系统和访问大数据组件的方法、装置及服务器 | |
CN112486915B (zh) | 数据存储方法及装置 | |
US10977699B2 (en) | Digital signage shim layer | |
CN111083228A (zh) | 标识号的生成方法、装置和电子设备 | |
CN108108126B (zh) | 一种数据处理方法、装置及设备 | |
CN112104743B (zh) | 序列生成方法、装置和电子设备 | |
CN113590017A (zh) | 用于处理数据的方法、电子设备和计算机程序产品 | |
WO2016176045A1 (en) | System, method, and apparatus for updating data in a distributed storage system | |
CN114422576B (zh) | 一种会话清理方法、装置、计算机设备和可读存储介质 | |
CN112698783A (zh) | 对象存储方法、装置及系统 | |
CN113037420B (zh) | 读时间戳的获取方法和装置、电子设备和存储介质 | |
CN107135258B (zh) | 消息推送的方法以及服务器 | |
CN112069258B (zh) | 事务进度的管理方法、装置及分布式数据库 | |
CN111400327B (zh) | 一种数据同步方法、装置、电子设备及存储介质 | |
CN111884932B (zh) | 一种链路确定方法、装置、设备和计算机可读存储介质 | |
CN110489231B (zh) | 交易信息记录方法、设备及计算机可读存储介质 | |
CN113190554A (zh) | 一种生成主键的方法和分布式系统 | |
CN112822190A (zh) | 报文维护方法及装置 | |
CN110795094A (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 |