CN117785335A - 服务实例管理方法、装置、计算机设备及介质 - Google Patents

服务实例管理方法、装置、计算机设备及介质 Download PDF

Info

Publication number
CN117785335A
CN117785335A CN202311611113.0A CN202311611113A CN117785335A CN 117785335 A CN117785335 A CN 117785335A CN 202311611113 A CN202311611113 A CN 202311611113A CN 117785335 A CN117785335 A CN 117785335A
Authority
CN
China
Prior art keywords
service instance
running state
expression
task
identifier
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
Application number
CN202311611113.0A
Other languages
English (en)
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.)
Jinan Inspur Data Technology Co Ltd
Original Assignee
Jinan Inspur Data 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 Jinan Inspur Data Technology Co Ltd filed Critical Jinan Inspur Data Technology Co Ltd
Priority to CN202311611113.0A priority Critical patent/CN117785335A/zh
Publication of CN117785335A publication Critical patent/CN117785335A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明涉及计算机技术领域,公开了服务实例管理方法、装置、计算机设备及介质,该方法包括:将每个服务实例依赖关系分别转换成表达式并写入配置文件;对配置文件中的每个表达式分别进行解析,生成与每个服务实例依赖关系对应的待执行任务及任务触发条件,待执行任务用于对目标服务实例执行调度操作,任务触发条件用于表征与目标服务实例相关的关联服务实例达到目标运行状态;对关联服务实例进行运行状态监控,得到实际运行状态;基于实际运行状态和目标运行状态判断是否符合任务触发条件,并在符合任务触发条件时启动待执行任务。本发明方案显著提升存在依赖关系的服务实例管理效率,降低了服务实例复杂依赖关系管理难度,具有较佳的灵活性。

Description

