CN111414242B - 状态机的运行方法、装置、服务器、系统和存储介质 - Google Patents

状态机的运行方法、装置、服务器、系统和存储介质 Download PDF

Info

Publication number
CN111414242B
CN111414242B CN202010174435.3A CN202010174435A CN111414242B CN 111414242 B CN111414242 B CN 111414242B CN 202010174435 A CN202010174435 A CN 202010174435A CN 111414242 B CN111414242 B CN 111414242B
Authority
CN
China
Prior art keywords
state machine
machine instance
target
instance
target state
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
Application number
CN202010174435.3A
Other languages
English (en)
Other versions
CN111414242A (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.)
Tianjin Zhongxin Zhiguan Information Technology Co ltd
Original Assignee
Tianjin Zhongxin Zhiguan Information Technology Co ltd
Tianjin Meiteng 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 Tianjin Zhongxin Zhiguan Information Technology Co ltd, Tianjin Meiteng Technology Co Ltd filed Critical Tianjin Zhongxin Zhiguan Information Technology Co ltd
Priority to CN202010174435.3A priority Critical patent/CN111414242B/zh
Publication of CN111414242A publication Critical patent/CN111414242A/zh
Application granted granted Critical
Publication of CN111414242B publication Critical patent/CN111414242B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及一种状态机的运行方法、装置、服务器、系统和存储介质。该方法应用于事件消费系统中的服务器,所述事件消费系统中包含多个服务器,该方法包括:当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识;根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例;若查找到,则从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行;根据运行结果更新所述标准上下文并同步至所述共享内存。该方法可以有效避免状态机实例的运行状态的丢失,进而提高状态机在运行过程中的可靠性。

Description

