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

基于消息队列的数据处理方法、装置、设备及存储介质与流程

2022-06-05 11:11:48 来源:中国专利 TAG:


1.本发明涉及通信技术领域,尤其涉及一种基于消息队列的数据方法、装置、设备以及计算机可读存储介质。


背景技术:

2.mq(message queue,消息队列)是基础数据结构中“先进先出”的一种数据结构。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——即生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队列拉取消息,或者订阅相应的队列,由mq服务端来推送消息。
3.由于mq自身擅长的是缓存数据,其主要用于在出现宕机等情形时能够保证传输中的数据不丢失,从而提升通信的稳定性及安全性;而mq自身处理数据的性能并不强大,在高并发业务场景时,容易出现由于mq的数据处理能力不足造成的运行负载过大的问题,导致数据处理卡顿。
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.图1为本发明mq集群整体架构示意图;
33.图2为本发明实施例涉及的基于消息队列的数据处理设备的硬件架构示意图;
34.图3为本发明基于消息队列的数据处理方法的第一实施例的流程示意图;
35.图4为本发明基于消息队列的数据处理方法的第二实施例的流程示意图;
36.图5为本发明基于消息队列的数据处理方法的第三实施例中步骤s20的细化流程示意图;
37.图6为本发明基于消息队列的数据处理方法的第四实施例的流程示意图
38.图7为本发明基于消息队列的数据处理方法的第五实施例中步骤s30的细化流程示意图;
39.图8为本发明基于消息队列的数据处理方法的第六实施例的流程示意图;
40.图9为本发明基于消息队列的数据处理装置的架构示意图。
41.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
42.应当理解,本发明的附图中显示了本发明的示例性实施例,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
43.ibm mq自带集群功能,同时实现负载均衡,它主要使用共享队列机制来实现,但在高并发业务场景时,存在性能瓶颈。本发明的目的在于提出并实现一种基于多进程程序实现mq集群方案,集群路由和负载均衡功能交由多进程的类网关处理程序独立处理,程序采用多进程模式,进程数随业务量大小同步增减,尽可能提高资源利用率和系统处理能力,从而提高mq集群处理性能。使mq回归到它擅长的通信稳定性及安全性方向,解决ibm mq自带集群性能瓶颈问题。
44.参考图1,图1为本发明mq集群整体架构示意图,mq集群采用集群路由/负载均衡、消息通讯分离的设计模式,由两部分组成,分别是类网关处理程序和mq中间通讯件。类网关处理程序中的mq队列管理器建立类网关本地接收队列和节点1远程队列、节点2远程队列、节点3远程队列;节点1队列管理器建立节点1本地接收队列、类网关远程接收队列;节点2队列管理器建立节点2本地接收队列、类网关远程接收队列;节点3队列管理器建立节点3本地接收队列、类网关远程接收队列;实现类网关处理程序和节点1、节点2、节点3的双向通讯。
45.类网关处理程序负责消息的路由及负载均衡,当外部消息发送到类网关mq的接收队列时,类网关处理程序采用随机法均衡的向三个节点的远程队列转发消息,达到路由及负载均衡目的。程序采用多进程模式,进程数随业务量大小同步增减,尽可能提高资源利用率和系统处理能力,从而提高mq集群处理性能。
46.此外,类网关处理程序定时向节点1、节点2、节点3发送通讯探测报文,如某个节点宕机时,类网关处理程序通过负载均衡策略自动删除此节点,剩余两个节点代替宕机节点工作,以实现集群的高可用。
47.当业务量增长,mq集群内部需要扩展时,只需增加应用节点服务器,配置和类网关处理程序的mq双向通讯即可,以提高整个系统的扩展性。
48.作为一种实现方案,基于消息队列的数据处理设备可以如图2所示。
49.本发明实施例方案涉及的是基于消息队列的数据处理设备,所述基于消息队列的数据处理设备包括:处理器101,例如cpu,存储器102,通信总线103。其中,通信总线103用于实现这些组件之间的连接通信。
50.存储器102可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。如图2所示,作为一种计算机可读存储介质的存储器102中可以包括基于消息队列的数据处理程序;而处理器101可以用于调用存储器102中存储的基于消息队列的数据处理程序,并执行以下操作:
51.获取本地消息队列中的数据;
52.在获取所述本地消息队列中的数据之后,根据预设频率向服务器节点发送探测报文,并根据所述服务器节点返回的确定请求报文确定所述服务器节点的负载状态;
53.根据所述负载状态将所述数据通过远程节点队列分配至所述服务器节点中缓存。
54.在一实施例中,处理器101可以用于调用存储器102中存储的基于消息队列的数据处理程序,并执行以下操作:
55.确定所述服务器节点的负载状态是否为正常状态;
56.若所述负载状态为所述正常状态,则允许所述数据分配至所述服务器节点;否则,不允许所述数据分配至所述服务器节点。
57.在一实施例中,处理器101可以用于调用存储器102中存储的基于消息队列的数据处理程序,并执行以下操作:
58.向所述服务器节点的端口按照预设频率发送所述探测报文;
59.若所述端口在预设时间内返回所述确定请求报文,则判断所述负载状态为所述正常状态。
60.在一实施例中,处理器101可以用于调用存储器102中存储的基于消息队列的数据处理程序,并执行以下操作:
61.当所述端口在所述预设时间内未返回所述确定请求报文时,判断所述负载状态为非正常状态;
62.当所述负载状态为非正常状态时,将所述服务器节点删除,并调用其它服务器节点代替所述服务器节点工作,其中,所述其它服务器节点为所述负载状态为所述正常状态的服务器节点。
63.在一实施例中,处理器101可以用于调用存储器102中存储的基于消息队列的数据处理程序,并执行以下操作:
64.获取所述服务器节点的所述负载状态;
65.根据所述负载状态,并通过负载均衡算法将所述数据通过远程节点队列分配至所述服务器节点中缓存。
66.在一实施例中,处理器101可以用于调用存储器102中存储的基于消息队列的数据处理程序,并执行以下操作:
67.当所述服务器节点的负载状态处于所述非正常状态时,确定所述服务器节点中的数据大小是否超过预设阈值;
68.当所述服务器节点的数据大小超过所述预设阈值时,判断为所述服务器节点处于
饱和状态,则增加所述服务器节点。
69.基于上述基于通信技术的基于消息队列的数据处理设备的硬件架构,提出本发明基于消息队列的数据处理方法的实施例。
70.参照图3,在第一实施例中,所述基于消息队列的数据处理方法包括以下步骤:
71.步骤s10:获取本地消息队列中的数据;
72.在本实施例中,首先将消息队列设置成通讯模式(该模式下消息队列仅用于缓存数据,而不做处理),本地消息队列存储有本地端口接收到的数据,在这一步骤中,获取所述本地消息队列中的数据意味着将该队列中的数据转移到本技术的类网关处理程序中来进行后续的处理。
73.步骤s20:在获取所述本地消息队列中的数据之后,根据预设频率向服务器节点发送探测报文,并根据所述服务器节点返回的确定请求报文确定所述服务器节点的负载状态;
74.在本实施例中,类网关处理程序在获取所述本地消息队列中的数据之后,按照一定的预设频率向mq集群中的服务器节点发送探测报文,并根据所述服务器节点返回的确定请求报文确定所述服务器节点的负载状态,负载状态是体现服务器节点运行负荷的一种量化状态,通常负载状态值越小意味着该服务器运行负荷越小,即所述服务器节点的处理数据能力越强,本步骤中通过获取本地消息队列的数据之后,再确定用于接收所述消息的各个服务器节点的运行负荷,以便所述类网关处理程序根据所述服务器节点的负载状态来确定分配数据的优先级。
75.步骤s30:根据所述负载状态将所述数据通过远程节点队列分配至所述服务器节点中进行处理。
76.在本实施例中,在确定完所述负载状态之后,将本地端口的数据通过预先搭建的远程节点队列配至远端的服务器节点中进行处理,以实现集群路由和负载均衡功能交由多进程类网关处理程序独立处理,并使mq回归到它擅长的通信稳定性及安全性方向。
77.在本实施例提供的技术方案中,通过搭建一个mq集群,mq集群包括类网关处理程序和mq中间通讯件两部分构成,mq中间通讯件作为一个连接通道,用于传输数据,而类网关处理程序则是用于处理数据。通过搭建mq集群这一架构,使传统的消息队列不再对消息队列进行处理,使得所述消息队列专注于其数据缓存,将处理数据这一项工作转移到本实施例中所搭建的mq集群中。
78.参照图4,基于第一实施例,在第二实施例中,所述步骤s10之后,还包括:
79.步骤s40:确定所述服务器节点的负载状态是否为正常状态;
80.步骤s50:若所述负载状态为所述正常状态,则允许所述数据分配至所述服务器节点;否则,不允许所述数据分配至所述服务器节点。
81.可选地,本实施例提供一种确定服务器节点的负载状态的方式,在本实施例中,将负载状态分为正常状态和除正常状态以外的其它非正常状态,在本实施例中,通过确定所述服务器节点是否处于正常状态,在所述服务器节点不满足所述正常状态条件时则均判定为所述非正常状态。在正常状态下意味着服务器节点可以正常处理类网关处理程序发送的数据,反之不能正常处理。
82.在本实施例提供的技术方案中,通过限定服务器节点处于正常状态的条件,使得
类网关程序在确定所述服务器节点是否可供分配数据之后再向所述服务器节点发送数据,其也作为一种处理数据的方式,避免了由于服务器节点出现无法处理数据的异常情况而造成的数据损失,提升了数据处理的效率。
83.参照图5,基于第一实施例,在第三实施例中,所述步骤s20包括:
84.步骤s21:向所述服务器节点的端口按照预设频率发送所述探测报文;
85.步骤s22:若所述端口在预设时间内返回所述确定请求报文,则判断所述负载状态为所述正常状态。
86.可选地,本实施例提供一种判断服务器节点是否为正常状态的方式,为了监控健康的服务器,健康检查一般会通过配置的协议和端口尝试去连接服务器来保证服务器正在监听,健康检查用于检查服务器开放的各种服务的可用状态。负载均衡设备一般会配置各种健康检查方法,例如ping,tcp,udp,http,ftp,dns等。负载均衡设备检查到这台服务器的80端口是down的,负载均衡设备将不把后面的连接转发到这台服务器,而是根据算法将数据包转发到别的服务器。创建健康检查时可以设定检查的间隔时间和尝试次数,例如设定间隔时间为5秒,尝试次数为3,那么负载均衡设备每隔5秒发起一次健康检查,如果检查失败,则尝试3次,如果3次都检查失败,则把该服务标记为down,然后服务器仍然会每隔5秒对down的服务器进行检查,当某个时刻发现该服务器健康检查又成功了,则把该服务器重新标记为up。健康检查的间隔时间和尝试次数要根据综合情况来设置,原则是既不会对业务产生影响,又不会对负载均衡设备造成较大负担。
87.在本实施例提供的技术方案中,通过向服务器节点发送探测报文,并在预设时间内接收到服务器节点返回的探测报文来判断服务器负载状态正常,提升了数据处理的效率。
88.参照图6,基于第一实施例,在第四实施例中,所述步骤s21之后,还包括:
89.步骤s60:当所述端口在所述预设时间内未返回所述确定请求报文时,判断所述负载状态为非正常状态;
90.步骤s70:当所述负载状态为非正常状态时,将所述服务器节点删除,并调用其它服务器节点代替所述服务器节点工作,其中,所述其它服务器节点为所述负载状态为所述正常状态的服务器节点。
91.可选地,本实施例提供一种当负载状态处于非正常状态时的处理方式,在本实施例中,所述确定请求报文是服务器节点在接收到所述探测报文时向类网关处理程序返回的一种用于证明服务器和类网关处理程序之间建立了通讯请求的连接标识,当服务器节点的端口超过预设时间未返回所述确定请求报文,判断为所述服务器节点的负载状态为非正常状态,在本实施例中,当所述负载状态为非正常状态时,类网关处理程序中的控制程序将所述服务器节点删除,需要强调的是,这里的删除服务器节点是指将该服务器节点从类网关处理程序的可选节点列表中删除,即暂时将该服务器节点作为不可选节点,不将消息队列中的数据发送至所述服务器节点中,同时,类网关处理程序仍然按照预设频率向所述服务器节点端口发送探测报文,当所述服务器节点能够重新在预设时间内向类网关处理程序返回确定请求报文时,则将服务器节点重新加入到类网关处理程序的可选节点列表中。
92.在本实施例提供的技术方案中,当所述端口在所述预设时间内未返回所述确定请求报文时,判断所述负载状态为非正常状态,并且当所述负载状态为非正常状态时,将所述
服务器节点删除,并调用其它服务器节点代替所述服务器节点工作,提升了数据处理的效率。
93.参照图7,基于第一实施例,在第五实施例中,所述步骤s30包括:
94.步骤s31:获取所述服务器节点的所述负载状态;
95.步骤s32:根据所述负载状态,并通过负载均衡算法将所述数据通过远程节点队列分配至所述服务器节点中缓存。
96.可选地,本实施例提供一种根据负载状态来向服务器节点分配数据的方式,在确定完所述服务器节点状态之后,类网关处理程序获取所述服务器节点的负载状态数值,并通过负载均衡算法将数据通过远程节点队列分配至所述服务器节点中缓存,负载均衡算法是一种根据服务器状态,将请求/数据均匀分摊到多个操作单元上执行的一种算法,常见的负载均衡算法包括加权轮询、加权最小连接、加权最小连接等算法。
97.在本实施例提供的技术方案中,通过外部消息发送到类网关处理程序的mq的接收队列时,类网关处理程序采用随机法均衡的向三个节点的远程队列转发消息,达到路由及负载均衡目的,提高了数据处理的效率。
98.参照图8,基于第一实施例,在第六实施例中,所述步骤s30之后,还包括:
99.步骤s80:当所述服务器节点的负载状态处于所述非正常状态时,确定所述服务器节点中的数据大小是否超过预设阈值;
100.步骤s90:当所述服务器节点的数据大小超过所述预设阈值时,判断为所述服务器节点处于饱和状态,则增加所述服务器节点。
101.可选地,本实施例提供一种当服务器节点的负载状态处于所述非正常状态的处理方式。具体的,当所述负载状态处于所述非正常状态时,类网关处理程序获取当前该服务器节点的数据大小,当所述数据大小超过类网关处理程序中的预设阈值时,判断为所述服务器节点处于饱和状态,即所述服务器节点处于负荷较重的运行状态,此时可以通过配置和类网关处理程序的mq双向通讯队列,这一过程中对外部系统来说是透明的,提高了整个系统的扩展性。
102.在本实施例提供的技术方案中,通过设定一个判断阈值来判断服务器节点是否处于饱和状态,以此来扩展服务器节点的个数,避免服务器节点因为负载过高而降低了数据处理效率。
103.此外,参照图9,本实施例还提出一种基于消息队列的数据处理装置,所述基于消息队列的数据处理装置包括:
104.数据获取模块100,用于获取消息队列中的数据;
105.数据处理模块200,用于根据预设频率向服务器节点发送探测报文,并根据所述服务器节点返回的确定请求报文确定所述服务器节点的负载状态;
106.数据缓存模块300,用于根据所述负载状态将所述数据通过远程节点队列分配至所述服务器节点中缓存。
107.此外,本发明还提供一种基于消息队列的数据处理设备,所述基于消息队列的数据处理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于消息队列的数据处理程序,所述基于消息队列的数据处理程序被所述处理器执行时实现如上任一项所述的基于消息队列的数据处理方法的各个步骤。
108.此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有基于消息队列的数据处理程序,所述基于消息队列的数据处理程序被处理器执行时实现如上实施例所述的基于消息队列的数据处理方法的各个步骤。
109.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
110.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个计算机可读存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
111.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

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

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

相关文献