服务实例管理方法、装置、计算机设备及介质
技术领域
本发明涉及计算机技术领域,具体涉及服务实例管理方法、装置、计算机设备及介质。
背景技术
服务实例是运行中的服务副本,服务实例可以被其他服务或客户端调用。随着业务需求增长与变化,服务实例不仅越来越多,而且特殊情况下还可能对已开发的服务实例进行修改和完善,因而不可避免的需要对服务实例进行维护管理。
目前,相关技术中服务实例管理方式主要有两种:一种依靠编码去实现相应的服务实例管理,此种方式需要大量编写代码,而且灵活性较差;另一种是使用systemd(是linux下的一种init软件)进行服务实例管理,此种方式不仅无法清晰的获知服务实例之间的依赖关系,并且对于复杂的依赖关系,配置过程会变的非常复杂;因而,亟需对服务实例管理方式进行改进。
发明内容
有鉴于此,本发明提供了一种服务实例管理方法、装置、计算机设备及介质,以解决复杂关系服务实例管理效率低且灵活性差的问题。
第一方面,本发明提供了一种服务实例管理方法,该方法包括:
将每个服务实例依赖关系分别转换成表达式并写入配置文件;
对配置文件中的每个所述表达式分别进行解析,生成与每个服务实例依赖关系对应的待执行任务及任务触发条件,其中,所述待执行任务用于对目标服务实例执行调度操作,所述任务触发条件用于表征与所述目标服务实例相关的关联服务实例达到目标运行状态;
对所述关联服务实例进行运行状态监控,得到实际运行状态;
基于所述实际运行状态和所述目标运行状态判断是否符合所述任务触发条件,并在符合所述任务触发条件时启动所述待执行任务。
在一种可选的实施方式中,所述将每个服务实例依赖关系分别转换成表达式,包括:
分别对每个服务实例依赖关系执行以下操作:
从服务实例依赖关系的前导事件中获取服务实例的第一标识符、服务实例对应的第一运行状态标识、以及各前导事件之间的第一关联关系;
从服务实例依赖关系的后继事件中获取服务实例的第二标识符、服务实例对应的第二运行状态标识、以及各后继事件之间的第二关联关系;
利用所述第一关联关系组合所述第一标识符、所述第一运行状态标识和预设字段生成第一表达项;
利用所述第二关联关系组合所述第二标识符、所述第二运行状态标识和预设字段生成第二表达项;
获取所述前导事件与所述后继事件之间的第三关联关系;
利用所述第三关联关系组合所述第一表达项、所述第二表达项生成表达式;
将每个服务实例依赖关系对应的表达式分别写入配置文件。
在一种可选的实施方式中,所述对配置文件中的每个所述表达式分别进行解析,生成与每个服务实例依赖关系对应的待执行任务及任务触发条件,包括:
对每个所述表达式执行以下操作:
通过所述第三关联关系从所述表达式中查找所述第二表达项;
通过所述预设字段从所述第二表达项中查找的第二标识符和第二运行状态标识;
分别将每个第二标识符对应的服务实例作为目标服务实例,并创建使所述目标服务实例达到所述第二运行状态的命令;
利用所述第二关联关系组合所创建的命令以生成所述待执行任务;
通过所述第三关联关系从所述表达式中查找所述第一表达项;
通过所述预设字段从所述第一表达项中查找的第一标识符和第一运行状态标识,并将第一标识符对应的服务实例作为所述目标服务实例的关联服务实例;
基于所述第二关联关系和所述关联服务实例确定所有的服务实例组合;
针对每个服务实例组合,将服务实例组合中的每第一标识符对应的第一运行状态标识作为目标运行状态,并将服务实例组合所有每第一标识符对应的服务实例均达到对应的目标运行状态作为与服务实例组合对应的任务触发条件。
在一种可选的实施方式中,所述对所述关联服务实例进行运行状态监控,得到实际运行状态,包括:
根据所述关联服务实例创建服务实例状态监控列表;
以预设时间为间隔定时获取每个关联服务实例的当前运行状态并写入所述状态监控列表。
在一种可选的实施方式中,所述基于所述实际运行状态和所述目标运行状态判断是否符合所述任务触发条件,包括:
在所述监控列表写入数据时,判断本次写入的运行状态与前一次写入运行状态是否相同;
响应于本次写入的运行状态与前一次写入运行状态不同,则遍历所有服务实例组以判断是否存在任一服务实例组合中各个关联服务实例的当前运行状态均与对应的目标运行状态相匹配;
响应于存在,则确认符合所述任务触发条件。
在一种可选的实施方式中,所述方法还包括:
响应于所述待执行任务执行完成,则清除所述监控列表中的运行状态数据。
在一种可选的实施方式中,所述方法还包括:
响应于变更或删除任一服务实例依赖关系,则将配置文件中与所述任一服务实例依赖关系对应的表达式删除,并返回所述将每个服务实例依赖关系分别转换成表达式并写入配置文件的步骤;
响应于新增服务实例依赖关系,则返回所述将每个服务实例依赖关系分别转换成表达式并写入配置文件的步骤。
第二方面,本发明提供了一种服务实例管理装置,该装置包括:
转换模块,用于将每个服务实例依赖关系分别转换成表达式并写入配置文件;
解析模块,用于对配置文件中的每个所述表达式分别进行解析,生成与每个服务实例依赖关系对应的待执行任务及任务触发条件,其中,所述待执行任务用于对目标服务实例执行调度操作,所述任务触发条件用于表征与所述目标服务实例相关的关联服务实例达到目标运行状态;
监控模块,用于对所述关联服务实例进行运行状态监控,得到实际运行状态;
判断模块,用于基于所述实际运行状态和所述目标运行状态判断是否符合所述任务触发条件,并在符合所述任务触发条件时启动所述待执行任务。
第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的服务实例管理方法。
第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的服务实例管理方法。
本发明的一种服务实例管理方法,通过将服务实例依赖关系转换成表达式放入配置文件中,然后通过解析将配置文件中的表达生成待执行任务和任务触发条件,进而再对关联服务实例进行状态监控,最后结合监控到的实际运行状态与任务触发条件中的目标运行状态自动判断是否符合任务触发条件,从而实现了在符合任务触发条件时自动启动待执行任务,显著提升存在依赖关系的服务实例管理效率,降低了服务实例复杂依赖关系管理难度,具有较佳的灵活性。
此外,本发明还提供的一种服务实例管理、一种计算机设备和一种计算机可读存储介质,同样能实现上述技术效果,这里不再赘述。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例提供的一种服务实例管理方法的流程示意图;
图2根据本发明实施例提供的判断任务触发条件是否符合的逻辑框图;
图3是根据本发明实施例提供的另一种服务实例管理方法的流程示意图;
图4是根据本发明实施例的一种服务实例管理装置结构框图;
图5是本发明实施例的计算机设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,对于依靠编码去实现服务实例管理的方案中,各种服务实例互相依赖,如果涉及到跨平台的场景,服务实例创建的调配工作就会变的更加复杂。果单纯的依靠硬编码去实现相应的服务实例管理,无疑会带来很大的工作量。且因为代码耦合的原因,一旦服务实例间依赖关系发生变化,或需要引入新的服务实例,那将会给系统带来极大的开销。
此外,对于使用systemd进行服务实例管理的方案中,虽然systemd可以很方便的去进行服务实例的管理,但systemd更适合的应用场景为操作系统及运行器件的服务实例管理。如果设计复杂的依赖关系,那针对服务实例的配置会变的非常复杂,而且涉及新服务实例引入导致的依赖关系变动等场景,需要改动范围也会比较大。同时在使用systemd做服务实例管理时,管理人员无法清晰的获知服务实例之间的依赖关系,使得完善和修改服务实例变得极为困难。
为解决上述问题,本发明实施例,提供了一种服务实例管理实施例,需要说明的是,在附图的流程图示出的步骤可以在包括诸如一组计算机可执行指令的计算机系统(计算机设备)中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本公开实施例中提供了一种服务实例管理方法,可用于上述的终端机设备,如手机、平板电脑等,图1是根据本发明实施例的服务实例管理方法的流程图,如图1所示,该流程包括如下步骤:
步骤S101,将每个服务实例依赖关系分别转换成表达式并写入配置文件。
本公开实施例中,服务实例是运行中的服务副本,它可以被其他服务或客户端调用。每个服务实例都有一个唯一的标识符,并且可以在分布式系统中的多个节点上运行。服务实例可以动态地加入或退出服务注册表,以便在系统发生变化时及时更新服务发现和负载均衡。
服务实例依赖关系是指两个以上服务实例中一个服务实例执行某个动作影响到其他服务实例的执行某个动作时所形成的关系。在服务实例依赖关系中影响和被影响的服务实例均可以是一个也可以是多个。示例性的,服务实例依赖关系可以表示为服务实例A和服务实例B启动影响服务实例C的启动,服务实例依赖关系还可以表示为服务实例A启动影响服务实例C和服务实例D的启动。
表达式是指采用字符、运算符合通过特定顺序形成的组合。在具体实施过服务实例依赖关系可以采用如下方式转换成表达式:预先为每种依赖关系定义表达式模板,接着后根据表达式模板的各个项目将服务实例依赖关系涉及的服务实例、依赖方式按照特定规则转换成字符、数字或者特定字符。示例性的,不妨假设服务实例依赖关系为服务实例A与服务实例B完成某动作后进行服务实例C的动作,该服务实例表达式可表示为服务实例C:staring=服务实例A:started and服务实例B:started。
步骤S102,对配置文件中的每个表达式分别进行解析,生成与每个服务实例依赖关系对应的待执行任务及任务触发条件,其中,待执行任务用于对目标服务实例执行调度操作,任务触发条件用于表征与目标服务实例相关的关联服务实例达到目标运行状态。
在本公开实施例中,对配置文件中的每个表达式分别进行解析可通过表达式解释器实现,表达式解释器能够将数学或逻辑表达式转换成计算机能够理解和执行的程序。
待执行任务是指当前未执行未来有可能被执行的计算机程序指令集合,该计算机程序指令集合能够对目标服务实例执行各种调度操作。待执行任务与服务实例关系是一一对应的。目标服务实例是指服务实例依赖关系中依赖其他服务实例运行的服务实例(即服务实例依赖关系中的被影响服务实例)。调度操作包括但不限于同平台或跨平台启动服实例、停止服务实例、结束服务实例,恢复服务实例等。
任务触发条件是指能够指示待执行任务允许被执行的判断标准,本公开实例中任务触发条件使用影响其他服务实例运行服务实例构建判断标准。任务触发条件可以是一个也可以是多,任务触发条件数量依据依赖关系确定。一个触发条件即可以使单个服务实例达到目标运行状态,一个触发条件还可以是使多个服务实例均达到目标运行状态。目标运行状态是指从所有可能的运行状态中依据依赖关系所选取的一个运行状态,目标运行状态与一个触发条件中涉及的关联服务实例一一对应,示例性的,不妨假设某个触发条件涉及到三个服务实例,那么此时存在三个目标运行状态。
步骤S103,对关联服务实例进行运行状态监控,得到实际运行状态;
在本公开实施例中,运行状态监控可以通过对服务实例的某个进程、日志记录或者任何现有运行状态监视工具获取。运行状态获取方式包括但不限于主动查询或被动接收等等。
步骤S104,基于实际运行状态和目标运行状态判断是否符合任务触发条件,并在符合任务触发条件时启动待执行任务。
根据本公开实施例,通过将服务实例依赖关系转换成表达式放入配置文件中,然后通过解析将配置文件中的表达生成待执行任务和任务触发条件,进而再对关联服务实例进行状态监控,最后结合监控到的实际运行状态与任务触发条件中的目标运行状态自动判断是否符合任务触发条件,从而实现了在符合任务触发条件时自动启动待执行任务,显著提升存在依赖关系的服务实例管理效率,降低了服务实例复杂依赖关系管理难度,具有较佳的灵活性。
在一些可能的实现方式中,步骤S101,将每个服务实例依赖关系分别转换成表达式,可以包括:
分别对每个服务实例依赖关系执行以下操作:
从服务实例依赖关系的前导事件中获取服务实例的第一标识符、服务实例对应的第一运行状态标识、以及各前导事件之间的第一关联关系;
其中,服务实例依赖关系的前导事件是指依赖关系中服务实例运行影响其他服务实例运行的事件;不妨假设服务实例依赖关系为服务实例A与服务实例B完成某动作后进行服务实例C的动作,此时服务实例A完成某动作即为前导事件,同样服务实例B完成某动作也是前导事件;
从服务实例依赖关系的后继事件中获取服务实例的第二标识符、服务实例对应的第二运行状态标识、以及各后继事件之间的第二关联关系;
其中,服务实例依赖关系的后继事件是指依赖关系中服务实例被的影响的服务实例运行事件;继续举例来说,对于服务实例依赖关系:服务实例A与服务实例B完成某动作后进行服务实例C的动作,此时服务实例C的动作即为后继事件;
利用第一关联关系组合第一标识符、第一运行状态标识和预设字段生成第一表达项;
其中,一个服务实例的第一标识符、第一运行状态标识和预设字段可以指定顺序进行组合,例如可以规定将第一标识符放在预设字段的前面,将第一运行状态放在预设字符的后面,如服务实例A:started;当然在具体实施过程中还可以规定将第一标识符放在预设字段的后面,将第一运行状态放在预设字符的前面,如started:服务实例A;第一关联关系是用于组合多个服务实例的第一标识符、第一运行状态标识和预设字段,示例性的,对服务实例A:started和服务实例B:started,在组合时第一关联关系如果为and,该第一表达项可以表示服务实例A:started and服务实例B:started,或者第一表达项表示为服务实例B:started and服务实例A:started;
利用第二关联关系组合第二标识符、第二运行状态标识和预设字段生成第二表达项;
其中,第二表达项的组合可以参照第一表达项的组合实现方式,在此不做赘述,在具体实施过程中,为了提高表达转换效率、减少计算量可以规定所有的第一表达项和第二表达项中的各个服务实例在进行转换时均采用服务实例在前状态标识在后的方式组合。
获取前导事件与后继事件之间的第三关联关系;
示例性的,假如前导事件执行完成后再执行后继事件,此时先后即为第三关联关系即为If......then,第三关联关系可以采用″=″或者其他自定义的字符表示。
利用第三关联关系组合第一表达项、第二表达项生成表达式;
将每个服务实例依赖关系对应的表达式分别写入配置文件。
根据本公开实施例,为服务实例依赖关系中的前导事件和后继事件分别定义了特定转换方式,能够自动识别出服务依赖关系中的各个服务实例和各个实例对应的服务运行状态,进而再组合所识别的信息形成表达项及表达式,不仅能够兼容各类依赖关系,而且避免了重复编码减少了管理人员的工作量,极大的降低了服务实例管理成本,进一步提升服务实例管理效率。
在一些可能的实现方式中,步骤S102,对配置文件中的每个表达式分别进行解析,生成与每个服务实例依赖关系对应的待执行任务及任务触发条件,可以包括:
对每个表达式执行以下操作:
通过第三关联关系从表达式中查找第二表达项;
通过预设字段从第二表达项中查找的第二标识符和第二运行状态标识;
分别将每个第二标识符对应的服务实例作为目标服务实例,并创建使目标服务实例达到第二运行状态的命令;
利用第二关联关系组合所创建的命令以生成待执行任务;
通过第三关联关系从表达式中查找第一表达项;
通过预设字段从第一表达项中查找的第一标识符和第一运行状态标识,并将第一标识符对应的服务实例作为目标服务实例的关联服务实例;
基于第二关联关系和关联服务实例确定所有的服务实例组合;
针对每个服务实例组合,将服务实例组合中的每第一标识符对应的第一运行状态标识作为目标运行状态,并将服务实例组合所有每第一标识符对应的服务实例均达到对应的目标运行状态作为与服务实例组合对应的任务触发条件。
根据本公开实施例,为所形成的表达式义了特定的解析规则,通过使用该特定的解析规则从表达式中自动提取有效信息从而生成待执行任务,以及自动提取有效信息从而生成所有可能的任务触发条件,所得到的触发条件能够覆盖服务实例间相互影响的所有情况,避免了重复编码减少了管理人员的工作量,极大的降低了服务实例维护管理成本,进一步提升服务实例管理效率。
在一些可能的实现方式中,步骤S103,对关联服务实例进行运行状态监控,得到实际运行状态,包括:
根据关联服务实例创建服务实例状态监控列表;
以预设时间为间隔定时获取每个关联服务实例的当前运行状态并写入状态监控列表。
在一些可能的实现方式中,如图2所示,步骤S104,基于实际运行状态和目标运行状态判断是否符合任务触发条件,可以包括:
步骤S1041,在监控列表写入数据时,判断本次写入的运行状态与前一次写入运行状态进行是否相同;
步骤S1042,响应于本次写入的运行状态与前一次写入运行状态不同,则遍历所有服务实例组以判断是否存在任一服务实例组合中各个关联服务实例的当前运行状态均与对应的目标运行状态相匹配;
步骤S1043,响应于存在,则确认符合任务触发条件;
步骤S1044,响应于本次写入的运行状态与前一次写入运行状态不同、或者不存在任一服务实例组合中各个关联服务实例的当前运行状态均与对应的目标运行状态相匹配,则确认不符合任务触发条件。
需要说明的是,当确认不符合触发条件后无需执行任何操作,此时只需等等监控列表中所监控的服务实例再次发生变化即可。
根据本公开实施例,使用状态监控列表管理各个需要被监控的服务实例的实际运行状态,能够及时、快速定位到服务实例的运行状态变更,并在发现运行状态变更时自动比对是否符合任务触发条件,显著提升服务实例管理的时效性和准确性。
在一些可能的实现方式中,所述方法还包括:
响应于待执行任务执行完成,则清除监控列表中的运行状态数据。
根据本公开实施例,在任务完成时主动清除监控列表中的数据,避免了存储资源的浪费,同时还能够使相同任务多次执行时互不影响,进一步提升服务实例管理的准确性。
在一些可能的实现方式中,所述方法还包括:
响应于变更或删除任一服务实例依赖关系,则将配置文件中与任一服务实例依赖关系对应的表达式删除,并返回将每个服务实例依赖关系分别转换成表达式并写入配置文件的步骤;
响应于新增服务实例依赖关系,则返回将每个服务实例依赖关系分别转换成表达式并写入配置文件的步骤。
根据本公开实施例,针对服务实例的变更、删除、及新增情况分别提供了相应的配置文件维护策略,实现自动更新配置文件,显著减少了管理人员的工作量,进一步降低维护管理成本。
在一些可能的实现方式中,为了便于理解本发明的方案,针对跨平台部署多个服务实例的场景,不妨假设多个服务实例运行在至少两个以上的平台上,下面以应用表达式解析器和代码执行器为例,请结合图3所示本公开实施例提供了又一种服务实例管理方法,具体包括以下步骤:
步骤S201,定义实例表达式模板模,实例表达式模板模主要用于对服务实例抽象化处理,将服务实例依赖及行为进行抽象,定义为特定的运算符,如″服务实例A与服务实例B完成某动作后,进行服务实例C的动作″。抽象为:″服务实例A and服务实例B then服务实例C″。
示例性的,抽象服务实例间关系运算符可以使用如下运算符:
1.and:表示服务实例间为且的关系,需要and运算符两端状态都满足要求后,再执行相应动作。
2.or:表示服务实例间为或的关系,需要or运算符两端只要有一方满足要求,即可执行下一步动作。
3.not:表示服务状态取非,表示服务实例状态非处于某种状态,如:special_operatecode=full_backup.drain。
4.then:表示服务实例在满足某些条件后,可以做的动作。
示例性的,抽象服务实例的状态标记可以使用如标记:
1.started:表示服务实例处于启动完毕状态。
2.running:表示服务实例处于运行状态。
3.finished:表示服务实例处于运行结束状态。
4.starting:表示服务实例处于启动过程状态。
5.failed:表示服务实例执行失败状态。
6.sropping:表示服务实例处于停止状态。
步骤S202,基于以上的服务实例状态和关系抽象定义,将服务实例依赖关系通过抽象为表达式写入配置文件中,如:服务实例C:staring=服务实例A:started and服务实例B:started。
需要说明的是,本公开实施例中所列举的服务实例间的关系运算符和状态标记仅用于举例说明,不应理解为对本公开实施例的限制。
步骤S203,使用表达式解析器完成对实例表达式配置文件进行解析,将表达式解析为相应的操作依赖。
示例性的,表达式解析器可以参照如下规则进行解析:
1.以符号″:″分隔服务实例与服务实例状态,″:″前半部分为服务实例名称,为待执行或待校验状态的服务实例名称,″:″后半部分为服务实例状态,为待执行或待校验状态的服务实例状态。
2.以符号″=″分隔带执行动作服务实例与其所依赖的服务实例状态。″=″前半部分为待执行服务实例名称及要将服务实例置位的状态。″=″后半部分为待执行服务实例及该服务实例要置位的状态所依赖的服务实例及其服务实例状态。
依据以上解析规则及上述表达式规则定义,将服务实例要置位的状态及其依赖要求进行解析,解析为具体是要执行或判断的代码逻辑,生成待执行任务。举例说明如:表达式″服务实例C:staring=服务实例A:started and服:务实例B:started″对应的待执行任务即为:If服务实例A is started and服务实例B is started Then starting服务实例C。
步骤S204,使用代码执行器将以表达式解释器解析出的待执行任务进行代码调度管理,具体包括执行逻辑进行拆分和服务实例监控两部分。
逻辑进行拆分包括依据表达式解释器生成的待执行任务,会具体拆分出需要待监控的服务实例列表及其所需要监控的状态,如:服务实例A:starting,started,failed、服务实例B:started,failed。
示例性的,服务实例监控依据表达式解释器生成的待执行任务,会具体拆分出需要做状态转变的服务实例所要置位的状态,如:服务实例C:starting、服务实例D:stopping;代码执行器会周期性监测待监测服务实例列表中的服务实例状态,当服务实例状态发生变化时,则查询由表达式解释器所生产的任务,若能满足任务条件,则自动进行服务实例状态置位,并同步更新待监控服务实例列表和待状态转变服务实例列表。
本公开实施例的一种服务实例管理方法,可以将复杂的服务实例间的依赖关系转变为易读的表达式形式;通过表达式形式来描述不同服务实例间的依赖和状态转变关系;通过统一的服务实例状态抽象定义,规定了不同服务实例所具备的一些状态描述和动作定义,能够兼容后续新增的服务实例,或者变更已有服务实例状态、依赖关系等等;适合对具有复杂依赖关系的服务实例进行管理,但服务实例依赖关系发生变化时,只需要重新更新配置文件即可,无需重复编码。
在本公开实施例中还提供了一种服务实例管理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语″模块″可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本公开实施例提供一种服务实例管理装置,如图4示,所述装置包括:
转换模块301,用于将每个服务实例依赖关系分别转换成表达式并写入配置文件;
解析模块302,用于对配置文件中的每个表达式分别进行解析,生成与每个服务实例依赖关系对应的待执行任务及任务触发条件,其中,待执行任务用于对目标服务实例执行调度操作,任务触发条件用于表征与目标服务实例相关的关联服务实例达到目标运行状态;
监控模块303,用于对关联服务实例进行运行状态监控,得到实际运行状态;
判断模块304,用于基于实际运行状态和目标运行状态判断是否符合任务触发条件,并在符合任务触发条件时启动待执行任务。
在一些可能的实现方式中,转换模块301进一步用于:
分别对每个服务实例依赖关系执行以下操作:
从服务实例依赖关系的前导事件中获取服务实例的第一标识符、服务实例对应的第一运行状态标识、以及各前导事件之间的第一关联关系;
从服务实例依赖关系的后继事件中获取服务实例的第二标识符、服务实例对应的第二运行状态标识、以及各后继事件之间的第二关联关系;
利用第一关联关系组合第一标识符、第一运行状态标识和预设字段生成第一表达项;
利用第二关联关系组合第二标识符、第二运行状态标识和预设字段生成第二表达项;
获取前导事件与后继事件之间的第三关联关系;
利用第三关联关系组合第一表达项、第二表达项生成表达式;
将每个服务实例依赖关系对应的表达式分别写入配置文件。
在一些可能的实现方式中,解析模块302进一步用于:
对每个表达式执行以下操作:
通过第三关联关系从表达式中查找第二表达项;
通过预设字段从第二表达项中查找的第二标识符和第二运行状态标识;
分别将每个第二标识符对应的服务实例作为目标服务实例,并创建使目标服务实例达到第二运行状态的命令;
利用第二关联关系组合所创建的命令以生成待执行任务;
通过第三关联关系从表达式中查找第一表达项;
通过预设字段从第一表达项中查找的第一标识符和第一运行状态标识,并将第一标识符对应的服务实例作为目标服务实例的关联服务实例;
基于第二关联关系和关联服务实例确定所有的服务实例组合;
针对每个服务实例组合,将服务实例组合中的每第一标识符对应的第一运行状态标识作为目标运行状态,并将服务实例组合所有每第一标识符对应的服务实例均达到对应的目标运行状态作为与服务实例组合对应的任务触发条件。
在一些可能的实现方式中,监控模块303进一步用于:
根据关联服务实例创建服务实例状态监控列表;
以预设时间为间隔定时获取每个关联服务实例的当前运行状态并写入状态监控列表。
在一些可能的实现方式中,判断模块304进一步用于:
在监控列表写入数据时,判断本次写入的运行状态与前一次写入运行状态是否相同;
响应于本次写入的运行状态与前一次写入运行状态不同,则遍历所有服务实例组以判断是否存在任一服务实例组合中各个关联服务实例的当前运行状态均与对应的目标运行状态相匹配;
响应于存在,则确认符合任务触发条件。
在一些可能的实现方式中,所述装还包括清除模块:
清除模块,用于响应于待执行任务执行完成,则清除监控列表中的运行状态数据。
所述装置还包括返回模块,所述返回模块用于:
响应于变更或删除任一服务实例依赖关系,则将配置文件中与任一服务实例依赖关系对应的表达式删除,并返回转换模块301;
响应于新增服务实例依赖关系,则返回转换模块301。
本公开实施例中的服务实例管理装置是以功能模块的形式来呈现,这里的模块是指专用集成电路(Application Specific Integ rated Circuit,简称ASIC),执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本发明实施例还提供一种计算机设备,具有上述图5所示的服务实例管理装置。
请参阅图5,图5是本发明可选实施例提供的一种计算机设备的结构示意图,如图5所示,该计算机设备包括:一个或多个处理器401、存储器402,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示G UI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图5中以一个处理器401为例。
处理器401可以是中央处理器,网络处理器或其组合。其中,处理器401还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,存储器402存储有可由至少一个处理器401执行的指令,以使至少一个处理器401执行实现上述实施例示出的方法。
存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据一种小程序落地页的展现的计算机设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器402可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器402还可以包括上述种类的存储器的组合。
该计算机设备还包括输入装置403和输出装置403。处理器401、存储器402、输入装置403和输出装置403可以通过总线或者其他方式连接,图5中以通过总线连接为例。
输入装置403可接收输入的数字或字符信息,以及产生与该计算机设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等。输出装置404可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。上述显示设备包括但不限于液晶显示器,发光二极管,显示器和等离子体显示器。在一些可选的实施方式中,显示设备可以是触摸屏。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (10)