状态机的运行方法、装置、服务器、系统和存储介质
技术领域
本申请涉及计算机应用技术领域,特别是涉及一种状态机的运行方法、装置、服务器、系统和存储介质。
背景技术
状态机定义了多个状态以及状态之间的迁移。状态机通过响应一系列事件而运行,当事件满足某些触发条件时,将导致状态机从当前的状态迁移到下一个状态。
状态机在计算机领域应用非常广泛,许多系统都使用到状态机。状态机根据状态图来运行。但是,传统的状态机在运行过程中的可靠性较低。
发明内容
基于此,有必要针对传统的状态机在运行过程中的可靠性较低的技术问题,提供一种状态机的运行方法、装置、服务器、系统和存储介质。
第一方面,本申请实施例提供一种状态机的运行方法,应用于事件消费系统中的服务器,所述事件消费系统中包含多个服务器,所述方法包括:
当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识;
根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,其中,所述状态机实例池中存储的每个状态机实例具有不同的实例标识;
若查找到,则从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行;
根据运行结果更新所述标准上下文并同步至所述共享内存。
第二方面,本申请实施例提供一种状态机的运行装置,集成于事件消费系统中的服务器,所述事件消费系统中包含多个服务器,所述装置包括:
提取模块,用于当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识;
查找模块,用于根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,其中,所述状态机实例池中存储的每个状态机实例具有不同的实例标识;
处理模块,用于在查找到对应的目标状态机实例时,从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行;
更新同步模块,用于根据运行结果更新所述标准上下文并同步至所述共享内存。
第三方面,本申请实施例提供一种服务器,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本申请实施例第一方面提供的状态机的运行方法。
第四方面,本申请实施例提供一种事件消费系统,包括:事件监测装置和多个如本申请实施例第三方面提供的服务器;
所述事件监测装置,用于监测业务系统产生的触发事件,并将所述触发事件分别发送给所述多个服务器。
第五方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例第一方面提供的状态机的运行方法。
本申请实施例提供的状态机的运行方法、装置、服务器、系统和存储介质,当服务器竞争到触发事件的消费权限时,从触发事件中提取目标状态机标识和目标实例标识;根据目标实例标识,从与目标状态机标识对应的状态机实例池中查找对应的目标状态机实例;若查找到,则从共享内存中获取目标状态机实例的标准上下文,并根据标准上下文以及触发事件,控制目标状态机实例的运行,以及根据运行结果更新上述标准上下文并同步至共享内存中。由于在状态机的运行过程中,服务器能够根据目标状态机实例的运行结果更新目标状态机实例的标准上下文,并将更新后的标准上下文同步至共享内存中,使得服务器在竞争到触发事件的消费权限,且根据触发事件查找到目标状态机实例时,能够从共享内存中获取目标状态机实例的标准上下文,并根据标准上下文和触发事件,控制目标状态机实例的运行,从而可以有效避免状态机实例的运行状态的丢失,进而提高状态机在运行过程中的可靠性。
附图说明
图1为本申请实施例应用的事件消费系统结构示意图;
图2为本申请实施例提供的状态机的运行方法的一种流程示意图;
图3为本申请实施例提供的状态机实例的创建过程示意图;
图4为本申请实施例提供的状态机的运行方法的另一种流程示意图;
图5为本申请实施例提供的分布式状态机系统的结构示意图;
图6为本申请实施例提供的分布式状态机服务的结构示意图;
图7为本申请实施例提供的状态机的运行装置的结构示意图;
图8为本申请实施例提供的服务器的内部结构示意图。
具体实施方式
本申请实施例提供的状态机的运行方法,可以应用于如图1所示的事件消费系统。该事件消费系统可以包括:事件监测装置10和多个服务器11。其中,事件监测装置10监测业务系统产生的触发事件,并将监测到的触发事件分别发送给多个服务器11;多个服务器11通过竞争机制分别竞争该触发事件的消费权限,竞争到该触发事件消费权限的第一服务器消费该触发事件,即第一服务器根据该触发事件控制自身所管理的状态机的运行,而未竞争到该触发事件消费权限的第二服务器则忽略该触发事件,即第二服务器对自身所管理的状态机不做任何控制操作。可选的,上述事件监测装置10可以为与业务系统相关的各种形式的传感器。
为了使本申请的目的、技术方案及优点更加清楚明白,通过下述实施例并结合附图,对本申请实施例中的技术方案进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,下述方法实施例的执行主体可以是状态机的运行装置,该装置可以通过软件、硬件或者软硬件结合的方式实现成为上述服务器的部分或者全部。
图2为本申请实施例提供的状态机的运行方法的一种流程示意图。本实施例涉及的是服务器如何根据触发事件控制状态机运行的具体过程。如图2所示,该方法可以包括:
S101、当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识。
具体的,在实际应用中,可以预先根据业务系统的实际监测需求,配置相应的状态机。用户可以在状态机的设计界面绘制所需的状态图,这样,服务器将用户所绘制的状态图映射为对应的状态图信息,并将状态图信息保存到数据库中,从而完成状态机的配置。其中,状态图信息主要包括状态表信息以及状态迁移表信息。当然,也可以通过配置文件获取对应的状态图信息,本实施例对此不做限定。例如,配置的状态机可以为:压滤状态机以及密控状态机,压滤状态机可以包括压滤机的各个运行状态以及各个运行状态之间的迁移条件,密控状态机可以包括密控斜轮电机的各个运行状态以及各个运行状态之间的迁移条件等。不同的状态机具有不同的状态机标识,同一种状态机可以包括多个状态机实例,每个状态机实例具有不同的实例标识。
上述触发事件为目标状态机实例的状态迁移条件,当触发事件到来时,各个服务器竞争该触发事件的消费权限。当竞争到该触发事件的消费权限时,服务器便可以从触发事件中提取目标状态机标识和目标实例标识。当未竞争到该触发事件的消费权限时,则忽略该触发事件。这样,当第一个竞争到触发事件消费权限的服务器在处理触发事件过程中宕机,则消费事件系统中的其它服务器继续竞争该触发事件的消费权限,并在竞争到消费权限后继续消费该触发事件,从而保证状态机服务的高可用,以提高状态机运行的可靠性。
S102、根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,其中,所述状态机实例池中存储的每个状态机实例具有不同的实例标识。
具体的,状态机实例池用于存储状态机所包括的一个或多个状态机实例,同一个状态机实例池可以缓存不同状态机的状态机实例,当然,不同状态机的状态机实例也可以存储在不同的状态机实例池中。这样,服务器便可以通过目标状态机标识查找到目标状态机所对应的状态机实例池,并通过目标实例标识从状态机实例池中查找对应的目标状态机实例。
S103、若查找到,则从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行。
具体的,上述目标状态机实例的标准上下文用于表征目标状态机实例的当前标准执行状态。在实际运行过程中,服务器可能会存在宕机或者服务器未竞争到触发事件的消费权限,这样,便会导致服务器所管理的目标状态机实例的当前执行状态与当前标准执行状态不相符合,即导致目标状态机实例的运行状态发生丢失,因此,为了提高状态机运行的可靠性,服务器需要从共享内存中获取目标状态机实例的标准上下文,以获知目标状态机实例的当前标准执行状态,从而基于标准上下文以及触发事件控制目标状态机实例的运行。
S104、根据运行结果更新所述标准上下文并同步至所述共享内存。
其中,服务器根据目标状态机实例的运行结果更新目标状态机实例的标准上下文,并将更新后的标准上下文同步至共享内存中,以便在与目标状态机实例相关的下一个触发事件到来时,能够基于更新后的标准上下文以及下一个触发事件控制目标状态机实例的运行。另外,标准上下文存储在共享内存中,事件消费系统中的各个服务器在竞争到触发事件的消费权限后,均可以共享相同的状态机实例的标准上下文,使得状态机服务具有分布式特性,从而提高了状态机运行的可靠性。
目标状态机实例在运行过程中发生状态迁变时,会触发相应的动作消息给业务系统,以使业务系统根据动作消息执行对应的动作。为了防止业务系统宕机导致动作消息丢失,在上述实施例的基础上,可选的,在服务器与业务系统之间增加消息中间件,服务器将所述目标状态机实例在运行过程中触发的动作消息存储到消息中间件中,以通过消息中间件将所述动作消息发送给业务系统,其中,所述动作消息用于指示所述业务系统执行对应的动作。这样,在业务系统重启并进入工作状态时,业务系统便可以从消息中间件中获取相应的动作消息,避免动作消息的丢失。
本申请实施例提供的状态机的运行方法,当服务器竞争到触发事件的消费权限时,从触发事件中提取目标状态机标识和目标实例标识;根据目标实例标识,从与目标状态机标识对应的状态机实例池中查找对应的目标状态机实例;若查找到,则从共享内存中获取目标状态机实例的标准上下文,并根据标准上下文以及触发事件,控制目标状态机实例的运行,以及根据运行结果更新上述标准上下文并同步至共享内存中。由于在状态机的运行过程中,服务器能够根据目标状态机实例的运行结果更新目标状态机实例的标准上下文,并将更新后的标准上下文同步至共享内存中,使得服务器在竞争到触发事件的消费权限,且根据触发事件查找到目标状态机实例时,能够从共享内存中获取目标状态机实例的标准上下文,并根据标准上下文和触发事件,控制目标状态机实例的运行,从而可以有效避免状态机实例的运行状态的丢失,进而提高状态机在运行过程中的可靠性。
在上述实施例的基础上,可选的,若服务器在与目标状态机标识对应的状态机实例池中未查找到对应的目标状态机实例,则服务器获取所述目标状态机标识对应的状态图信息,并根据所述状态图信息,创建所述目标实例标识对应的目标状态机实例。接着,服务器根据触发事件控制所创建的目标状态机实例的运行。另外,服务器还可以根据运行结果,将该目标状态机实例的当前执行状态作为目标状态机实例的标准上下文存储至共享内存中。
具体的,状态图信息可以包括状态迁移表信息和状态表信息。其中,状态迁移表信息可以包括状态机标识、状态迁移条件、状态迁移条件所对应的迁移源状态、迁移条件所对应的迁移目标状态以及状态迁移类型等信息。其中,迁移源状态和迁移目标状态的数量可以为多个。状态表信息可以包括状态机标识、状态区域标识、各个状态、各个状态是否为初始状态、各个状态的状态类型等信息。示例性的,如图3所示,一个状态图加载后便形成一个状态机工厂,一个状态机工厂可以创建多个状态机实例。创建的状态机实例可以存储在相应的状态机实例池中。当目标状态机标识对应的状态机为压滤状态机时,服务器根据压滤状态机的状态图信息(服务器可以通过压滤状态机状态图获取对应的状态图信息),便可以创建对应的压滤机实例1、压滤机实例2……压滤机实例6等,当目标状态机标识对应的状态机为密控状态机时,服务器根据密控状态机的状态图信息(服务器可以通过密控状态机状态图获取对应的状态图信息),便可以创建对应的密控斜轮电机实例。其中,图3中的方框
Figure BDA0002410298760000081
代表状态机的各个状态,箭头“→”代表状态机的状态迁移条件。
在获取到目标状态机标识对应的状态表信息以及状态迁移表信息之后,服务器创建状态机实例对象,再根据获取到的状态迁移表信息和状态表信息对创建的状态机实例对象进行初始化,得到目标实例标识对应的目标状态机实例。另外,服务器还可以将所创建的目标状态机实例存储到目标状态机标识对应的状态机实例池中,这样,当再次调用该目标状态机实例时,服务器能够直接从状态机实例池中获取该目标状态机实例,并控制该目标状态机实例的运行,从而提高了服务器对状态机运行的处理效率。
在实际应用过程中,可能存在状态机的状态图被修改的情况,为了进一步提高状态机运行的可靠性,可选的,在状态机的运行过程中,若服务器检测到目标状态机实例对应的状态图信息发生变化,则从状态机实例池中删除目标状态机实例。当后续竞争到触发事件,且根据触发事件确定需要调用目标状态机实例时,则服务器根据修改后的状态图信息重新创建目标状态机实例,以确保所创建的目标状态机实例与修改后的状态图信息相符合,从而进一步提高了状态机运行的可靠性。
图4为本申请实施例提供的状态机的运行方法的另一种流程示意图。本实施例涉及的是服务器如何根据标准上下文以及触发事件控制目标状态机实例的运行的具体过程。在上述实施例的基础上,可选的,如图4所示,上述S103中根据标准上下文以及触发事件控制目标状态机实例的运行的过程可以为:
S201、若判断出所述目标状态机实例的当前执行状态与所述当前标准执行状态不一致,则根据所述标准上下文对所述目标状态机实例进行重置,以更新所述目标状态机实例的当前状态表,得到重置后的目标状态机实例。
其中,当前状态表中存储有目标状态机实例的当前执行状态,服务器将目标状态机实例的当前执行状态与从共享内存中获取的当前标准执行状态进行比较,若判断出当前执行状态与当前标准执行状态不一致,则根据标准上下文对目标状态机实例进行重置,以更新目标状态机实例的当前状态表。若判断出当前执行状态与当前标准执行状态一致,则不需要对目标状态机实例进行重置。
S202、根据所述触发事件和所述目标状态机实例的状态迁移表,提取对应的迁移源状态。
S203、若所述迁移源状态存在于重置后的目标状态机实例的当前状态表中,则按照所述触发事件控制所述重置后的目标状态机实例执行相应的状态迁移。
其中,若迁移源状态存在于重置后的目标状态机实例的当前状态表中,则服务器根据触发事件、迁移源状态和重置后的目标状态机实例的状态迁移表信息确定迁移目标状态,并控制重置后的目标状态机实例从当前执行状态(即迁移源状态)迁移至迁移目标状态,从而完成相应的状态迁移。若迁移源状态不存在于重置后的目标状态机实例的当前状态表中,则不执行任何操作。
在本实施例中,在目标状态机实例的当前执行状态与共享内存中存储的目标状态机实例当前标准执行状态不一致时,服务器能够根据共享内存中的标准上下文对目标状态机实例进行重置,使得当前状态表中的当前执行状态为目标状态机实例的当前最新执行状态,从而提高了基于当前最新执行状态和触发事件所控制的状态迁移结果的准确性,进而进一步提高了状态机运行的可靠性。
为了便于本领域技术人员的理解,结合图5所示的分布式状态机系统(可以理解为事件消费系统),介绍本申请实施例提供的状态机的运行过程,具体的:
该分布式状态机系统可以包括:规则引擎、事件中心、多个分布式状态机服务(即多个服务器)、共享内存、数据库、消息中间件以及业务模块(即业务系统)。其中,规则引擎中包括触发事件的产生规则,这些规则可配置;事件中心通过事件监测模块依据配置的规则监测业务系统的运行,从而产生触发事件;多个分布式状态机服务竞争触发事件的消费权限,当竞争到触发事件消费权限的服务器从触发事件中提取目标状态机标识和目标实例标识,并根据目标实例标识,从与目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,若查找到,则从共享内存中获取状态机实例的标准上下文,以及根据标准上下文以及触发事件,控制目标状态机实例的运行,并根据运行结果更新目标状态机实例的标准上下文并同步至共享内存中。其中,状态机实例池中存储有多个状态机实例,如状态机实例1、状态机实例2……状态机实例n等。若从状态机实例池中未查找到对应的目标状态机实例,则从数据库中获取配置数据(即目标状态机标识对应的状态图信息),根据配置数据创建目标实例标识对应的目标状态机实例,并根据触发事件控制所创建的目标状态机实例的运行。同时,分布式状态机服务将目标状态机实例在运行过程中触发的动作消息存储到消息中间件中,以通过消息中间件将触发的动作消息发送给业务模块。
另外,参见图6,上述分布式状态机服务包括控制组件、配置组件(machineconfig)、状态机实例池、执行组件(machine instance)。可选的,还可以包括通知组件。其中,控制组件包括:状态机控制器(machine controller)和状态机服务(machineservice),通用拦截器构成通知组件,状态机实例池使用java的对象池。配置组件“machineconfig”从数据库中加载已经定义好的状态图信息(配置数据),一份状态图信息定义一个状态机的所有状态以及各个状态间的迁变情况。一个状态图信息加载后生成一个状态机工厂(以状态机标识为唯一健),一个状态机工厂,可以生产多个状态机实例。上述创建目标状态机实例的过程可以为:“machine service”向配置组件“machine config”请求对应的状态机工厂,使用获取的工厂创建对应的目标状态机实例,创建后,“machine service”一方面将目标状态机实例缓存到状态机实例池中,避免下次反复创建,另一方面,将创建的目标状态机实例返回,并从共享内存中获取标准上下文执行下一步状态机状态迁变逻辑。执行完状态迁变逻辑后,根据运行结果更新标准上下文并同步至共享内存中。
图7为本申请实施例提供的状态机的运行装置的结构示意图。如图7所示,该装置集成于事件消费系统中的服务器,该事件消费系统中包含多个服务器,该装置可以包括:提取模块20、查找模块21、处理模块22和更新同步模块23。
具体的,提取模块20用于当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识;
查找模块21用于根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,其中,所述状态机实例池中存储的每个状态机实例具有不同的实例标识;
处理模块22用于在查找到对应的目标状态机实例时,从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行;
更新同步模块23用于根据运行结果更新所述标准上下文并同步至所述共享内存。
本申请实施例提供的状态机的运行装置,当服务器竞争到触发事件的消费权限时,从触发事件中提取目标状态机标识和目标实例标识;根据目标实例标识,从与目标状态机标识对应的状态机实例池中查找对应的目标状态机实例;若查找到,则从共享内存中获取目标状态机实例的标准上下文,并根据标准上下文以及触发事件,控制目标状态机实例的运行,以及根据运行结果更新上述标准上下文并同步至共享内存中。由于在状态机的运行过程中,服务器能够根据目标状态机实例的运行结果更新目标状态机实例的标准上下文,并将更新后的标准上下文同步至共享内存中,使得服务器在竞争到触发事件的消费权限,且根据触发事件查找到目标状态机实例时,能够从共享内存中获取目标状态机实例的标准上下文,并根据标准上下文和触发事件,控制目标状态机实例的运行,从而可以有效避免状态机实例的运行状态的丢失,进而提高状态机在运行过程中的可靠性。
在上述实施例的基础上,可选的,该装置还可以包括:获取模块、创建模块和控制模块;
具体的,获取模块用于在未查找到对应的目标状态机实例时,获取所述目标状态机标识对应的状态图信息;
创建模块用于根据所述状态图信息,创建所述目标实例标识对应的目标状态机实例;
控制模块,用于根据所述触发事件控制所述目标状态机实例的运行。
在上述实施例的基础上,可选的,该装置还可以包括:存储模块;
具体的,存储模块用于将所创建的目标状态机实例存储到所述目标状态机标识对应的状态机实例池中。
在上述实施例的基础上,可选的,所述标准上下文包括所述目标状态机实例的当前标准执行状态,处理模块具体用于若判断出所述目标状态机实例的当前执行状态与所述当前标准执行状态不一致,则根据所述标准上下文对所述目标状态机实例进行重置,以更新所述目标状态机实例的当前状态表,得到重置后的目标状态机实例;根据所述触发事件和所述目标状态机实例的状态迁移表,提取对应的迁移源状态;若所述迁移源状态存在于重置后的目标状态机实例的当前状态表中,则按照所述触发事件控制所述重置后的目标状态机实例执行相应的状态迁移。
在上述实施例的基础上,可选的,存储单元还用于将所述目标状态机实例在运行过程中触发的动作消息存储到消息中间件中,以通过消息中间件将所述动作消息发送给业务系统,其中,所述动作消息用于指示所述业务系统执行对应的动作。
在上述实施例的基础上,可选的,所述状态图信息中包含状态迁移表信息和状态表信息,创建模块具体用于创建状态机实例对象;根据所述状态迁移表信息和所述状态表信息对所述状态机实例对象进行初始化,得到所述目标实例标识对应的目标状态机实例。
在上述实施例的基础上,可选的,该装置还可以包括:删除模块;
具体的,删除模块用于若检测到所述状态图信息发生变化,则从所述状态机实例池中删除所述目标状态机实例。
在一个实施例中,还提供了一种事件消费系统,参见图1所示,该系统可以包括事件监测装置和多个服务器。其中,事件监测装置用于监测业务系统产生的触发事件,并将产生的触发事件分别发送给多个服务器,多个服务器竞争该触发事件的消费权限,在竞争到该触发事件的消费权限后,参照上述实施例所述的过程控制状态机的运行,本实施例在此不再赘述。
在一个实施例中,提供了一种服务器,其结构示意图可以如图8所示。该服务器包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该服务器的处理器用于提供计算和控制能力。该服务器的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该服务器的数据库用于存储状态机的运行过程中的数据。该服务器的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种状态机的运行方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种服务器,该服务器包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识;
根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,其中,所述状态机实例池中存储的每个状态机实例具有不同的实例标识;
若查找到,则从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行;
根据运行结果更新所述标准上下文并同步至所述共享内存。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若未查找到,则获取所述目标状态机标识对应的状态图信息;根据所述状态图信息,创建所述目标实例标识对应的目标状态机实例,并根据所述触发事件控制所述目标状态机实例的运行。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将所创建的目标状态机实例存储到所述目标状态机标识对应的状态机实例池中。
在一个实施例中,所述标准上下文包括所述目标状态机实例的当前标准执行状态,处理器执行计算机程序时还实现以下步骤:若判断出所述目标状态机实例的当前执行状态与所述当前标准执行状态不一致,则根据所述标准上下文对所述目标状态机实例进行重置,以更新所述目标状态机实例的当前状态表,得到重置后的目标状态机实例;根据所述触发事件和所述目标状态机实例的状态迁移表,提取对应的迁移源状态;若所述迁移源状态存在于重置后的目标状态机实例的当前状态表中,则按照所述触发事件控制所述重置后的目标状态机实例执行相应的状态迁移。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将所述目标状态机实例在运行过程中触发的动作消息存储到消息中间件中,以通过消息中间件将所述动作消息发送给业务系统,其中,所述动作消息用于指示所述业务系统执行对应的动作。
在一个实施例中,所述状态图信息中包含状态迁移表信息和状态表信息,处理器执行计算机程序时还实现以下步骤:创建状态机实例对象;根据所述状态迁移表信息和所述状态表信息对所述状态机实例对象进行初始化,得到所述目标实例标识对应的目标状态机实例。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若检测到所述状态图信息发生变化,则从所述状态机实例池中删除所述目标状态机实例。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识;
根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,其中,所述状态机实例池中存储的每个状态机实例具有不同的实例标识;
若查找到,则从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行;
根据运行结果更新所述标准上下文并同步至所述共享内存。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若未查找到,则获取所述目标状态机标识对应的状态图信息;根据所述状态图信息,创建所述目标实例标识对应的目标状态机实例,并根据所述触发事件控制所述目标状态机实例的运行。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将所创建的目标状态机实例存储到所述目标状态机标识对应的状态机实例池中。
在一个实施例中,所述标准上下文包括所述目标状态机实例的当前标准执行状态,计算机程序被处理器执行时还实现以下步骤:若判断出所述目标状态机实例的当前执行状态与所述当前标准执行状态不一致,则根据所述标准上下文对所述目标状态机实例进行重置,以更新所述目标状态机实例的当前状态表,得到重置后的目标状态机实例;根据所述触发事件和所述目标状态机实例的状态迁移表,提取对应的迁移源状态;若所述迁移源状态存在于重置后的目标状态机实例的当前状态表中,则按照所述触发事件控制所述重置后的目标状态机实例执行相应的状态迁移。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将所述目标状态机实例在运行过程中触发的动作消息存储到消息中间件中,以通过消息中间件将所述动作消息发送给业务系统,其中,所述动作消息用于指示所述业务系统执行对应的动作。
在一个实施例中,所述状态图信息中包含状态迁移表信息和状态表信息,计算机程序被处理器执行时还实现以下步骤:创建状态机实例对象;根据所述状态迁移表信息和所述状态表信息对所述状态机实例对象进行初始化,得到所述目标实例标识对应的目标状态机实例。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若检测到所述状态图信息发生变化,则从所述状态机实例池中删除所述目标状态机实例。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (11)

