基于主题队列的微服务注册与检测方法及装置与流程



1.本发明涉及到数据处理的技术领域,特别是涉及到一种基于主题队列的微服务注册与检测方法、装置、计算机设备和存储介质。


背景技术:



2.微服务架构中,系统由许多功能单一,独立部署的微服务组成,微服务之间通常需要相互通信。现有技术中,通常是通过服务提供者发布微服务,然后由服务消费者发现和获取所需要的微服务。
3.业内的微服务注册与发现一般是在服务实例启动时,由微服务本身向服务注册中心发送注册消息来实现,且在通过其他位服务查该微服务时,需通过注册中心获取该微服务的地址进行通信,该方法需要将微服务的地址信息发送给注册中心,由注册中心维护所有的服务地址信息,因此服务提供者和消费者都需要首先知道注册中心的url地址,当注册的信息有变更时,服务消费者需要从注册中心获取到具体的url地址时才能消费其他微服务,这样不但不便利且浪费资源,另外当服务提供方有多个实例时,难以实现多实例之间的负载均衡。


技术实现要素:



4.本发明的主要目的为提供一种基于主题队列的微服务注册与检测方法、装置、计算机设备和存储介质,旨在解决现有技术中微服务注册不便利的技术问题。
5.基于上述发明目的,本发明提出一种基于主题队列的微服务注册与检测方法,包括:
6.在注册中心建立指定的第一主题队列,并监听所述第一主题队列;
7.通过所述第一主题队列接收用户发送的指定注册信息,并将所述注册信息记录在预设的注册表中以完成微服务注册;
8.依据所述注册表中的所述指定注册信息,建立相应的第二主题队列以及第三主题队列,所述第二主题队列用于接收并存储对应所述注册表的查询请求,所述第三主题队列用于接收并存储检测信息;
9.通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态。
10.进一步地,所述指定检测信息包括检测心跳包,所述通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态的步骤,包括:
11.每隔预设时间通过所述第三主题队列接收一次所述检测心跳包;
12.当在所述预设时间内接收到所述检测心跳包,则判定所述微服务的注册状态为正常状态;
13.当在所述预设时间内未接收到所述检测心跳包,则判定所述微服务的注册状态为不正常状态。
14.进一步地,所述每隔预设时间通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定当前的微服务注册状态的步骤之后,包括:
15.通过所述第二主题队列接收用户输入的查询请求,依据所述查询请求获取所述指定注册信息;
16.依据所述指定注册信息到与所述指定注册信息相应的指定微服务,并调用所述指定微服务。
17.进一步地,所述调用所述指定服务的步骤之前,包括:
18.获取所述注册表中各服务实例的调用信息,所述服务实例为微服务的执行载体;
19.依据所述调用信息生成对应各所述服务实例的负载权重信息;
20.依据所述负载权重信息选择出与所述指定微服务适配的所述服务实例。
21.进一步地,所述依据所述负载权重信息选择与所述指定微服务适配的所述服务实例的步骤,包括:
22.依据所述负载权重信息更新所述注册表中的权重系数,所述权重系数为选择使用所述服务实例的优先级系数,所述注册表中每一所述服务实例分别对应一权重系数;
23.按所述权重系数从高至低选择与所述指定微服务适配的所述服务实例。
24.进一步地,所述每隔预设时间通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定当前的微服务注册状态的步骤之后,包括:
25.实时监听所述第二主题队列,以获取所述微服务的调用情况;
26.依据所述调用情况更新所述注册表。
27.本发明还提供一种基于主题队列的微服务注册装置,包括:
28.第一建立单元,用于在注册中心建立指定的第一主题队列,并监听所述第一主题队列;
29.注册服务单元,用于通过所述第一主题队列接收用户发送的指定注册信息,并将所述注册信息记录在预设的注册表中以完成微服务注册;
30.第二建立单元,用于依据所述注册表中的所述指定注册信息,建立相应的第二主题队列以及第三主题队列,所述第二主题队列用于接收并存储对应所述注册表的查询请求,所述第三主题队列用于接收并存储检测信息;
31.检测注册单元,用于通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态。
32.进一步地,所述指定检测信息包括检测心跳包,所述检测注册单元包括:
33.接收测包单元,用于每隔预设时间通过所述第三主题队列接收一次所述检测心跳包;
34.第一判定单元,用于在所述预设时间内接收到所述检测心跳包,则判定所述微服务的注册状态为正常状态;
35.第二判定单元,用于在所述预设时间内未接收到所述检测心跳包,则判定所述微服务的注册状态为不正常状态。
36.本发明还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述基于主题队列的微服务注册与检测方法的步骤。
37.本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述基于主题队列的微服务注册与检测方法的步骤。
38.本发明的有益效果为:通过在注册中心中建立主题队列来接收并记录用户发送的注册信息进而实现微服务注册,以及通过建立不同的主题队列来完成调用微服务以及确保微服务注册正常,这样不但注册迅速方便,避免注册繁琐浪费资源,且在微服务注册后,可以实时获取到微服务的注册信息,不需要知道服务提供者的具体url地址,屏蔽了易变的地址信息,只需关注服务名、实例名和方法名就可以进行服务之间的调用。
附图说明
39.图1为本发明一实施例中基于主题队列的微服务注册与检测方法的步骤示意图;
40.图2为本发明一实施例中基于主题队列的微服务注册与检测装置的结构示意框图;
41.图3为本发明一实施例的计算机设备的结构示意框图。
42.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
43.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
44.参照图1,本实施例中的基于主题队列的微服务注册与检测方法,包括:
45.步骤s1:在注册中心建立指定的第一主题队列,并监听所述第一主题队列;
46.步骤s2:通过所述第一主题队列接收用户发送的指定注册信息,并将所述注册信息记录在预设的注册表中以完成微服务注册;
47.步骤s3:依据所述注册表的所述指定注册信息建立相应的第二主题队列以及第三主题队列,所述第二主题队列用于接收并存储对应所述注册表的查询请求,所述第三主题队列用于接收并存储检测信息;
48.步骤s4:通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态。
49.本实施例中,通过消息中间件来实现微服务的注册以及发现,通过检测监控微服务与注册中心之间的状态。具体如上述步骤s1所述:在需要注册微服务时,接收到用户输入的注册指令,然后依据注册指令,在注册中心建立指定的第一主题队列,该第一主题队列为discovery主题队列,用于接收用户发送的注册信息,建立discovery主题队列后,持续监听第一主题队列,以便确定是否能够接收到信息。
50.如上述步骤s2-s3所述,通过第一主题队列接收用户发送的指定注册信息,此处的用户可以为服务提供者,上述指定注册信息包括服务提供的远程调用所需的微服务名称、服务实例名称、服务状态、接口类名称等,当监听到第一主题队列接收到这些指定注册信息后,将这些注册信息记录在预设的注册表中,该注册表为服务注册表,即将注册信息维护到服务注册表中,从而完成服务注册,这样服务提供者在启动时不需要知道注册中心的具体url地址,也能实现注册,方便省事。在注册中心,可根据注册表的信息建立第二主题队列以及第三主题队列,此处的信息包括上述指定注册信息,使得新建立的第二主题队列和第三主题队列与上述注册的微服务关联,上述第二主题队列为对应上述服务注册表的registry
主题队列,用于接收并存储服务注册表的查询请求;上述第三主题队列为health主题队列,主要用于接收并存储检测信息,并根据检测信息对当前状态进行检查,以便分辨当前服务状态是否为正常的工作状态。
51.如上述步骤s4所述,服务提供者向第三主题队列发送检测信息,为了便于区分,此处将向第三主题队列发送的检测信息记为指定检测信息,该检测信息可以为用于检测微服务注册状态是否为正常状态的信息,例如用于检测上述注册的微服务是否为已正常注册或者注册出现异常,或者用于检测上述微服务为正常工作状态或非正常工作状态,注册中心可以根据检测的结果及时地更新微服务的状态。
52.在一个实施例中,上述步骤s4包括:
53.步骤s41:每隔预设时间通过所述第三主题队列接收一次所述检测心跳包;
54.步骤s42:当在所述预设时间内接收到所述检测心跳包,则判定所述微服务的注册状态为正常状态;
55.步骤s43:当在所述预设时间内未接收到所述检测心跳包,则判定所述微服务的注册状态为不正常状态。
56.本实施例中,上述指定检测信息为检测心跳包,每隔预设时间通过第三主题队列接收一次检测心跳包,在接收检测心跳包时通过预设的消息中间件建立一条用于消息通信的虚拟通道,该虚拟通道用于传输上述检测心跳包,同时可依据该检测心跳包确定当前的微服务注册状态,例如服务提供者定时发送检测心跳包至第三主题队列,若在该预设时间内接收到,则微服务的注册状态为正常状态,若在该预设时间内未接收到,如注册中心超过了15秒没有接收到服务提供者发的检测心跳包,则认为这个服务状态为不正常的。
57.在一个实施例中,上述步骤s4之后,包括:
58.步骤s5:通过所述第二主题队列接收用户输入的查询请求,依据所述查询请求获取所述指定注册信息;
59.步骤s6:依据所述指定注册信息到与所述指定注册信息相应的指定微服务,并调用所述指定微服务。
60.如上述步骤s5-s6所述,当用户需要调用微服务时,可通过发送用于调用微服务的查询请求来实现,上述用户可为服务消费者,这时服务消费者可向注册中心请求查询服务注册列表,也是通过向注册中心的registry主题队列发送查询请求,以获取需要调用的微服务的注册信息,具体而言,注册中心通过第二主题队列接收用户发送的预设的查询请求,该查询请求包括调用微服务的信息,该信息可以为确定某一微服务的身份信息,如id号等,或微服务名称及接口名称等,依据该查询请求可从注册表中查询匹配得到与该微服务对应的注册信息,从而根据该注册信息到相应的已注册的指定微服务,然后调用该指定微服务。这样各微服务之间通过第二主题队列进行通信,服务消费者不需要知道服务提供者的具体url信息,即可进行微服务之间的调用。
61.在一个实施例中,在调用上述指定微服务之前,可先选定服务实例,具体地,包括:
62.步骤61:获取所述注册表中各服务实例的调用信息,所述服务实例为微服务的执行载体;
63.步骤62:依据所述调用信息生成对应各所述服务实例的负载权重信息;
64.步骤63:依据所述负载权重信息选择出与所述指定微服务适配的所述服务实例。
65.本实施例中,可根据服务实例的负载情况来进行来选择适合的服务实例,上述服务实例为微服务的执行载体,此处的实例为本领域术语,如服务器等,具体如上述步骤s61-s63所述,首先从注册表中获取各服务实例的调用信息,由于每次调用均需要通过第二主题队列进行查询调用,并将调用的数据记录在注册表中,故可从注册表中获取各服务实例的调用信息,该调用信息为各服务实例的实际负载情况,具体包括被调用的次数、服务的cpu和内存的使用情况,以及每次调用所花的时间、当前处理请求的线程数量等因素信息,将这些因素信息发送至discovery主题队列,可将上述每一种信息作为权重的一个因素,进而根据这些因素信息生成对应各个服务器的负载权重信息,例如通过各因素打分得到各服务实例的负载分数,或者通过设定各因素的权重,再对分数进行加权求和得到的负载分数,分数越高当前可负载性能越好,然后依据上述负载权重信息选择出与指定微服务适配的服务实例,例如选择出负载分数最高的服务实例。
66.在一个实施例中,上述步骤63,包括:
67.步骤s631:依据所述负载权重信息更新所述注册表中的权重系数,所述权重系数为选择使用所述服务实例的优先级系数,所述注册表中每一所述服务实例分别对应一权重系数;
68.步骤s632:按所述权重系数从高至低选择与所述指定微服务适配的所述服务实例。
69.本实施例中,上述注册表中包括有权重系数,该权重系数为选择使用各服务实例的优先级系数,注册表记录中的每一服务实例分别对应一权重系数,此处的权重系数可以为上述负载分数,也可以为各因素占比平均分配后得到的系数,当获取到上述负载权重信息后,根据这些负载权重信息更新注册表中对应服务实例的权重系数,以使注册表中的数据时刻保持最新,且当后续需要调用指定微服务时,直接依据注册表中的权重系数选择出最优的服务实例即可,无需再运算一遍,当然,用户也可按实际需求自行在注册中心的配置中修改上述权重系数。更新完上述注册表后,可按照权重系数从高至低选择与指定微服务适配的服务实例,当只需要一个服务实例时,可选择权重系数最高的服务实例,当需要多个服务实例时,可按权重系数从高到低依次选择对应数量的服务实例,这样根据负载情况来选择适合的服务实例,实现了多实例之间的负载均衡。
70.在一个实施例中,在步骤s4之后,包括:
71.步骤s7:实时监听所述第二主题队列,以获取所述微服务的调用情况;
72.步骤s8:依据所述调用情况更新所述注册表。
73.本实施例中,可以依据监听数据实时更新注册表,以便服务消费者实时获取到相应的微服务信息,具体地,实时监听服务注册表的第二主题队列,即实时监听registry主题队列以获取调用微服务的调用情况,例如当服务提供者下线,限制调用微服务权限时,会将这些下线信息发送至第二主题队列以进行记录,进而更新上述注册表,以让服务消费者及时获得相关信息。例如当服务提供者集部署,启动多个服务实例时,会将这些启动信息发送至第二主题队列以进行记录,进而更新上述注册表,服务消费者通过更新后的注册表获取到相应更新信息。
74.参照图2,本实施例中提供一种基于主题队列的微服务注册与检测装置,该装置对应上述基于主题队列的微服务注册与检测方法,该装置包括:
75.第一建立单元100,用于在注册中心建立指定的第一主题队列,并监听所述第一主题队列;
76.注册服务单元200,用于通过所述第一主题队列接收用户发送的指定注册信息,并将所述注册信息记录在预设的注册表中以完成微服务注册;
77.第二建立单元300,用于依据所述注册表中的所述指定注册信息,建立相应的第二主题队列以及第三主题队列,所述第二主题队列用于接收并存储对应所述注册表的查询请求,所述第三主题队列用于接收并存储检测信息;
78.检测注册单元400,用于通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态。
79.本实施例中,通过消息中间件来实现微服务的注册以及发现,通过检测监控微服务与注册中心之间的状态。具体如上述第一建立单元100所述:在需要注册微服务时,接收到用户输入的注册指令,然后依据注册指令,在注册中心建立指定的第一主题队列,该第一主题队列为discovery主题队列,用于接收用户发送的注册信息,建立discovery主题队列后,持续监听第一主题队列,以便确定是否能够接收到信息。
80.如上述注册服务单元200及第二建立单元300所述,通过第一主题队列接收用户发送的指定注册信息,此处的用户可以为服务提供者,上述指定注册信息包括服务提供的远程调用所需的微服务名称、服务实例名称、服务状态、接口类名称等,当监听到第一主题队列接收到这些指定注册信息后,将这些注册信息记录在预设的注册表中,该注册表为服务注册表,即将注册信息维护到服务注册表中,从而完成服务注册,这样服务提供者在启动时不需要知道注册中心的具体url地址,也能实现注册,方便省事。在注册中心,可根据注册表的信息建立第二主题队列以及第三主题队列,此处的信息包括上述指定注册信息,使得新建立的第二主题队列和第三主题队列与上述注册的微服务关联,上述第二主题队列为对应上述服务注册表的registry主题队列,用于接收并存储服务注册表的查询请求;上述第三主题队列为health主题队列,主要用于接收并存储检测信息,并根据检测信息对当前状态进行检查,以便分辨当前服务状态是否为正常的工作状态。
81.如上述检测注册单元400所述,服务提供者向第三主题队列发送检测信息,为了便于区分,此处将向第三主题队列发送的检测信息记为指定检测信息,该检测信息可以为用于检测微服务注册状态是否为正常状态的信息,例如用于检测上述注册的微服务是否为已正常注册或者注册出现异常,或者用于检测上述微服务为正常工作状态或非正常工作状态,注册中心可以根据检测的结果及时地更新微服务的状态。
82.在一个实施例中,上述检测注册单元400包括:
83.接收测包单元,用于每隔预设时间通过所述第三主题队列接收一次所述检测心跳包;
84.第一判定单元,用于在所述预设时间内接收到所述检测心跳包,则判定所述微服务的注册状态为正常状态;
85.第二判定单元,用于在所述预设时间内未接收到所述检测心跳包,则判定所述微服务的注册状态为不正常状态。
86.本实施例中,上述指定检测信息为检测心跳包,每隔预设时间通过第三主题队列接收一次检测心跳包,在接收检测心跳包时通过预设的消息中间件建立一条用于消息通信
的虚拟通道,该虚拟通道用于传输上述检测心跳包,同时可依据该检测心跳包确定当前的微服务注册状态,例如服务提供者定时发送检测心跳包至第三主题队列,若在该预设时间内接收到,则微服务的注册状态为正常状态,若在该预设时间内未接收到,如注册中心超过了15秒没有接收到服务提供者发的检测心跳包,则认为这个服务状态为不正常的。
87.在一个实施例中,上述基于主题队列的微服务注册与检测装置,还包括:
88.查询服务单元,用于通过所述第二主题队列接收用户输入的查询请求,依据所述查询请求获取所述指定注册信息;
89.调用服务单元,用于依据所述指定注册信息到与所述指定注册信息相应的指定微服务,并调用所述指定微服务。
90.本实施例中,当用户需要调用微服务时,可通过发送用于调用微服务的查询请求来实现,上述用户可为服务消费者,这时服务消费者可向注册中心请求查询服务注册列表,也是通过向注册中心的registry主题队列发送查询请求,以获取需要调用的微服务的注册信息,具体而言,注册中心通过第二主题队列接收用户发送的预设的查询请求,该查询请求包括调用微服务的信息,该信息可以为确定某一微服务的身份信息,如id号等,或微服务名称及接口名称等,依据该查询请求可从注册表中查询匹配得到与该微服务对应的注册信息,从而根据该注册信息到相应的已注册的指定微服务,然后调用该指定微服务。这样各微服务之间通过第二主题队列进行通信,服务消费者不需要知道服务提供者的具体url信息,即可进行微服务之间的调用。
91.在一个实施例中,在调用上述指定微服务之前,可先选定服务实例,具体地,上述装置包括:
92.获取信息单元,用于获取所述注册表中各服务实例的调用信息,所述服务实例为微服务的执行载体;
93.调用权重单元,用于依据所述调用信息生成对应各所述服务实例的负载权重信息;
94.选择服务单元,用于依据所述负载权重信息选择出与所述指定微服务适配的所述服务实例。
95.本实施例中,可根据服务实例的负载情况来进行来选择适合的服务实例,上述服务实例为微服务的执行载体,此处的实例为本领域术语,如服务器等,具体如上述,首先从注册表中获取各服务实例的调用信息,由于每次调用均需要通过第二主题队列进行查询调用,并将调用的数据记录在注册表中,故可从注册表中获取各服务实例的调用信息,该调用信息为各服务实例的实际负载情况,具体包括被调用的次数、服务的cpu和内存的使用情况,以及每次调用所花的时间、当前处理请求的线程数量等因素信息,将这些因素信息发送至discovery主题队列,可将上述每一种信息作为权重的一个因素,进而根据这些因素信息生成对应各个服务器的负载权重信息,例如通过各因素打分得到各服务实例的负载分数,或者通过设定各因素的权重,再对分数进行加权求和得到的负载分数,分数越高当前可负载性能越好,然后依据上述负载权重信息选择出与指定微服务适配的服务实例,例如选择出负载分数最高的服务实例。
96.在一个实施例中,上述选择服务单元,包括:
97.更改注册子单元,用于依据所述负载权重信息更新所述注册表中的权重系数,所
述权重系数为选择使用所述服务实例的优先级系数,所述注册表中每一所述服务实例分别对应一权重系数;
98.选择实例子单元,用于按所述权重系数从高至低选择与所述指定微服务适配的所述服务实例。
99.本实施例中,上述注册表中包括有权重系数,该权重系数为选择使用各服务实例的优先级系数,注册表记录中的每一服务实例分别对应一权重系数,此处的权重系数可以为上述负载分数,也可以为各因素占比平均分配后得到的系数,当获取到上述负载权重信息后,根据这些负载权重信息更新注册表中对应服务实例的权重系数,以使注册表中的数据时刻保持最新,且当后续需要调用指定微服务时,直接依据注册表中的权重系数选择出最优的服务实例即可,无需再运算一遍,当然,用户也可按实际需求自行在注册中心的配置中修改上述权重系数。更新完上述注册表后,可按照权重系数从高至低选择与指定微服务适配的服务实例,当只需要一个服务实例时,可选择权重系数最高的服务实例,当需要多个服务实例时,可按权重系数从高到低依次选择对应数量的服务实例,这样根据负载情况来选择适合的服务实例,实现了多实例之间的负载均衡。
100.在一个实施例中,上述装置包括:
101.监听队列单元,用于实时监听所述第二主题队列,以获取所述微服务的调用情况;
102.更新情况单元,用于依据所述调用情况更新所述注册表。
103.本实施例中,可以依据监听数据实时更新注册表,以便服务消费者实时获取到相应的微服务信息,具体地,实时监听服务注册表的第二主题队列,即实时监听registry主题队列以获取调用微服务的调用情况,例如当服务提供者下线,限制调用微服务权限时,会将这些下线信息发送至第二主题队列以进行记录,进而更新上述注册表,以让服务消费者及时获得相关信息。例如当服务提供者集部署,启动多个服务实例时,会将这些启动信息发送至第二主题队列以进行记录,进而更新上述注册表,服务消费者通过更新后的注册表获取到相应更新信息。
104.参照图3,本发明实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储上述数据处理所需的所有数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于主题队列的微服务注册与检测方法。
105.上述处理器执行上述基于主题队列的微服务注册与检测方法的步骤:在注册中心建立指定的第一主题队列,并监听所述第一主题队列;通过所述第一主题队列接收用户发送的指定注册信息,并将所述注册信息记录在预设的注册表中以完成微服务注册;依据所述注册表中的所述指定注册信息,建立相应的第二主题队列以及第三主题队列,所述第二主题队列用于接收并存储对应所述注册表的查询请求,所述第三主题队列用于接收并存储检测信息;通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态。
106.在一个实施例中,上述指定检测信息包括检测心跳包,所述通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态的步骤,包括:每隔预设时间通过所述第三主题队列接收一次所述检测心跳包;当在所述预设时间内接收到所述检测心跳包,则判定所述微服务的注册状态为正常状态;当在所述预设时间内未接收到所述检测心跳包,则判定所述微服务的注册状态为不正常状态。
107.在一个实施例中,上述每隔预设时间通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定当前的微服务注册状态的步骤之后,包括:通过所述第二主题队列接收用户输入的查询请求,依据所述查询请求获取所述指定注册信息;依据所述指定注册信息到与所述指定注册信息相应的指定微服务,并调用所述指定微服务。
108.在一个实施例中,上述调用所述指定服务的步骤之前,包括:
109.获取所述注册表中各服务实例的调用信息,所述服务实例为微服务的执行载体;依据所述调用信息生成对应各所述服务实例的负载权重信息;依据所述负载权重信息选择出与所述指定微服务适配的所述服务实例。
110.在一个实施例中,上述依据所述负载权重信息选择与所述指定微服务适配的所述服务实例的步骤,包括:依据所述负载权重信息更新所述注册表中的权重系数,所述权重系数为选择使用所述服务实例的优先级系数,所述注册表中每一所述服务实例分别对应一权重系数;按所述权重系数从高至低选择与所述指定微服务适配的所述服务实例。
111.在一个实施例中,上述每隔预设时间通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定当前的微服务注册状态的步骤之后,包括:实时监听所述第二主题队列,以获取所述微服务的调用情况;依据所述调用情况更新所述注册表。
112.本领域技术人员可以理解,图3中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定。
113.本发明一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种基于主题队列的微服务注册与检测方法,具体为:在注册中心建立指定的第一主题队列,并监听所述第一主题队列;通过所述第一主题队列接收用户发送的指定注册信息,并将所述注册信息记录在预设的注册表中以完成微服务注册;依据所述注册表中的所述指定注册信息,建立相应的第二主题队列以及第三主题队列,所述第二主题队列用于接收并存储对应所述注册表的查询请求,所述第三主题队列用于接收并存储检测信息;通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态。
114.上述计算机可读存储介质,上述指定检测信息包括检测心跳包,所述通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态的步骤,包括:每隔预设时间通过所述第三主题队列接收一次所述检测心跳包;当在所述预设时间内接收到所述检测心跳包,则判定所述微服务的注册状态为正常状态;当在所述预设时间内未接收到所述检测心跳包,则判定所述微服务的注册状态为不正常状态。
115.在一个实施例中,上述每隔预设时间通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定当前的微服务注册状态的步骤之后,包括:通过所述第二主题队列接收用户输入的查询请求,依据所述查询请求获取所述指定注册信息;依据所述指定注册信息到与所述指定注册信息相应的指定微服务,并调用所述指定微服务。
116.在一个实施例中,上述调用所述指定服务的步骤之前,包括:
117.获取所述注册表中各服务实例的调用信息,所述服务实例为微服务的执行载体;依据所述调用信息生成对应各所述服务实例的负载权重信息;依据所述负载权重信息选择出与所述指定微服务适配的所述服务实例。
118.在一个实施例中,上述依据所述负载权重信息选择与所述指定微服务适配的所述服务实例的步骤,包括:依据所述负载权重信息更新所述注册表中的权重系数,所述权重系数为选择使用所述服务实例的优先级系数,所述注册表中每一所述服务实例分别对应一权重系数;按所述权重系数从高至低选择与所述指定微服务适配的所述服务实例。
119.在一个实施例中,上述每隔预设时间通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定当前的微服务注册状态的步骤之后,包括:实时监听所述第二主题队列,以获取所述微服务的调用情况;依据所述调用情况更新所述注册表。
120.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储与一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram一多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双速据率sdram(ssrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
121.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
122.以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

技术特征:


1.一种基于主题队列的微服务注册与检测方法,其特征在于,包括:在注册中心建立指定的第一主题队列,并监听所述第一主题队列;通过所述第一主题队列接收用户发送的指定注册信息,并将所述注册信息记录在预设的注册表中以完成微服务注册;依据所述注册表中的所述指定注册信息,建立相应的第二主题队列以及第三主题队列,所述第二主题队列用于接收并存储对应所述注册表的查询请求,所述第三主题队列用于接收并存储检测信息;通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态。2.根据权利要求1所述的基于主题队列的微服务注册与检测方法,其特征在于,所述指定检测信息包括检测心跳包,所述通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态的步骤,包括:每隔预设时间通过所述第三主题队列接收一次所述检测心跳包;当在所述预设时间内接收到所述检测心跳包,则判定所述微服务的注册状态为正常状态;当在所述预设时间内未接收到所述检测心跳包,则判定所述微服务的注册状态为不正常状态。3.根据权利要求1所述的基于主题队列的微服务注册与检测方法,其特征在于,所述每隔预设时间通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定当前的微服务注册状态的步骤之后,包括:通过所述第二主题队列接收用户输入的查询请求,依据所述查询请求获取所述指定注册信息;依据所述指定注册信息到与所述指定注册信息相应的指定微服务,并调用所述指定微服务。4.根据权利要求3所述的基于主题队列的微服务注册与检测方法,其特征在于,所述调用所述指定服务的步骤之前,包括:获取所述注册表中各服务实例的调用信息,所述服务实例为微服务的执行载体;依据所述调用信息生成对应各所述服务实例的负载权重信息;依据所述负载权重信息选择出与所述指定微服务适配的所述服务实例。5.根据权利要求4所述的基于主题队列的微服务注册与检测方法,其特征在于,所述依据所述负载权重信息选择与所述指定微服务适配的所述服务实例的步骤,包括:依据所述负载权重信息更新所述注册表中的权重系数,所述权重系数为选择使用所述服务实例的优先级系数,所述注册表中每一所述服务实例分别对应一权重系数;按所述权重系数从高至低选择与所述指定微服务适配的所述服务实例。6.根据权利要5所述的基于主题队列的微服务注册与检测方法,其特征在于,所述每隔预设时间通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定当前的微服务注册状态的步骤之后,包括:实时监听所述第二主题队列,以获取所述微服务的调用情况;依据所述调用情况更新所述注册表。
7.一种基于主题队列的微服务注册与检测装置,其特征在于,包括:第一建立单元,用于在注册中心建立指定的第一主题队列,并监听所述第一主题队列;注册服务单元,用于通过所述第一主题队列接收用户发送的指定注册信息,并将所述注册信息记录在预设的注册表中以完成微服务注册;第二建立单元,用于依据所述注册表中的所述指定注册信息,建立相应的第二主题队列以及第三主题队列,所述第二主题队列用于接收并存储对应所述注册表的查询请求,所述第三主题队列用于接收并存储检测信息;检测注册单元,用于通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态。8.根据权利要求7所述的基于主题队列的微服务注册与检测装置,其特征在于,所述指定检测信息包括检测心跳包,所述检测注册单元包括:接收测包单元,用于每隔预设时间通过所述第三主题队列接收一次所述检测心跳包;第一判定单元,用于在所述预设时间内接收到所述检测心跳包,则判定所述微服务的注册状态为正常状态;第二判定单元,用于在所述预设时间内未接收到所述检测心跳包,则判定所述微服务的注册状态为不正常状态。9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的基于主题队列的微服务注册与检测方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的基于主题队列的微服务注册与检测方法的步骤。

技术总结


本发明提出的基于主题队列的微服务注册与检测方法、装置、计算机设备和存储介质,其中方法包括:在注册中心建立指定的第一主题队列,并监听所述第一主题队列;通过所述第一主题队列接收用户发送的指定注册信息,并将所述注册信息记录在预设的注册表中以完成微服务注册;依据所述注册表中的所述指定注册信息,建立相应的第二主题队列以及第三主题队列,所述第二主题队列用于接收并存储对应所述注册表的查询请求,所述第三主题队列用于接收并存储检测信息;通过所述第三主题队列接收指定检测信息,并依据所述指定检测信息确定所述微服务的注册状态,这样不但注册迅速方便,避免注册繁琐浪费资源。册繁琐浪费资源。册繁琐浪费资源。


技术研发人员:

张怀庆 淡欣

受保护的技术使用者:

平安证券股份有限公司

技术研发日:

2021.06.07

技术公布日:

2022/12/22

本文发布于:2024-09-21 18:56:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/43723.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   队列   信息   主题
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议