1.一种服务实例管理方法,其特征在于,所述方法包括:
将每个服务实例依赖关系分别转换成表达式并写入配置文件;
对配置文件中的每个所述表达式分别进行解析,生成与每个服务实例依赖关系对应的待执行任务及任务触发条件,其中,所述待执行任务用于对目标服务实例执行调度操作,所述任务触发条件用于表征与所述目标服务实例相关的关联服务实例达到目标运行状态;
对所述关联服务实例进行运行状态监控,得到实际运行状态;
基于所述实际运行状态和所述目标运行状态判断是否符合所述任务触发条件,并在符合所述任务触发条件时启动所述待执行任务。
2.根据权利要求1所述的方法,其特征在于,所述将每个服务实例依赖关系分别转换成表达式,包括:
分别对每个服务实例依赖关系执行以下操作:
从服务实例依赖关系的前导事件中获取服务实例的第一标识符、服务实例对应的第一运行状态标识、以及各前导事件之间的第一关联关系;
从服务实例依赖关系的后继事件中获取服务实例的第二标识符、服务实例对应的第二运行状态标识、以及各后继事件之间的第二关联关系;
利用所述第一关联关系组合所述第一标识符、所述第一运行状态标识和预设字段生成第一表达项;
利用所述第二关联关系组合所述第二标识符、所述第二运行状态标识和预设字段生成第二表达项;
获取所述前导事件与所述后继事件之间的第三关联关系;
利用所述第三关联关系组合所述第一表达项、所述第二表达项生成表达式;
将每个服务实例依赖关系对应的表达式分别写入配置文件。
3.根据权利要求2所述的方法,其特征在于,所述对配置文件中的每个所述表达式分别进行解析,生成与每个服务实例依赖关系对应的待执行任务及任务触发条件,包括:
对每个所述表达式执行以下操作:
通过所述第三关联关系从所述表达式中查找所述第二表达项;
通过所述预设字段从所述第二表达项中查找的第二标识符和第二运行状态标识;
分别将每个第二标识符对应的服务实例作为目标服务实例,并创建使所述目标服务实例达到所述第二运行状态的命令;
利用所述第二关联关系组合所创建的命令以生成所述待执行任务;
通过所述第三关联关系从所述表达式中查找所述第一表达项;
通过所述预设字段从所述第一表达项中查找的第一标识符和第一运行状态标识,并将第一标识符对应的服务实例作为所述目标服务实例的关联服务实例;
基于所述第二关联关系和所述关联服务实例确定所有的服务实例组合;
针对每个服务实例组合,将服务实例组合中的每第一标识符对应的第一运行状态标识作为目标运行状态,并将服务实例组合所有每第一标识符对应的服务实例均达到对应的目标运行状态作为与服务实例组合对应的任务触发条件。
4.根据权利要求1所述的方法,其特征在于,所述对所述关联服务实例进行运行状态监控,得到实际运行状态,包括:
根据所述关联服务实例创建服务实例状态监控列表;
以预设时间为间隔定时获取每个关联服务实例的当前运行状态并写入所述状态监控列表。
5.根据权利要求4所述的方法,其特征在于,所述基于所述实际运行状态和所述目标运行状态判断是否符合所述任务触发条件,包括:
在所述监控列表写入数据时,判断本次写入的运行状态与前一次写入运行状态是否相同;
响应于本次写入的运行状态与前一次写入运行状态不同,则遍历所有服务实例组以判断是否存在任一服务实例组合中各个关联服务实例的当前运行状态均与对应的目标运行状态相匹配;
响应于存在,则确认符合所述任务触发条件。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
响应于所述待执行任务执行完成,则清除所述监控列表中的运行状态数据。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
响应于变更或删除任一服务实例依赖关系,则将配置文件中与所述任一服务实例依赖关系对应的表达式删除,并返回所述将每个服务实例依赖关系分别转换成表达式并写入配置文件的步骤;
响应于新增服务实例依赖关系,则返回所述将每个服务实例依赖关系分别转换成表达式并写入配置文件的步骤。
8.一种服务实例管理装置,其特征在于,所述装置包括:
转换模块,用于将每个服务实例依赖关系分别转换成表达式并写入配置文件;
解析模块,用于对配置文件中的每个所述表达式分别进行解析,生成与每个服务实例依赖关系对应的待执行任务及任务触发条件,其中,所述待执行任务用于对目标服务实例执行调度操作,所述任务触发条件用于表征与所述目标服务实例相关的关联服务实例达到目标运行状态;
监控模块,用于对所述关联服务实例进行运行状态监控,得到实际运行状态;
判断模块,用于基于所述实际运行状态和所述目标运行状态判断是否符合所述任务触发条件,并在符合所述任务触发条件时启动所述待执行任务。
9.一种计算机设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至7中任一项所述的服务实例管理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至7中任一项所述的服务实例管理方法。
CN202311611113.0A 2023-11-28 2023-11-28 服务实例管理方法、装置、计算机设备及介质 Pending CN117785335A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311611113.0A CN117785335A (zh) 2023-11-28 2023-11-28 服务实例管理方法、装置、计算机设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311611113.0A CN117785335A (zh) 2023-11-28 2023-11-28 服务实例管理方法、装置、计算机设备及介质