1.一种状态机的运行方法,其特征在于,应用于事件消费系统中的服务器,所述事件消费系统中包含多个服务器,所述方法包括:
当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识;
根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,其中,所述状态机实例池中存储的每个状态机实例具有不同的实例标识;
若查找到,则从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行;
根据运行结果更新所述标准上下文并同步至所述共享内存;
所述目标状态机实例的标准上下文用于表征目标状态机实例的当前标准执行状态。
2.根据权利要求1所述的方法,其特征在于,还包括:
若未查找到,则获取所述目标状态机标识对应的状态图信息;
根据所述状态图信息,创建所述目标实例标识对应的目标状态机实例,并根据所述触发事件控制所述目标状态机实例的运行。
3.根据权利要求2所述的方法,其特征在于,还包括:
将所创建的目标状态机实例存储到所述目标状态机标识对应的状态机实例池中。
4.根据权利要求1所述的方法,其特征在于,所述标准上下文包括所述目标状态机实例的当前标准执行状态,所述根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行,包括:
若判断出所述目标状态机实例的当前执行状态与所述当前标准执行状态不一致,则根据所述标准上下文对所述目标状态机实例进行重置,以更新所述目标状态机实例的当前状态表,得到重置后的目标状态机实例;
根据所述触发事件和所述目标状态机实例的状态迁移表,提取对应的迁移源状态;
若所述迁移源状态存在于重置后的目标状态机实例的当前状态表中,则按照所述触发事件控制所述重置后的目标状态机实例执行相应的状态迁移。
5.根据权利要求1至4中任一项所述的方法,其特征在于,还包括:
将所述目标状态机实例在运行过程中触发的动作消息存储到消息中间件中,以通过消息中间件将所述动作消息发送给业务系统,其中,所述动作消息用于指示所述业务系统执行对应的动作。
6.根据权利要求2中所述的方法,其特征在于,所述状态图信息中包含状态迁移表信息和状态表信息,所述根据所述状态图信息,创建所述目标实例标识对应的目标状态机实例,包括:
创建状态机实例对象;
根据所述状态迁移表信息和所述状态表信息对所述状态机实例对象进行初始化,得到所述目标实例标识对应的目标状态机实例。
7.根据权利要求2所述的方法,其特征在于,还包括:
若检测到所述状态图信息发生变化,则从所述状态机实例池中删除所述目标状态机实例。
8.一种状态机的运行装置,其特征在于,集成于事件消费系统中的服务器,所述事件消费系统中包含多个服务器,所述装置包括:
提取模块,用于当竞争到触发事件的消费权限时,从所述触发事件中提取目标状态机标识和目标实例标识;
查找模块,用于根据所述目标实例标识,从与所述目标状态机标识对应的状态机实例池中查找对应的目标状态机实例,其中,所述状态机实例池中存储的每个状态机实例具有不同的实例标识;
处理模块,用于在查找到对应的目标状态机实例时,从共享内存中获取所述目标状态机实例的标准上下文,并根据所述标准上下文以及所述触发事件,控制所述目标状态机实例的运行;
更新同步模块,用于根据运行结果更新所述标准上下文并同步至所述共享内存;
所述目标状态机实例的标准上下文用于表征目标状态机实例的当前标准执行状态。
9.一种服务器,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种事件消费系统,其特征在于,包括:事件监测装置和多个如权利要求9所述的服务器;
所述事件监测装置,用于监测业务系统产生的触发事件,并将所述触发事件分别发送给所述多个服务器。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述方法的步骤。
CN202010174435.3A 2020-03-13 2020-03-13 状态机的运行方法、装置、服务器、系统和存储介质 Active CN111414242B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010174435.3A CN111414242B (zh) 2020-03-13 2020-03-13 状态机的运行方法、装置、服务器、系统和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010174435.3A CN111414242B (zh) 2020-03-13 2020-03-13 状态机的运行方法、装置、服务器、系统和存储介质

