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

一种云桌面的消息推送方法及装置与流程

2022-04-30 17:12:25 来源:中国专利 TAG:


1.本发明实施例涉及云桌面技术领域,尤其涉及一种云桌面的消息推送方法及装置。


背景技术:

2.云桌面管理系统中,从控制台向云桌面进行信令下发时,会把信令广播给所有客户端,由客户端来自行过滤属于自己的消息。这种广播的方式,在信令对应的目标客户端是极少数的情况下,会消耗大部分客户端额外的计算,同时占据其他应用的带宽,造成资源浪费。


技术实现要素:

3.本发明实施例提供了一种云桌面的消息推送方法及装置,用以解决现有技术中云桌面消息推送方案存在的资源浪费的问题。
4.第一方面,本发明实施例提供了一种云桌面的消息推送方法,在该方法中,消息中间件接收来自消息系统的下行消息;所述下行消息包括目标云桌面的标识;所述消息中间件与消费者集群中的每个云桌面保持第一长连接;
5.所述消息中间件根据所述目标云桌面的标识以及第一对应关系,确定第一目标长连接的标识;所述第一对应关系包括云桌面的标识与第一长连接的标识之间的对应关系;
6.所述消息中间件通过所述第一目标长连接的标识所标识的第一目标长连接向所述目标云桌面发送所述下行消息。
7.上述方案中,通过消息中间件转发来自消息系统的下行消息,而消息中间件与消费者集群中的每个云桌面保持第一长连接,消息中间件可以根据下行消息中携带的目标云桌面的标识以及第一对应关系,确定出消息中间件与目标云桌面之间的目标长连接的标识,然后有指向性的通过目标长连接对下行消息进行中转,到达目标云桌面,所以,上述方案不需要像现有技术中将下行消息广播给所有的云桌面,从而可以解决现有技术中云桌面消息推送方案存在的资源浪费的问题,节省带宽和计算资源,并且该方案具有较高的可移植性。
8.可选地,所述消息中间件接收来自消息系统的下行消息之前,该方法还包括:所述消息中间件建立与所述消费者集群中的每个云桌面之间的第一长连接;针对每个云桌面,将所述云桌面的标识、以及所述云桌面与所述消息中间件之间的第一长连接存储为一对键值对。通过该方案,通过第一长连接便于消息中间件与每个云桌面之间收发消息。
9.可选地,所述消息中间件接收来自消息系统的下行消息之后,还包括:
10.所述消息中间件将所述下行消息存储于内存中;
11.若所述消息中间件向所述目标云桌面发送所述下行消息之后的预设时长内未接收到来自所述目标云桌面的确认消息,则通过所述第一目标长连接再次向所述目标云桌面发送所述下行消息。
12.通过该方案,消息中间件将下行消息存储于内存中,可以保证消息中间件在发送下行消息失败时,还可以再次向目标云桌面发送该下行消息,即使是遇到网络波动等异常情况,也可以让下行消息不会丢掉,从而保证消息的可靠性。
13.可选地,所述消息系统包括至少一个主题,每个主题包括至少一个分区,所述消息中间件分别与所述消息系统包括的每个分区保持第二长连接;所述方法还包括:
14.所述消息中间件接收来自消费者集群中的第一云桌面的上行消息;所述上行消息包括所述第一云桌面的标识和待订阅主题;
15.所述消息中间件根据所述第一云桌面的标识和待订阅主题,确定目标分区的标识;
16.所述消息中间件根据所述目标分区的标识和第二对应关系,确定第二目标长连接的标识;所述第二对应关系包括分区的标识和第二长连接的标识;
17.所述消息中间件通过所述第二目标长连接的标识所标识的第二目标长连接向所述目标分区发送所述上行消息。
18.通过上述方案,第一云桌面需要订阅一个主题时,第一云桌面可以通过与消息中间件之间的第二长连接向待订阅主题的目标分区发送上行信息,从而可以保证消费的有序性。
19.可选地,所述消息中间件包括主线程和从线程;所述方法还包括:
20.当所述消息中间件接收到来自所述消费者集群的连接消息时,通过所述主线程处理所述连接消息;或者,当所述消息中间件接收到来自所述消费者集群的业务消息时,通过所述从线程处理所述业务消息;或者,当所述消息中间件接收到来自所述消息系统的业务消息时,通过所述从线程处理所述业务消息。
21.通过上述方案,通过消息中间件中的主线程和从线程,可以分别处理不同类型的消息,避免一个线程处理所有消息而出现拥堵的情况,从而可以保证高吞吐和低延迟。
22.可选地,所述消息中间件为基于netty的消息中间件,所述消息中间件包括多个节点。通过该方案,基于netty的消息中间件可以包括一个或多个节点,扩展到多个节点可以保证高可用性,能支持更多的连接,而且netty的虚拟能力高,可以保证高吞吐。
23.可选地,所述消息系统为kafka消息系统。
24.第二方面,本发明实施例还提供了一种云桌面的消息推送装置,包括:
25.接收单元,用于接收来自消息系统的下行消息;所述下行消息包括目标云桌面的标识;所述消息推送装置与消费者集群中的每个云桌面保持第一长连接;
26.处理单元,用于根据所述目标云桌面的标识以及第一对应关系,确定第一目标长连接的标识;所述第一对应关系包括云桌面的标识与第一长连接的标识之间的对应关系;
27.发送单元,用于通过所述第一目标长连接的标识所标识的第一目标长连接向所述目标云桌面发送所述下行消息。
28.可选地,所述处理单元,还用于:建立与所述消费者集群中的每个云桌面之间的第一长连接;针对每个云桌面,将所述云桌面的标识、以及所述云桌面与所述消息中间件之间的第一长连接存储为一对键值对。
29.可选地,所述处理单元,还用于:
30.将所述下行消息存储于内存中;
31.所述发送单元,还用于:
32.若向所述目标云桌面发送所述下行消息之后的预设时长内,所述接收单元未接收到来自所述目标云桌面的确认消息,则通过所述第一目标长连接再次向所述目标云桌面发送所述下行消息。
33.可选地,所述消息系统包括至少一个主题,每个主题包括至少一个分区,所述消息中间件分别与所述消息系统包括的每个分区保持第二长连接;所述接收单元,还用于:
34.接收来自消费者集群中的第一云桌面的上行消息;所述上行消息包括所述第一云桌面的标识和待订阅主题;
35.所述处理单元,还用于:
36.根据所述第一云桌面的标识和待订阅主题,确定目标分区的标识;根据所述目标分区的标识和第二对应关系,确定第二目标长连接的标识;所述第二对应关系包括分区的标识和第二长连接的标识;
37.所述发送单元,还用于:
38.通过所述第二目标长连接的标识所标识的第二目标长连接向所述目标分区发送所述上行消息。
39.可选地,所述消息推送装置包括主线程和从线程;处理单元,还用于:
40.当所述消息中间件接收到来自所述消费者集群的连接消息时,通过所述主线程处理所述连接消息;或者,当所述消息中间件接收到来自所述消费者集群的业务消息时,通过所述从线程处理所述业务消息;或者,当所述消息中间件接收到来自所述消息系统的业务消息时,通过所述从线程处理所述业务消息;
41.可选地,所述消息中间件为基于netty的消息中间件,所述消息中间件包括多个节点。
42.可选地,所述消息系统为kafka消息系统。
43.第三方面,本发明实施例提供一种计算设备,包括:
44.存储器,用于存储程序指令;
45.处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行云桌面的消息推送方法。
46.第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行云桌面的消息推送方法。
附图说明
47.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
48.图1为现有技术中系统架构示意图;
49.图2为本发明实施例提供的一种系统架构的示意图;
50.图3为本发明实施例提供的一种云桌面的消息推送方法的流程示意图;
51.图4为本发明实施例提供的云桌面的消息推送装置示意图;
52.图5为本发明实施例提供的云桌面的消息推送装置示意图。
具体实施方式
53.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
54.目前,云桌面管理系统如图1所示,控制台可以管理kafka消费组,kafka消费组内的所有消费者协调在一起来消费订阅主题(topics)的所有分区,每个分区只能由同一个消费组内的一个消费者来消费。每个云桌面作为一个kafka消费组订阅主题,例如图1中云桌面1(即虚拟机vm1)作为一个消费者组,如果订阅的一个主题(例如主题1)有3个分区,且3个分区分别分布在3台物理机上,那么对于下行消息的场景,每个云桌面至少要和kafka消息系统中的一个主题建立3个连接。当kafka消息系统中的多个分区分布在p台物理机上,虚拟机个数为m时,那么需要建立的连接数为pm。
55.当控制台需要给目标云桌面发送异步指令时,例如目标云桌面为云桌面1时,为了保证云桌面1可以收到该异步指令,消息会被广播到所有云桌面,也就是说,云桌面1、云桌面2、云桌面3都会受到该异步指令,然后由各个云桌面自行过滤属于自己的消息。这种广播的方式,如果该异步指令的目标云桌面是极少数量的云桌面的情况下,会消耗大部分客户端额外的计算,同时占据其他应用的带宽,造成资源浪费。
56.为此,本发明提供一种云桌面的消息推送方法,通过有指向性向目标云桌面发送下行消息,解决现有技术中云桌面消息推送方案存在的资源浪费的问题,达到节省带宽和计算资源的效果,并且该方案具有较高的可移植性。
57.图2为本发明实施例提供的一种系统架构。如图2所示,该系统架构可以包括控制台、消息系统、消息中间件(cloudhub)和消费者集群。
58.消息系统以如图2中所示的kafka消息系统为例进行说明,kafka消息系统包括至少一个主题,每个主题包括至少一个分区,至少一个分区可以分布在至少一个物理机上,每个物理可以布置一个分区。图2中以一个主题包括3个分区为例进行示例。本技术实施例中涉及的“至少一个”表示一个或多个。
59.消费者集群包括至少一个云桌面,云桌面也可以看做图2中的虚拟机vm,如图2中示出3个云桌面。
60.消息中间件与消费者集群中的每个云桌面保持第一长连接,消息中间件分别与所述消息系统包括的每个分区保持第二长连接。当kafka消息系统中的至少一个分区分布在p台物理机上,消费的主题数为n,云桌面个数为m时,需要建立的连接数为p m。该系统架构中,使用单独的消息推送进程替代kafka直接与云桌面通信,可大幅度减少总体连接数,节约带宽,节省网络资源。
61.消息中间件以如图2所示的cloudhub进程实例为例,包括分发器(dispatcher)、处理线程(channel)和连接线程(selector),其中,处理线程(channel)可以处理业务消息,业务消息为与业务相关的消息,例如读写消息,连接线程(selector)用来处理连接消息,连接
消息为与消息中间件与云桌面之间的长连接相关的消息,例如心跳消息。
62.消息中间件在接收到上行消息或下行消息时,可以将上行消息或下行消息存储于内存(redis)中,如果消息中间件包括多个节点,多个节点还可以共用redis,redis还可以存储多个节点的信息。
63.本发明实施例中,一个cloudhub进程实例作为kafka消息系统的一个消费者组,把消费到的kafka消息转发给云桌面。当控制台向目标云桌面发出异步指令时,cloudhub进程实例从内存中找到中间件与目标云桌面之间的长连接,通过找到的长连接进行消息推送。
64.本发明实施例中,cloudhub基于netty实现应用通信,使用异步驱动的reactor模式来构建线程模型,同时利用较少的内存复制,保证高吞吐和低延迟的特性。
65.需要说明的是,上述图2所示的结构仅是一种示例,本发明实施例对此不做限定。
66.基于图2所示系统架构,图3示例性的示出了本发明实施例提供的一种云桌面的消息推送方法流程示意图,该方法流程可以由消息推送装置执行,该装置可以位于如图2所示消息中间件内,也可以是该消息中间件。
67.如图3所示,该方法流程可以包括:
68.步骤301,消息中间件接收来自消息系统的下行消息。
69.其中,下行消息包括目标云桌面的标识,消息中间件与消费者集群中的每个云桌面保持第一长连接。
70.示例性的,消息系统可以为kafka消息系统,消息中间件可以为基于netty的消息中间件,消息中间件可以包括一个或多个节点,当消息中间件扩展到多个节点可以保证高可用性,能支持更多的连接,而且netty的虚拟能力高,可以保证高吞吐。
71.步骤302,消息中间件根据目标云桌面的标识以及第一对应关系,确定第一目标长连接的标识。
72.其中,第一对应关系包括云桌面的标识与第一长连接的标识之间的对应关系。
73.步骤303,消息中间件通过第一目标长连接的标识所标识的第一目标长连接向目标云桌面发送下行消息。
74.上述方案中,通过消息中间件转发来自消息系统的下行消息,而消息中间件与消费者集群中的每个云桌面保持第一长连接,消息中间件可以根据下行消息中携带的目标云桌面的标识以及第一对应关系,确定出消息中间件与目标云桌面之间的目标长连接的标识,然后有指向性的通过目标长连接对下行消息进行中转,到达目标云桌面,所以,上述方案不需要像现有技术中将下行消息广播给所有的云桌面,从而可以解决现有技术中云桌面消息推送方案存在的资源浪费的问题,节省带宽和计算资源,并且该方案具有较高的可移植性。
75.一种可实施的方式中,在步骤301中的消息中间件接收来自消息系统的下行消息之前,所述消息中间件还可以建立与所述消费者集群中的每个云桌面之间的第一长连接;针对每个云桌面,将所述云桌面的标识、以及所述云桌面与所述消息中间件之间的第一长连接存储为一对键值对。如果消费者集群中包括m个云桌面,那么消费者集群与消息中间件之间就有m个第一长连接,这样就可以存储m对键值对,这m对键值对可以存储于内存中。如此,通过第一长连接便于消息中间件与每个云桌面之间收发消息。
76.一种可实施的方式中,在步骤301中的消息中间件接收来自消息系统的下行消息
之后,消息中间件还可以将下行消息存储于内存中。
77.如果消息中间件向目标云桌面发送下行消息之后的预设时长内接收到来自目标云桌面的确认(ack)消息,则可以从内存中删除该下行消息。
78.如果消息中间件向目标云桌面发送下行消息之后的预设时长内未接收到来自目标云桌面的确认消息,则通过第一目标长连接再次向目标云桌面发送下行消息。在其它一些实施例中,也可以通过第一目标长连接以固定间隔向目标云桌面重发该下行消息。如此,可以保证消息中间件在发送下行消息失败时,还可以再次向目标云桌面发送该下行消息,即使是遇到网络波动等异常情况,也可以让下行消息不会丢掉,从而保证消息的可靠性。
79.上述步骤301中,消息系统包括至少一个主题,每个主题包括至少一个分区,消息中间件分别与消息系统包括的每个分区保持第二长连接,如果消息系统中包括p个分区,那么消息系统与消息中间件之间就有p个第二长连接。
80.当云桌面需要订阅消息系统中的主题时,可以通过消息中间件向消息系统转发上行消息,通过消息中间件与分区之间的第二长连接向待订阅主题的目标分区发送上行信息,从而可以保证消费的有序性。
81.一种可实施的方式中,消息中间件接收来自消费者集群中的第一云桌面的上行消息,上行消息包括第一云桌面的标识和待订阅主题。然后,消息中间件根据第一云桌面的标识和待订阅主题,确定目标分区的标识,根据目标分区的标识和第二对应关系,确定第二目标长连接的标识;再通过第二目标长连接的标识所标识的第二目标长连接向目标分区发送上行消息。其中,第二对应关系包括分区的标识和第二长连接的标识。
82.本发明实施例中,保留图1所示方案中的原有kafka消息系统的使用,把原有kafka消息系统的主题封装到新的消息协议中,在保证高吞吐、低延时、数据传输高可靠的基础上,也降低了改造带来的开发成本,具有较高的延展性和可移植性。
83.一种可实施的方式中,上述消息中间件可以包括主线程和从线程,其中,主线程例如为上述图2中的连接线程(selector),从线程例如为上述图2中的处理线程(channel)。
84.当消息中间件接收到来自消费者集群的连接消息时,通过主线程处理连接消息。
85.当消息中间件接收到来自消费者集群的业务消息时,通过从线程处理业务消息。
86.当消息中间件接收到来自消息系统的业务消息时,通过从线程处理业务消息。
87.本技术实施例中,通过消息中间件中的主线程和从线程,可以分别处理不同类型的消息,避免一个线程处理所有消息而出现拥堵的情况,从而可以保证高吞吐和低延迟,可以提升云桌面用户的使用体验。
88.示例性的,kafka消息系统配置为3个实例的集群,cloudhub中间件所在物理机配置为8核32g,操作系统采用centos linux release 7.6.1810(core),在单实例条件下,可以支持200万云桌面客户端连接,业务处理可达到20000tps。
89.基于相同的技术构思,图4示例性的示出了本发明实施例提供的一种云桌面的消息推送装置,该装置可以执行云桌面的消息推送方法的流程。
90.如图4所示,该装置包括:
91.接收单元401,用于接收来自消息系统的下行消息;所述下行消息包括目标云桌面的标识;所述消息推送装置与消费者集群中的每个云桌面保持第一长连接;
92.处理单元402,用于根据所述目标云桌面的标识以及第一对应关系,确定第一目标
长连接的标识;所述第一对应关系包括云桌面的标识与第一长连接的标识之间的对应关系;
93.发送单元403,用于通过所述第一目标长连接的标识所标识的第一目标长连接向所述目标云桌面发送所述下行消息。
94.可选地,所述处理单元402,还用于:建立与所述消费者集群中的每个云桌面之间的第一长连接;针对每个云桌面,将所述云桌面的标识、以及所述云桌面与所述消息中间件之间的第一长连接存储为一对键值对。
95.可选地,所述处理单元402,还用于:
96.将所述下行消息存储于内存中;
97.所述发送单元403,还用于:
98.若向所述目标云桌面发送所述下行消息之后的预设时长内,所述接收单元401未接收到来自所述目标云桌面的确认消息,则通过所述第一目标长连接再次向所述目标云桌面发送所述下行消息。
99.可选地,所述消息系统包括至少一个主题,每个主题包括至少一个分区,所述消息中间件分别与所述消息系统包括的每个分区保持第二长连接;所述接收单元401,还用于:
100.接收来自消费者集群中的第一云桌面的上行消息;所述上行消息包括所述第一云桌面的标识和待订阅主题;
101.所述处理单元402,还用于:
102.根据所述第一云桌面的标识和待订阅主题,确定目标分区的标识;根据所述目标分区的标识和第二对应关系,确定第二目标长连接的标识;所述第二对应关系包括分区的标识和第二长连接的标识;
103.所述发送单元403,还用于:
104.通过所述第二目标长连接的标识所标识的第二目标长连接向所述目标分区发送所述上行消息。
105.可选地,所述消息推送装置包括主线程和从线程;处理单元402,还用于:
106.当所述消息中间件接收到来自所述消费者集群的连接消息时,通过所述主线程处理所述连接消息;或者,当所述消息中间件接收到来自所述消费者集群的业务消息时,通过所述从线程处理所述业务消息;或者,当所述消息中间件接收到来自所述消息系统的业务消息时,通过所述从线程处理所述业务消息;
107.可选地,所述消息中间件为基于netty的消息中间件,所述消息中间件包括多个节点。
108.可选地,所述消息系统为kafka消息系统。
109.在上述各实施例的基础上,本技术实施例还提供了一种云桌面的消息推送装置,该消息推送装置可以为如图5所示,该消息推送装置包括:处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信。
110.在一个示例中,存储器503中存储有计算机程序,当程序被处理器501执行时,使得处理器501执行云桌面的消息推送装置执行的步骤。
111.通信接口502用于上述电子设备与其他设备之间的通信。
112.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
113.上述处理器可以是通用处理器,包括中央处理器、网络处理器(network processor,np)等;还可以是数字指令处理器(digital signal processing,dsp)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
114.基于相同的技术构思,本发明实施例提供一种计算设备,包括:
115.存储器,用于存储程序指令;
116.处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行数据异常检测方法。
117.在上述各实施例的基础上,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行数据异常检测方法。
118.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
119.本发明是参照根据本发明的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
120.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
121.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
122.尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
123.显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献