Publications (1)

Publication Number Publication Date
CN117785335A true CN117785335A (zh) 2024-03-29

Family

ID=90388131

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311611113.0A Pending CN117785335A (zh) 2023-11-28 2023-11-28 服务实例管理方法、装置、计算机设备及介质

Country Status (1)

Country Link
CN (1) CN117785335A (zh)

Similar Documents

Publication Publication Date Title
US11659020B2 (en) Method and system for real-time modeling of communication, virtualization and transaction execution related topological aspects of monitored software applications and hardware entities
JP7209034B2 (ja) エッジコンピューティングテスト方法、装置、機器及び読み取り可能な記憶媒体
CN111666206B (zh) 变更代码的影响范围的获取方法、装置、设备及存储介质
US20170046146A1 (en) Autonomously healing microservice-based applications
US9870223B2 (en) Efficient detection of architecture related issues during the porting process
CN109408310B (zh) 服务器的调试方法、服务器及可读存储介质
CN112527899A (zh) 数据同步的方法、装置、设备以及存储介质
CN115292026B (zh) 容器集群的管理方法、装置、设备及计算机可读存储介质
CN112199355B (zh) 数据迁移方法、装置、电子设备及存储介质
CN113778486A (zh) 一种代码流水线的容器化处理方法、装置、介质及设备
CN113051043A (zh) 微服务异常补偿方法和装置
CN114912255A (zh) 在线仿真实验系统及方法
CN106843822B (zh) 一种执行代码生成方法及设备
CN111966877A (zh) 前端服务方法、装置、设备及存储介质
CN116578497A (zh) 一种接口自动化测试方法、系统、计算机设备及存储介质
CN117785335A (zh) 服务实例管理方法、装置、计算机设备及介质
CN114217798A (zh) 数据库表单界面的代码生成方法和装置
CN114721686A (zh) 配置数据更新方法、装置、电子设备和存储介质
CN110377401B (zh) 基于idea的事务请求处理方法、装置、服务器和存储介质
CN113419829A (zh) 作业调度方法、装置、调度平台及存储介质
CN113254405A (zh) 文件转换方法、装置、设备和介质
CN115525722B (zh) 宽表数据的同步方法、装置、电子装置和存储介质
CN112527368B (zh) 集群内核版本更新方法、装置、电子设备和存储介质
KR102485154B1 (ko) 전력 통신 서비스
US20220164219A1 (en) Processing system, processing method, higher-level system, lower-level system, higher-level program, and lower-level program

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