Publications (2)

Publication Number Publication Date
CN111414242A CN111414242A (zh) 2020-07-14
CN111414242B true CN111414242B (zh) 2023-07-11

Family

ID=71491047

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010174435.3A Active CN111414242B (zh) 2020-03-13 2020-03-13 状态机的运行方法、装置、服务器、系统和存储介质

Country Status (1)

Country Link
CN (1) CN111414242B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112883184A (zh) * 2021-03-22 2021-06-01 深圳前海微众银行股份有限公司 对话管理方法、设备、计算机可读存储介质及程序产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102486743A (zh) * 2010-12-01 2012-06-06 阿里巴巴集团控股有限公司 一种状态机协作控制方法、装置及状态机系统
CN103999413A (zh) * 2011-12-19 2014-08-20 阿尔卡特朗讯公司 在云端传送消息的方法和装置
CN108255525A (zh) * 2016-12-28 2018-07-06 比亚迪股份有限公司 基于轨道交通的控制方法和装置
CN109842651A (zh) * 2017-11-27 2019-06-04 中国移动通信集团上海有限公司 一种业务不间断的负载均衡方法和系统
CN110580155A (zh) * 2019-07-31 2019-12-17 苏宁云计算有限公司 状态机引擎的实现方法、装置、计算机设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8565250B2 (en) * 2010-05-18 2013-10-22 Lsi Corporation Multithreaded, superscalar scheduling in a traffic manager of a network processor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102486743A (zh) * 2010-12-01 2012-06-06 阿里巴巴集团控股有限公司 一种状态机协作控制方法、装置及状态机系统
CN103999413A (zh) * 2011-12-19 2014-08-20 阿尔卡特朗讯公司 在云端传送消息的方法和装置
CN108255525A (zh) * 2016-12-28 2018-07-06 比亚迪股份有限公司 基于轨道交通的控制方法和装置
CN109842651A (zh) * 2017-11-27 2019-06-04 中国移动通信集团上海有限公司 一种业务不间断的负载均衡方法和系统
CN110580155A (zh) * 2019-07-31 2019-12-17 苏宁云计算有限公司 状态机引擎的实现方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN111414242A (zh) 2020-07-14

