一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

依赖资源的状态查询方法、装置、存储介质以及电子设备与流程

2022-11-16 16:41:30 来源:中国专利 TAG:


1.本发明涉及计算机领域,具体而言,涉及一种依赖资源的状态查询方法、装置、存储介质以及电子设备。


背景技术:

2.一个数据库实例的创建与删除,关联着其依赖资源的创建与删除,因此在验证数据库资源创建与删除的同时,也要验证其依赖资源的创建于删除。现有技术中,只能手动验证依赖资源的创建与删除。通过调用各个依赖服务的接口进行查询,查询得到则认为资源存活,查询不到则认为资源已删除。


技术实现要素:

3.本发明实施例提供了一种依赖资源的状态查询方法、装置、存储介质以及电子设备,以至少解决依赖资源只能手动查询状态,造成的查询依赖资源的状态效率低的技术问题。
4.根据本发明实施例的一个方面,提供了一种依赖资源的状态查询方法,包括:在获取到目标信息的情况下,通过调用数据库服务名对应的资源验证器以调用元数据查询器,查询数据库实例与目标场景标志匹配的实例信息;其中,上述目标信息包括待查询依赖资源的数据库实例的实例标识、上述数据库实例所属数据库的数据库服务名、上述依赖资源的创建验证场景的目标场景标志;确定上述实例信息中包含的目标标识,其中,上述目标标识为上述数据库实例的依赖数据中,与上述目标场景标志匹配的目标数据的标识;调用与上述数据库服务名匹配的资源查询器,得到每一个上述目标标识对应的资源数据;对上述资源数据进行验证,得到上述资源数据的验证结果;显示上述验证结果,其中,上述验证结果用于表示上述资源数据的状态。
5.根据本发明实施例的另一方面,提供了一种依赖资源的状态查询装置,包括:查询模块,用于在获取到目标信息的情况下,通过调用数据库服务名对应的资源验证器以调用元数据查询器,查询数据库实例与目标场景标志匹配的实例信息;其中,上述目标信息包括待查询依赖资源的数据库实例的实例标识、上述数据库实例所属数据库的数据库服务名、上述依赖资源的创建验证场景的目标场景标志;确定模块,用于确定上述实例信息中包含的目标标识,其中,上述目标标识为上述数据库实例的依赖数据中,与上述目标场景标志匹配的目标数据的标识;调用模块,用于调用与上述数据库服务名匹配的资源查询器,得到每一个上述目标标识对应的资源数据;验证模块,用于对上述资源数据进行验证,得到上述资源数据的验证结果;显示模块,用于显示上述验证结果,其中,上述验证结果用于表示上述资源数据的状态。
6.作为一种可选的示例,上述确定模块包括:遍历单元,用于从上述实例信息中的首个字符开始,遍历上述实例信息;第一确定单元,用于将遍历到的各个资源标识作为上述目标标识。
7.作为一种可选的示例,上述查询模块包括:处理单元,用于将每一个上述目标标识作为当前标识,执行如下操作:向上述当前标识对应的服务器发送获取请求;上述获取请求用于请求获取与上述当前标识对应的资源数据;接收上述服务器返回的上述当前标识和上述当前标识对应的当前子标识的资源数据。
8.作为一种可选的示例,上述查询模块包括:第二确定单元,用于通过上述数据库服务名,确定与上述数据库服务名匹配的上述资源验证器,其中,不同的数据库名对应不同的资源验证器;输入单元,用于利用上述资源验证器将上述数据库实例的实例标识输入到上述元数据查询器中,并利用上述元数据查询器连接上述数据库实例所在的数据库以从上述数据库中查询到与上述实例标识相关的信息;第一封装单元,用于利用上述元数据查询器将查询到的与上述实例标识相关的信息封装上述实例信息。
9.作为一种可选的示例,上述装置还包括:监听模块,用于监听上述数据库中的数据库表;封装模块,用于在上述数据库表中的实例发生变化的情况下,封装变化消息,并将上述变化消息推送到消息队列中;获取模块,用于在上述消息队列中的任意一条消息被消费时,获取发生变化的实例的上述实例标识、上述数据库服务名,并根据被消费的消息确定上述目标场景标志为第一场景标志或第二场景标志。
10.作为一种可选的示例,上述封装模块包括:第二封装单元,用于在上述数据库表中新增一行记录的情况下,确定新增一个数据库实例,将新增的上述数据库实例的状态值记录为creating;将新增的上述数据库实例与上述状态值封装为上述变化消息;确定上述目标场景标志为第一场景标志。
11.作为一种可选的示例,上述封装模块包括:第三封装单元,用于在上述数据库表中更新一行记录的情况下,且任务标志被更新为空的情况下,查询更新的上述数据库实例的状态值;在查询到上述状态值且上述状态值为creating的情况下,将更新的上述数据库实例与上述状态值封装为上述变化消息,且将上述状态值更新为created;确定上述目标场景标志为第一场景标志。
12.作为一种可选的示例,上述封装模块包括:第四封装单元,用于在上述数据库表中更新一行记录的情况下,且删除标记被更新为1的情况下,确定删除了一个数据库实例;在删除的上述数据库实例的状态值为created的情况下,将删除的上述数据库实例与上述状态值封装为上述变化消息;确定上述目标场景标志为第二场景标志。
13.作为一种可选的示例,上述验证模块包括:第一验证单元,用于在上述目标场景标志为第一场景标志的情况下,确定场景为创建上述数据库实例,并确定上述数据库实例的依赖资源的资源特征,其中,上述资源特征为上述数据库实例的依赖资源所独有的特征;在从上述资源数据中查询到上述资源特征的情况下,确定上述验证结果为成功创建上述依赖资源,在上述资源数据中未查询到上述资源特征的情况下,确定上述验证结果为未成功创建上述依赖资源。
14.作为一种可选的示例,上述验证模块包括:第二验证单元,用于在上述目标场景标志为第二场景标志的情况下,确定场景为删除上述数据库实例,并确定上述数据库实例的依赖资源的资源特征,其中,上述资源特征为上述数据库实例的依赖资源所独有的特征;在从上述资源数据中查询到上述资源特征的情况下,确定上述验证结果为未成功删除上述依赖资源,在上述资源数据中未查询到上述资源特征的情况下,确定上述验证结果为成功删
除上述依赖资源。
15.根据本发明实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被处理器运行时执行上述依赖资源的状态查询方法。
16.根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过上述计算机程序执行上述的依赖资源的状态查询方法。
17.在本发明实施例中,采用了在获取到目标信息的情况下,通过调用数据库服务名对应的资源验证器以调用元数据查询器,查询数据库实例与目标场景标志匹配的实例信息;其中,上述目标信息包括待查询依赖资源的数据库实例的实例标识、上述数据库实例所属数据库的数据库服务名、上述依赖资源的创建验证场景的目标场景标志;确定上述实例信息中包含的目标标识,其中,上述目标标识为上述数据库实例的依赖数据中,与上述目标场景标志匹配的目标数据的标识;调用与上述数据库服务名匹配的资源查询器,得到每一个上述目标标识对应的资源数据;对上述资源数据进行验证,得到上述资源数据的验证结果;显示上述验证结果,其中,上述验证结果用于表示上述资源数据的状态的方法,由于在上述方法中,在查询数据库实例的依赖资源的状态时,可以获取数据库实例的实例标识、上述数据库实例所在的数据库的数据库服务名、以及上述依赖资源的创建验证场景的第一场景标志,从而根据上述信息进一步的查询待查询的依赖资源的资源状态,从而实现了提高查询依赖资源的资源状态的效率的目的,进而解决了依赖资源只能手动查询状态,造成的查询依赖资源的状态效率低的技术问题。
附图说明
18.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
19.图1是根据本发明实施例的一种可选的依赖资源的状态查询方法的流程图;
20.图2是根据本发明实施例的一种可选的依赖资源的状态查询方法的验证依赖资源的示意图;
21.图3是根据本发明实施例的一种可选的依赖资源的状态查询方法的自动验证过程示意图;
22.图4是根据本发明实施例的一种可选的依赖资源的状态查询装置的结构示意图;
23.图5是根据本发明实施例的一种可选的电子设备的示意图。
具体实施方式
24.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
25.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用
的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
26.根据本发明实施例的第一方面,提供了一种依赖资源的状态查询方法,可选地,如图1所示,上述方法包括:
27.s102,在获取到目标信息的情况下,通过调用数据库服务名对应的资源验证器以调用元数据查询器,查询数据库实例与目标场景标志匹配的实例信息;其中,目标信息包括待查询依赖资源的数据库实例的实例标识、数据库实例所属数据库的数据库服务名、依赖资源的创建验证场景的目标场景标志;
28.s104,确定实例信息中包含的目标标识,其中,目标标识为数据库实例的依赖数据中,与目标场景标志匹配的目标数据的标识;
29.s106,调用与数据库服务名匹配的资源查询器,得到每一个目标标识对应的资源数据;
30.s108,对资源数据进行验证,得到资源数据的验证结果;
31.s110,显示验证结果,其中,验证结果用于表示资源数据的状态。
32.可选的,本实施例中,可以编写脚本工具,如利用python语言编写脚本工具。脚本工具接收的参数:数据库服务名(比如mysql),数据库实例身份标识号(identity document,id)(比如1234),验证场景(比如network_alive,表示验证网络资源是否存在,验证场景分为创建验证场景和删除验证场景)。
33.针对每一种数据库服务,开发元数据查询器,即根据数据库实例标识,查询该数据库实例依赖的各个依赖资源的资源标识(目标标识)
34.针对各个依赖服务,开发对应的资源查询器,比如针对网络服务,开发网络资源查询器,用于查询数据库实例在网络资源中的依赖资源。
35.针对各个数据库服务,开发资源验证器,比如针对mysql数据库,开发mysql资源验证器,用于验证mysql的数据库实例的依赖资源的存活情况。
36.当使用该工具时,根据数据库服务名,调用对应的资源验证器,首先根据数据库实例标识调用元数据查询器查询依赖资源标识,然后根据各个依赖资源标识调用对应的资源查询器查询依赖资源,最后根据资源验证器验证依赖资源的存活细节,最终返回验证结果。
37.本实施例中,在要验证的数据库实例的依赖资源是否存活时,可以获取数据库实例的实例标识、数据库实例所在的数据库的数据库服务名,以及依赖资源的创建验证场景的第一场景标志。如验证依赖资源的网络创建验证场景。
38.根据数据库服务名,调用与数据库服务对应的资源验证器,然后根据数据库实例标识,由资源验证器调用元数据查询器,查询与数据库实例标识对应的实例信息,在实例信息中查找数据库实例的依赖资源在网络场景下的依赖资源标识,即目标标识。查询到目标标识后,使用资源验证器查找目标标识对应的资源数据。
39.对资源数据进行验证。验证过程可以为根据不同的场景,验证资源数据是否存在或者是否被删除。场景可以分为创建场景、更新场景与删除场景等。创建场景与更新场景验
证资源数据是否存在,删除场景验证资源数据是否被删除。验证时,通过查询资源数据的独有的资源特征,来查询资源数据是否存在,是否被删除。
40.由于在上述方法中,在查询数据库实例的依赖资源的状态时,可以获取数据库实例的实例标识、数据库实例所在的数据库的数据库服务名、以及依赖资源的创建验证场景的第一场景标志,从而根据上述信息进一步的查询待查询的依赖资源的资源状态,从而实现了提高查询依赖资源的资源状态的效率的目的。
41.作为一种可选的示例,确定实例信息中包含的目标标识包括:
42.从实例信息中的首个字符开始,遍历实例信息;
43.将遍历到的各个资源标识作为目标标识。
44.可选的,本实施例中,可以在通过调用资源验证器,资源验证器为一个入口,通过资源验证器可以验证对应场景。使用资源验证器调用元数据查询器,元数据查询器可以根据数据库实例的实例标识查询数据库实例的实例信息。实例信息可以包括数据库实例的实例标识下的所有信息。元数据查询器可以和数据库对接,查找标识下的所有信息作为实例信息。然后,可以在实例信息中查找目标标识时,可以遍历实例信息,将出现的每一个资源标识作为目标标识。
45.作为一种可选的示例,调用与数据库服务名匹配的资源查询器,查询每一个目标标识对应的资源数据包括:
46.将每一个目标标识作为当前标识,执行如下操作:
47.向当前标识对应的服务器发送获取请求;获取请求用于请求获取与当前标识对应的资源数据;
48.接收服务器返回的当前标识和当前标识对应的当前子标识的资源数据。
49.可选的,本实施例中,在调用资源查询器查询每一个目标标识对应的资源数据时,可以将每一个目标标识作为当前标识,将资源查询器作为客户端,由资源查询器向提供当前标识的资源的服务器发送获取请求,请求获取当前标识的资源数据。服务器接收到获取请求后,会返回当前标识的资源数据。此外,还可能返回当前标识的子标识的资源数据。
50.作为一种可选的示例,上述方法还包括:
51.在获取到待查询依赖资源的数据库实例的实例标识、数据库实例所在的数据库的数据库服务名、以及依赖资源的删除验证场景的第二场景标志的情况下,调用与数据库服务名匹配的资源查询器,查询每一个目标标识对应的资源数据;
52.显示查询到的资源数据。
53.可选的,本实施例中,如果在创建数据库实例后,在根据数据库实例的实例标识、数据库服务名以及第一场景标志验证数据库实例的依赖资源是否存在之后,如果删除数据库实例,则还要验证数据库实例的依赖资源是否存在,即是否被删除。在验证依赖资源是否被删除时,可以调用在创建数据库实例时,所查询到的目标标识的资源数据,然后显示该部分资源数据即可。该部分资源数据在显示时,如果显示为空,则说明已经被删除。如果显示不为空,则说明没有被删除。
54.作为一种可选的示例,显示查询到的资源数据包括:
55.将资源数据生成为json格式的文本;
56.显示json格式的文本。
57.可选的,本实施例中,在显示查询到的资源数据时,可以将资源数据生成为json格式的文本。以json格式的文本来显示资源数据,可以快速的查看各部分的资源数据是否存在、是否被删除。
58.作为一种可选的示例,通过调用数据库服务名对应的资源验证器以调用元数据查询器,查询数据库实例与目标场景标志匹配的实例信息包括:
59.通过数据库服务名,确定与数据库服务名匹配的资源验证器,其中,不同的数据库名对应不同的资源验证器;
60.利用资源验证器将数据库实例的实例标识输入到元数据查询器中,并利用元数据查询器连接数据库实例所在的数据库以从数据库中查询到与实例标识相关的信息;
61.利用元数据查询器将查询到的与实例标识相关的信息封装实例信息。
62.可选的,本实施例中,不同的数据库服务名匹配不同的资源验证器。使用数据库服务名,调用对应的资源验证器。资源验证器将数据库实例的实例标识输入到元数据查询器中,由元数据查询器连接数据库实例所在的数据库。元数据查询器连接数据库后,可以从数据库中查询信息。元数据查询器根据实例标识,查询数据库中与实例标识相关的信息。此处相关的信息可以为实例标识下的所有信息。
63.作为一种可选的示例,上述方法还包括:
64.监听数据库中的数据库表;
65.在数据库表中的实例发生变化的情况下,封装变化消息,并将变化消息推送到消息队列中;
66.在消息队列中的任意一条消息被消费时,获取发生变化的实例的实例标识、数据库服务名,并根据被消费的消息确定目标场景标志为第一场景标志或第二场景标志。
67.可选的,本实施例中,可以监控数据库中的数据库表。数据库表可以记录数据库实例。如果数据库表中的数据库实例发生了变化(增删改),则将发生的变化封装为变化消息,如增加一个实例,或删除一个实例,或修改一个实例。将变化消息推送到消息队列中。消息队列中的消息按照在队列中的顺序依次被消耗。当任意一个变化消息被消耗时,获取变化消息中变化的数据库实例的实例标识、数据库服务名,以及根据变化消息确定场景标志为创建或删除或修改。
68.作为一种可选的示例,在数据库表中的实例发生变化的情况下,封装变化消息,并将变化消息推送到消息队列中包括:
69.在数据库表中新增一行记录的情况下,确定新增一个数据库实例,将新增的数据库实例的状态值记录为creating;
70.将新增的数据库实例与状态值封装为变化消息;
71.确定目标场景标志为第一场景标志。
72.本实施例中,在数据库中维护数据库实例时,还可以为每一个数据库实例维护一个状态值。状态值用于记录数据库实例的状态。如果是新建一个数据库实例,那么,在新建数据库实例后,为数据库实例分配状态值,状态值记录为creating。表示数据库实例创建完成。将新增的数据库实例与状态值封装为变化消息,变化消息发送到消息队列。场景标志确定为创建场景标志。
73.作为一种可选的示例,在数据库表中的实例发生变化的情况下,封装变化消息,并
将变化消息推送到消息队列中包括:
74.在数据库表中更新一行记录的情况下,且任务标志被更新为空的情况下,查询更新的数据库实例的状态值;
75.在查询到状态值且状态值为creating的情况下,将更新的数据库实例与状态值封装为变化消息,且将状态值更新为created;
76.确定目标场景标志为第一场景标志。
77.本实施例中,如果是更新一个数据库实例,那么,在更新数据库实例前,查询数据库实例的状态值,状态值为creating。将状态值调整为created,表示数据库实例是已经创建完成的。将更新的数据库实例与状态值封装为变化消息,变化消息发送到消息队列。场景标志确定为创建场景标志。
78.作为一种可选的示例,在数据库表中的实例发生变化的情况下,封装变化消息,并将变化消息推送到消息队列中包括:
79.在数据库表中更新一行记录的情况下,且删除标记被更新为1的情况下,确定删除了一个数据库实例;
80.在删除的数据库实例的状态值为created的情况下,将删除的数据库实例与状态值封装为变化消息;
81.确定目标场景标志为第二场景标志。
82.本实施例中,如果是删除一个数据库实例,那么,在删除数据库实例时,查询数据库实例的状态值,状态值为created。表示数据库实例已经被验证过。将删除的数据库实例的实例标识与状态值封装为变化消息,变化消息发送到消息队列。场景标志确定为删除场景标志。
83.作为一种可选的示例,对资源数据进行验证,得到资源数据的验证结果包括:
84.在目标场景标志为第一场景标志的情况下,确定场景为创建数据库实例,并确定数据库实例的依赖资源的资源特征,其中,资源特征为数据库实例的依赖资源所独有的特征;
85.在从资源数据中查询到资源特征的情况下,确定验证结果为成功创建依赖资源,在资源数据中未查询到资源特征的情况下,确定验证结果为未成功创建依赖资源。
86.作为一种可选的示例,对资源数据进行验证,得到资源数据的验证结果包括:
87.在目标场景标志为第二场景标志的情况下,确定场景为删除数据库实例,并确定数据库实例的依赖资源的资源特征,其中,资源特征为数据库实例的依赖资源所独有的特征;
88.在从资源数据中查询到资源特征的情况下,确定验证结果为未成功删除依赖资源,在资源数据中未查询到资源特征的情况下,确定验证结果为成功删除依赖资源。
89.本实施例中,在数据库实例的创建场景或删除场景,在验证数据库实例的依赖资源是否被创建/删除时,可以根据依赖资源特有的资源特征,在数据库中查询该依赖资源。如果能查询到依赖资源,则说明依赖资源被创建或者未被删除,如果未查询到依赖资源,则说明依赖资源未被创建或者已经被删除。
90.资源验证器:不同的数据库服务对应不同的资源验证器。比如redis资源验证器、mongodb资源验证器,资源验证器中包含各种验证场景。
91.验证场景:主要分为两类(创建、删除),对应的验证逻辑不同;不同的数据库服务对应的同名验证场景,验证逻辑也不同。
92.元数据查询器:实现各种sql语句,查询待验证的实例的元数据信息。
93.资源查询器:不同的依赖服务对应不同的资源查询器。比如neutron资源查询器(查网络资源的)、nova资源查询器(查计算资源的)。
94.图2是本实施例的验证示意图。例如创建网络资源的验证场景:
95.步骤1:用户输入:数据库服务名:redis,实例标识:1234,验证场景:网络资源创建
96.步骤2:工具接收输入参数,调起【redis资源验证器】,执行【网络资源创建】验证场景
97.步骤3:根据验证场景中的查询规则,调起【元数据查询器】,查询实例标识为【1234】的实例详细信息,详细信息中包括该实例依赖的【网络资源】的全部或部分标识
98.步骤4:根据步骤3中得到的全部或部分标识,调起对应的【资源查询器】,在【redis】中其网络资源查询器为【neutron资源查询器】,查询对应标识的详细信息
99.步骤5:将步骤4中查询得到的详细信息,根据验证场景中的验证规则,组装为一个完整的json格式的文本
100.步骤6:将步骤5得到的文本,展示给用户,并写入文件中保存
101.例如删除网络资源的验证场景:
102.步骤1:用户输入:数据库服务名:redis,实例标识:1234,验证场景:网络资源删除
103.步骤2:工具接收输入参数,调起【redis资源验证器】,执行【网络资源删除】验证场景
104.步骤3:由于【元数据】本身可能不全(原因在于创建实例时,获取的是全部或部分依赖资源的标识),但【网络资源创建】最终得到的文本一定是全的(创建实例时查询到的对应标识的详细信息),因此工具会直接加载该文本,并转换成json格式的数据
105.步骤4:根据步骤3得到的json数据,调起对应的【资源查询器】,在【redis】中其网络资源查询器为【neutron资源查询器】,查询json数据中记载的各项网络资源标识的详细信息
106.步骤5:将步骤4中查询得到的详细信息,根据验证场景中的验证规则,组装为一个完整的json格式的文本
107.步骤6:将步骤5得到的文本,展示给用户
108.对于其他xx资源,如数据库资源,也按照上述创建场景、删除场景验证。
109.本实施例中,验证【创建】时,根据【元数据】中所记录的依赖资源标识去查询,得到一个完整的信息。
110.验证【删除】时,根据【创建】时得到的完整信息,直接去查询,不需要再查询元数据。
111.本实施例中,可以进行自动化验证。在验证工具的架构和存活验证逻辑不变的情况下,可以利用工具实现自动化的验证,并将验证结果进行存储,在需要时,用户可以查看存储在数据库中的验证结果,无需用户手动进行验证,在待验证的资源较多时,可以提高效率。具体内容如下:
112.名词解释:
113.canal,是一款开源的数据库监听组件,支持监听数据库中的数据变动,并将变动导入到消息队列。
114.rabbitmq,是一款消息队列中间件。
115.redis,一款缓存数据库。
116.通过开发一款自动化验证工具,支持实时、自动验证,当出现资源泄露时,能够自动告警
117.1、利用python编写验证工具,支持根据指定的数据库服务名、实例标识验证其依赖资源的存活情况(即上述的脚本工具)
118.2、对记录实例标识对应所有信息的数据库,部署canal,实时监听该数据库中某些数据表的变动情况
119.3、部署rabbitmq,配置canal将数据变动封装成消息,推送到rabbitmq
120.4、利用python编写消费者工具,监听rabbitmq消息队列,当接收到消息时,自动调用1、中编写的验证工具,进行验证,并将验证结果写入redis缓存。当验证结果不符合预期时,自动告警
121.5、编写api接口和web界面,支持从redis中读取验证结果,并展示到web界面中
122.自动化方案的架构:
123.记录实例详细信息的数据库:该数据库中通常有一张表,记录一个实例的元数据信息,比如实例标识、实例状态。
124.canal:一款开源的数据库监听工具,在canal的配置中,1)配置上述数据库的连接地址和鉴权信息、库名和表名,2)配置下游消息队列的连接地址和鉴权信息、消息路由表。canal会实时监听上述数据库表的数据变动,并将变动封装成一个消息,推送的下游消息队列。
125.rabbitmq:即图3中的queue,是一款开源的消息队列中间件。
126.agent:消费者工具。agent会监听queue,消费其中的消息。当有消息拿到时,agent会调用验证工具,进行验证。agent会将验证结果推送到redis缓存起来,并且如果发现有资源泄露,会发送告警(短信、邮件、飞书等通知)
127.redis:一款开源的缓存数据库。
128.api&web:自研的接口与前端,用于查询和展示redis中缓存的数据。
129.图3是本实施例的自动验证过程。canal实时监听数据库数据变动,并将数据推送到消息队列,agent监听,当agent接收消息,并进行判断。如果数据变动是【insert一行记录】,则说明是新增了一行记录,即新创建了一个实例,agent会对该实例记录一个状态值,值为creating。如果数据变动是【update一行记录,且task_status被更新为none】,则说明是有一个实例刚刚完成了某个任务(可能与创建无关),agent会查询该实例是否有记录一个状态值,以及值是否为creating,如果是,则说明这个实例是创建完成了的,agent会更新状态值为created,并对其进行验证(验证创建)。如果数据变动是【update一行记录,且deleted被更新为1】,则说明是有一个实例被删除了,agent会查询该实例是否有记录一个状态值,以及值是否为created,如果是,则说明这个实例之前被验证过,agent会更新状态值为deleted,并从redis中读取之前的验证结果,根据该验证结果对其进行二次验证(验证删除),并将验证结果写入redis。在验证结果中,如果发现资源泄露,agent会根据配置,发
送告警(短信、邮件、飞书等通知)。如果数据变动不是以上三种情况,agent将忽略该条变动。应用程序界面(application program interface,api)和全球广域网(world wide web,web)界面从redis中查询所有的实例信息(状态值、验证结果),展示给用户。
130.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
131.根据本技术实施例的另一方面,还提供了一种依赖资源的状态查询装置,如图4所示,包括:
132.查询模块402,用于在获取到目标信息的情况下,通过调用数据库服务名对应的资源验证器以调用元数据查询器,查询数据库实例与目标场景标志匹配的实例信息;其中,目标信息包括待查询依赖资源的数据库实例的实例标识、数据库实例所属数据库的数据库服务名、依赖资源的创建验证场景的目标场景标志;
133.确定模块404,用于确定实例信息中包含的目标标识,其中,目标标识为数据库实例的依赖数据中,与目标场景标志匹配的目标数据的标识;
134.调用模块406,用于调用与数据库服务名匹配的资源查询器,得到每一个目标标识对应的资源数据;
135.验证模块408,用于对资源数据进行验证,得到资源数据的验证结果;
136.显示模块410,用于显示验证结果,其中,验证结果用于表示资源数据的状态。
137.可选的,本实施例中,可以编写脚本工具,如利用python语言编写脚本工具。脚本工具接收的参数:数据库服务名(比如mysql),数据库实例身份标识号(identity document,id)(比如1234),验证场景(比如network_alive,表示验证网络资源是否存在,验证场景分为创建验证场景和删除验证场景)。
138.针对每一种数据库服务,开发元数据查询器,即根据数据库实例标识,查询该数据库实例依赖的各个依赖资源的资源标识(目标标识)
139.针对各个依赖服务,开发对应的资源查询器,比如针对网络服务,开发网络资源查询器,用于查询数据库实例在网络资源中的依赖资源。
140.针对各个数据库服务,开发资源验证器,比如针对mysql数据库,开发mysql资源验证器,用于验证mysql的数据库实例的依赖资源的存活情况。
141.当使用该工具时,根据数据库服务名,调用对应的资源验证器,首先根据数据库实例标识调用元数据查询器查询依赖资源标识,然后根据各个依赖资源标识调用对应的资源查询器查询依赖资源,最后根据资源验证器验证依赖资源的存活细节,最终返回验证结果。
142.本实施例中,在要验证的数据库实例的依赖资源是否存活时,可以获取数据库实例的实例标识、数据库实例所在的数据库的数据库服务名,以及依赖资源的创建验证场景的第一场景标志。如验证依赖资源的网络创建验证场景。
143.根据数据库服务名,调用与数据库服务对应的资源验证器,然后根据数据库实例标识,由资源验证器调用元数据查询器,查询与数据库实例标识对应的实例信息,在实例信息中查找数据库实例的依赖资源在网络场景下的依赖资源标识,即目标标识。查询到目标
标识后,使用资源验证器查找目标标识对应的资源数据。
144.对资源数据进行验证。验证过程可以为根据不同的场景,验证资源数据是否存在或者是否被删除。场景可以分为创建场景、更新场景与删除场景等。创建场景与更新场景验证资源数据是否存在,删除场景验证资源数据是否被删除。验证时,通过查询资源数据的独有的资源特征,来查询资源数据是否存在,是否被删除。
145.由于在上述方法中,在查询数据库实例的依赖资源的状态时,可以获取数据库实例的实例标识、数据库实例所在的数据库的数据库服务名、以及依赖资源的创建验证场景的第一场景标志,从而根据上述信息进一步的查询待查询的依赖资源的资源状态,从而实现了提高查询依赖资源的资源状态的效率的目的。
146.作为一种可选的示例,上述确定模块包括:
147.遍历单元,用于从实例信息中的首个字符开始,遍历实例信息;
148.第一确定单元,用于将遍历到的各个资源标识作为目标标识。
149.可选的,本实施例中,可以在通过调用资源验证器,资源验证器为一个入口,通过资源验证器可以验证对应场景。使用资源验证器调用元数据查询器,元数据查询器可以根据数据库实例的实例标识查询数据库实例的实例信息。实例信息可以包括数据库实例的实例标识下的所有信息。元数据查询器可以和数据库对接,查找标识下的所有信息作为实例信息。然后,可以在实例信息中查找目标标识时,可以遍历实例信息,将出现的每一个资源标识作为目标标识。
150.作为一种可选的示例,上述查询模块包括:
151.处理单元,用于将每一个目标标识作为当前标识,执行如下操作:
152.向当前标识对应的服务器发送获取请求;获取请求用于请求获取与当前标识对应的资源数据;
153.接收服务器返回的当前标识和当前标识对应的当前子标识的资源数据。
154.可选的,本实施例中,在调用资源查询器查询每一个目标标识对应的资源数据时,可以将每一个目标标识作为当前标识,将资源查询器作为客户端,由资源查询器向提供当前标识的资源的服务器发送获取请求,请求获取当前标识的资源数据。服务器接收到获取请求后,会返回当前标识的资源数据。此外,还可能返回当前标识的子标识的资源数据。
155.作为一种可选的示例,上述查询模块包括:
156.第二确定单元,用于通过数据库服务名,确定与数据库服务名匹配的资源验证器,其中,不同的数据库名对应不同的资源验证器;
157.输入单元,用于利用资源验证器将数据库实例的实例标识输入到元数据查询器中,并利用元数据查询器连接数据库实例所在的数据库以从数据库中查询到与实例标识相关的信息;
158.第一封装单元,用于利用元数据查询器将查询到的与实例标识相关的信息封装实例信息。
159.可选的,本实施例中,不同的数据库服务名匹配不同的资源验证器。使用数据库服务名,调用对应的资源验证器。资源验证器将数据库实例的实例标识输入到元数据查询器中,由元数据查询器连接数据库实例所在的数据库。元数据查询器连接数据库后,可以从数据库中查询信息。元数据查询器根据实例标识,查询数据库中与实例标识相关的信息。此处
相关的信息可以为实例标识下的所有信息。
160.作为一种可选的示例,上述装置还包括:
161.监听模块,用于监听数据库中的数据库表;
162.封装模块,用于在数据库表中的实例发生变化的情况下,封装变化消息,并将变化消息推送到消息队列中;
163.获取模块,用于在消息队列中的任意一条消息被消费时,获取发生变化的实例的实例标识、数据库服务名,并根据被消费的消息确定目标场景标志为第一场景标志或第二场景标志。
164.可选的,本实施例中,可以监控数据库中的数据库表。数据库表可以记录数据库实例。如果数据库表中的数据库实例发生了变化(增删改),则将发生的变化封装为变化消息,如增加一个实例,或删除一个实例,或修改一个实例。将变化消息推送到消息队列中。消息队列中的消息按照在队列中的顺序依次被消耗。当任意一个变化消息被消耗时,获取变化消息中变化的数据库实例的实例标识、数据库服务名,以及根据变化消息确定场景标志为创建或删除或修改。
165.作为一种可选的示例,上述封装模块包括:
166.第二封装单元,用于在数据库表中新增一行记录的情况下,确定新增一个数据库实例,将新增的数据库实例的状态值记录为creating;将新增的数据库实例与状态值封装为变化消息;确定目标场景标志为第一场景标志。
167.本实施例中,在数据库中维护数据库实例时,还可以为每一个数据库实例维护一个状态值。状态值用于记录数据库实例的状态。如果是新建一个数据库实例,那么,在新建数据库实例后,为数据库实例分配状态值,状态值记录为creating。表示数据库实例创建完成。将新增的数据库实例与状态值封装为变化消息,变化消息发送到消息队列。场景标志确定为创建场景标志。
168.作为一种可选的示例,上述封装模块包括:
169.第三封装单元,用于在数据库表中更新一行记录的情况下,且任务标志被更新为空的情况下,查询更新的数据库实例的状态值;在查询到状态值且状态值为creating的情况下,将更新的数据库实例与状态值封装为变化消息,且将状态值更新为created;确定目标场景标志为第一场景标志。
170.本实施例中,如果是更新一个数据库实例,那么,在更新数据库实例前,查询数据库实例的状态值,状态值为creating。将状态值调整为created,表示数据库实例是已经创建完成的。将更新的数据库实例与状态值封装为变化消息,变化消息发送到消息队列。场景标志确定为创建场景标志。
171.作为一种可选的示例,上述封装模块包括:
172.第四封装单元,用于在数据库表中更新一行记录的情况下,且删除标记被更新为1的情况下,确定删除了一个数据库实例;在删除的数据库实例的状态值为created的情况下,将删除的数据库实例与状态值封装为变化消息;确定目标场景标志为第二场景标志。
173.本实施例中,如果是删除一个数据库实例,那么,在删除数据库实例时,查询数据库实例的状态值,状态值为created。表示数据库实例已经被验证过。将删除的数据库实例的实例标识与状态值封装为变化消息,变化消息发送到消息队列。场景标志确定为删除场
景标志。
174.作为一种可选的示例,上述验证模块包括:
175.第一验证单元,用于在目标场景标志为第一场景标志的情况下,确定场景为创建数据库实例,并确定数据库实例的依赖资源的资源特征,其中,资源特征为数据库实例的依赖资源所独有的特征;在从资源数据中查询到资源特征的情况下,确定验证结果为成功创建依赖资源,在资源数据中未查询到资源特征的情况下,确定验证结果为未成功创建依赖资源。
176.作为一种可选的示例,上述验证模块包括:
177.第二验证单元,用于在目标场景标志为第二场景标志的情况下,确定场景为删除数据库实例,并确定数据库实例的依赖资源的资源特征,其中,资源特征为数据库实例的依赖资源所独有的特征;在从资源数据中查询到资源特征的情况下,确定验证结果为未成功删除依赖资源,在资源数据中未查询到资源特征的情况下,确定验证结果为成功删除依赖资源。
178.本实施例中,在数据库实例的创建场景或删除场景,在验证数据库实例的依赖资源是否被创建/删除时,可以根据依赖资源特有的资源特征,在数据库中查询该依赖资源。如果能查询到依赖资源,则说明依赖资源被创建或者未被删除,如果未查询到依赖资源,则说明依赖资源未被创建或者已经被删除。
179.本实施例的其他示例请参见上述示例,在此不在赘述。
180.图5是根据本技术实施例的一种可选的电子设备的示意图,如图5所示,包括处理器502、通信接口504、存储器506和通信总线508,其中,处理器502、通信接口504和存储器506通过通信总线508完成相互间的通信,其中,
181.存储器506,用于存储计算机程序;
182.处理器502,用于执行存储器506上所存放的计算机程序时,实现如下步骤:
183.在获取到目标信息的情况下,通过调用数据库服务名对应的资源验证器以调用元数据查询器,查询数据库实例与目标场景标志匹配的实例信息;其中,目标信息包括待查询依赖资源的数据库实例的实例标识、数据库实例所属数据库的数据库服务名、依赖资源的创建验证场景的目标场景标志;
184.确定实例信息中包含的目标标识,其中,目标标识为数据库实例的依赖数据中,与目标场景标志匹配的目标数据的标识;
185.调用与数据库服务名匹配的资源查询器,得到每一个目标标识对应的资源数据;
186.对资源数据进行验证,得到资源数据的验证结果;
187.显示验证结果,其中,验证结果用于表示资源数据的状态。
188.可选地,在本实施例中,上述的通信总线可以是pci(peripheral component interconnect,外设部件互连标准)总线、或eisa(extended industry standard architecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。
189.存储器可以包括ram,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
190.作为一种示例,上述存储器506中可以但不限于包括上述依赖资源的状态查询装置中的查询模块402、确定模块404、调用模块406、验证模块408以及显示模块410。此外,还可以包括但不限于上述依赖资源的状态查询装置中的其他模块单元,本示例中不再赘述。
191.上述处理器可以是通用处理器,可以包含但不限于:cpu(central processing unit,中央处理器)、np(network processor,网络处理器)等;还可以是dsp(digital signal processing,数字信号处理器)、asic(application specific integrated circuit,专用集成电路)、fpga(field-programmable gate array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
192.可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
193.本领域普通技术人员可以理解,图5所示的结构仅为示意,实施上述依赖资源的状态查询方法的设备可以是终端设备,该终端设备可以是智能手机(如andro标识手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobile internet devices,m标识)、pad等终端设备。图5并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图5中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图5所示的不同的配置。
194.本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、rom、ram、磁盘或光盘等。
195.根据本发明的实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被处理器运行时执行上述依赖资源的状态查询方法中的步骤。
196.可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-only memory,rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
197.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
198.上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
199.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
200.在本技术所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可
以是电性或其它的形式。
201.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
202.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
203.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献