Similar Documents

Publication Publication Date Title
CN102291416B (zh) 一种客户端与服务器端双向同步的方法及系统
CN109492019B (zh) 业务请求响应方法、装置、计算机设备和存储介质
CN110704463B (zh) 常用数据的本地缓存方法、装置、计算机设备及存储介质
CN112865992B (zh) 分布式主从系统中主节点的切换方法、装置和计算机设备
CN108829720B (zh) 数据处理方法及装置
CN111309785A (zh) 基于Spring框架的数据库访问方法、装置、计算机设备和介质
CN110046062B (zh) 分布式数据处理方法及系统
CN107153643B (zh) 数据表连接方法及装置
CN112613993B (zh) 交易数据处理方法、装置、计算机设备和存储介质
CN112100152B (zh) 业务数据处理方法、系统、服务器和可读存储介质
CN110737719A (zh) 数据同步方法、装置、设备及计算机可读存储介质
CN108628705B (zh) 数据库恢复方法、装置、计算机设备和存储介质
CN111414242B (zh) 状态机的运行方法、装置、服务器、系统和存储介质
CN110795171A (zh) 业务数据处理方法、装置、计算机设备及存储介质
CN112948504A (zh) 数据采集方法、装置、计算机设备和存储介质
EP2416526B1 (en) Task switching method, server node and cluster system
CN110659272A (zh) 数据清洗方法和系统
CN108389124B (zh) 数据处理方法、装置、计算机设备和存储介质
CN110457614B (zh) 降低数据并发量的数据增量更新方法、装置和计算机设备
CN112256764A (zh) 统计数据的快速查询方法、装置、计算机设备及存储介质
CN112000850A (zh) 进行数据处理的方法、装置、系统及设备
CN112448883A (zh) 消息推送方法、装置、计算机设备和存储介质
CN108173892B (zh) 云端镜像操作方法和装置
CN112783866B (zh) 数据读取方法、装置、计算机设备和存储介质
CN110765125A (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
TR01 Transfer of patent right

Effective date of registration: 20231122

Address after: Room 137, 1st Floor, Building 8, Ecological Construction Apartment, West of Zhongcheng Avenue and South of Zhongbin Avenue, Zhongxin Ecological City, Binhai New Area, Tianjin, 300467

Patentee after: TIANJIN ZHONGXIN ZHIGUAN INFORMATION TECHNOLOGY CO.,LTD.

Address before: Room 137, 1 / F, building 8, ecological construction apartment, south of Zhongbin Avenue, Zhongxin ecological city, Binhai New Area, Tianjin 300467

Patentee before: Tianjin Meiteng Technology Co.,Ltd.

Patentee before: TIANJIN ZHONGXIN ZHIGUAN INFORMATION TECHNOLOGY CO.,LTD.

TR01 Transfer of patent right