CN109491810B - 可扩展的多时效等级消息转发的方法和系统 - Google Patents
可扩展的多时效等级消息转发的方法和系统 Download PDFInfo
- Publication number
- CN109491810B CN109491810B CN201811382799.XA CN201811382799A CN109491810B CN 109491810 B CN109491810 B CN 109491810B CN 201811382799 A CN201811382799 A CN 201811382799A CN 109491810 B CN109491810 B CN 109491810B
- Authority
- CN
- China
- Prior art keywords
- message
- message queue
- data
- queue
- margin
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Abstract
本发明公开了一种可扩展的多时效等级消息转发的方法和系统,包括:获取步骤,包括:从数据源获取消息数据;判断步骤,包括:根据消息数据的参数,判断消息数据的时效性等级;发送步骤,包括:根据判断结果,将消息数据依据时效性等级由高到低依次发送到消息队列1、消息队列2、…消息队列N;其中,N为正整数,N≥3;转发步骤,包括:将消息队列1中的消息数据发送给消费者;监测步骤,包括:计算消息余量标准值S;每间隔时间T对各消息队列中的消息余量进行监测,直到消息队列N的消息数据Sn全部发送至消息队列1。可以避免时效性等级最高的消息数据由于数据积压而延误,满足对重点消息数据处理的即时性要求。
Description
技术领域
本发明涉及通信技术领域,更具体地,涉及一种可扩展的多时效等级消息转发的方法和系统。
背景技术
随着社会信息化程度的不断提高,社会各行各业需要实施视频监测的需求大大增加,利用图像采集、传输、控制、显示等设备和控制软件组成、对固定区域进行实时监测和信息记录的视频监测系统已逐渐普及。视频监测系统的图片和视频在案件侦破等领域发挥着越来越大的作用。
随着机器学习人工智能的持续发展,图像识别技术日趋成熟。视频图像处理平台的逐渐把依靠人工排查图片的繁杂工作转移到计算机(消息服务器)排查,在减少人工工作量的同时也大大提高了排查效率。
但是随着交通卡口、车辆数量、通行流量以及出行高峰数量的增加,致使数据量急速增大,导致消息服务器的信息解析压力增大。由于机房布局、硬件设备已经完成部署,重新设计部署机房硬件设备的成本过高,且造成资源和资金的浪费。
而现有的消息服务器存储转发消息无法满足要求。原因如下:
1、一个时间周期中,消息服务器的消费者通常能够消费掉生产者发送的数据量,但是在数据生产高峰时会产生大量的数据积压;数据量较大、数据积压,致使对一部分时效性要求较高的数据无法及时得到解析结果;
2、对得到解析结果的消息时效性不能识别,无法按时效性等级转发消息。
因此,如何基于现有的消息服务器的数据处理能力,对海量的消息数据进行时效性识别,将一部分时效性要求较高的消息数据进行即时转发,避免数据积压,是本领域亟待解决的技术问题之一。
发明内容
有鉴于此,本发明提供了一种可扩展的多时效等级消息转发的方法和系统,已解决现有技术存在的问题。
本发明提供了一种可扩展的多时效等级消息转发的方法,包括:
获取步骤,包括:从数据源获取消息数据;
判断步骤,包括:根据消息数据的参数,判断消息数据的时效性等级;消息数据按照时效性等级由高到低分为第1级消息数据至第N级消息数据;
发送步骤,包括:根据判断结果,将消息数据依据时效性等级由高到低依次发送到消息队列1、消息队列2、…消息队列N;其中,N为正整数,N≥3;
转发步骤,包括:将消息队列1中的消息数据发送给消费者;
监测步骤,包括:计算消息余量标准值S,S=X*tmax*V;其中,X为系数且初始值为1,tmax为第1级消息数据的最大延长时间,V为消息队列1中的消息消费速度;
每间隔时间T对各消息队列中的消息余量进行监测;
如果消息队列1的消息余量S1≥S,则不做处理;
如果消息队列1的消息余量S1<S,则判断消息队列2的消息余量S2是否大于Sx1;其中,Sx1为一个监测周期内消息队列1发送给消费者的消息数据的数量;
如果消息队列2的消息余量S2≥Sx1,则从消息队列2中获取Sx1个消息数据发送至消息队列1中,以使消息队列1中的消息数据的数量保持在消息余量标准值;
如果消息队列2的消息余量S2<Sx1,则将消息队列2中的消息余量S2发送至消息队列1;并判断消息队列3的消息余量S3是否大于Sx2;其中,Sx2=Sx1-S2;
如果S3≥Sx2,则从消息队列3中获取Sx2个消息数据发送至消息队列1;
如果S3<Sx2,将消息队列3中的消息余量S3发送至消息队列1;并判断消息队列4中的消息余量S4是否大于Sx3;其中,Sx3=Sx2-S3;
依次类推,直到消息队列N的消息数据Sn全部发送至消息队列1。
优选的,消息队列1中的消息消费速度V的计算方法包括:
获取t1、t2、t3、t4四个监测时间点的数据,其中,t2-t1=t3-t2=t4-t3=T;
计算t1监测时间点至t4监测时间点的时段内已消费的消息数据的数量之和δS,δS=ready4+δSsum-ready1;其中,ready1为t1监测时间点的消息队列1的消息余量;ready4为t4监测时间点的消息队列1的消息余量;δSsum为t1监测时间点至t4监测时间点的时段内,发送到消息队列1的消息数据的数量之和;
计算t1监测时间点至t4监测时间点的时长δt,δt=t4-t1=3T;
计算消息消费速度V,V=δS/δt;将δS=ready4+δSsum-ready1和δt=t4-t1=3T代入公式V=δS/δt中,得到:V=(ready4+δSsum-ready1)/3T。
优选的,系数X的计算方法包括:
监测到消息队列1中的消息余量S1为零时,X+0.1作为新的系数X;
优选的,监测周期T的时长为10s-1min。
本发明还提供了一种可扩展的多时效等级消息转发的系统,包括:
数据源、数据处理器、消费者;数据源和数据处理器电连接,数据处理器和消费者电连接;
数据处理器包括:
获取模块,用于从数据源获取消息数据;
第一判断模块,用于根据消息数据的参数,判断消息数据的时效性等级;消息数据按照时效性等级由高到低分为第1级消息数据至第N级消息数据;
发送模块,用于根据判断结果,将消息数据依据时效性等级由高到低依次发送到消息队列1、消息队列2、…消息队列N;其中,N为正整数,N≥3;
转发模块,用于将消息队列1中的消息数据发送给消费者;
监测模块,用于定时对各消息队列中的消息余量进行监测;
监测模块包括:第一计算模块、第二判断模块、执行模块;
第一计算模块用于计算消息余量标准值S,S=X*tmax*V;其中,X为系数且初始值为1,tmax为第1级消息数据的最大延长时间,V为消息队列1中的消息消费速度;
如果第二判断模块监测到消息队列1的消息余量S1≥S,则执行模块不做处理;
如果第二判断模块监测到消息队列1的消息余量S1<S,则判断消息队列2的消息余量S2是否大于Sx1;其中,Sx1为一个监测周期内消息队列1发送给消费者的消息数据的数量;
如果第二判断模块监测到消息队列2的消息余量S2≥Sx1,则执行模块从消息队列2中获取Sx1个消息数据发送至消息队列1中,以使消息队列1中的消息数据的数量保持在消息余量标准值;
如果第二判断模块监测到消息队列2的消息余量S2<Sx1,则执行模块将消息队列2中的消息余量S2发送至消息队列1;第二判断模块判断消息队列3的消息余量S3是否大于Sx2;其中,Sx2=Sx1-S2;
如果第二判断模块监测到S3≥Sx2,则执行模块从消息队列3中获取Sx2个消息数据发送至消息队列1;
如果第二判断模块监测到S3<Sx2,将执行模块将消息队列3中的消息余量S3发送至消息队列1;第二判断模块判断判断消息队列4中的消息余量S4是否大于Sx3;其中,Sx3=Sx2-S3;
依次类推,直到执行模块将消息队列N的消息数据Sn全部发送至消息队列1。
优选的,第一计算模块还用于计算消息队列1中的消息消费速度V,包括:
第一计算模块获取t1、t2、t3、t4四个监测时间点的数据,其中,t2-t1=
t3-t2=t4-t3=T;
第一计算模块计算t1监测时间点至t4监测时间点的时段内已消费的消息数据的数量之和δS,δS=ready4+δSsum-ready1;其中,ready1为t1监测时间点的消息队列1的消息余量;ready4为t4监测时间点的消息队列1的消息余量;δSsum为t1监测时间点至t4监测时间点的时段内,发送到消息队列1的消息数据的数量之和;
第一计算模块计算t1监测时间点至t4监测时间点的时长δt,δt=t4-t1=3T;
第一计算模块计算消息消费速度V,V=δS/δt;将δS=ready4+δSsum-ready1和δt=t4-t1=3T代入公式V=δS/δt中,得到:V=(ready4+δSsum-ready1)/3T。
优选的,第一计算模块还用于计算系数X,包括:
第二判断模块监测到消息队列1中的消息余量S1为零时,第一计算模块将X+0.1作为新的系数X;
优选的,监测周期T的时长为10s-1min。
与现有技术相比,本发明提供的可扩展的多时效等级消息转发的方法和系统,至少实现了如下的有益效果:
1、在获取消息数据后,可以根据消息数据的参数来判断消息数据的时效性等级,根据消息数据的时效性等级的判断结果,将将消息数据依据时效性等级由高到低依次发送到不同的消息队列。其中,消息队列1中的消息数据的时效性等级最高,将消息队列1中的消息数据优先发送给消费者,从而可以使消费者优先接收到时效性等级最高的消息数据,避免时效性等级最高的消息数据由于数据积压而延误,满足对重点消息数据处理的即时性要求。
2、在处理消息数据的过程中,对于各消息队列的余量进行定时监测,在消息数据流量高峰,对消息数据按时效性等级由高到低的顺序,依次转发到消息队列1中、而后发送到消费者,实现多个时效性等级依次转发的要求,使消费者按照时效性等级由高到低的顺序依次处理消息数据,提升消息数据处理的质量。
3、消息消费速度V的计算方法中忽略了下一个监测周期中直接发往消息队列1的最高时效性消息数据的数量,可以使一个监测周期存在一定量的冗余消息数据,防止消费程序闲置。
4、计算消息余量标准值S时,采用发送量冗余策略,使消息队列1中的消息余量始终不为零。首先,在计算消息消费速度V时,忽略下一个监测周期中直接发往消息队列1的最高时效性消息数据的数量;然后,设置系数X的初始值为1,系数X具体值可以根据监测步骤的执行效率和消息队列1的消费速度V调节,确定一个合适的值。以考虑到充分发挥消费者的消费能力,进一步避免监测步骤中出现无数据可消费的情况。
当然,实施本发明的任一产品必不特定需要同时达到以上所述的所有技术效果。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是本发明实施例提供的一种的可扩展的多时效等级消息转发的方法流程图;
图2是本发明实施例另一种的可扩展的多时效等级消息转发的方法流程图;
图3是本发明实施例一种的可扩展的多时效等级消息转发的系统结构图;
图4是t1、t2、t3、t4四个监测时间点的数据。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
实施例1
请参考图1,本实施例提供了一种可扩展的多时效等级消息转发的方法,包括:
获取步骤S1,包括:从数据源获取消息数据;
判断步骤S2,包括:根据消息数据的参数,判断消息数据的时效性等级;消息数据按照时效性等级由高到低分为第1级消息数据至第N级消息数据;
发送步骤S3,包括:根据判断结果,将消息数据依据时效性等级由高到低依次发送到消息队列1、消息队列2、…消息队列N;其中,N为正整数,N≥3;
转发步骤S4,包括:将消息队列1中的消息数据发送给消费者;
监测步骤S5,包括:计算消息余量标准值S,S=X*tmax*V;其中,X为系数且初始值为1,tmax为第1级消息数据的最大延长时间,V为消息队列1中的消息消费速度;
每间隔时间T对各消息队列中的消息余量进行监测;
如果消息队列1的消息余量S1≥S,则不做处理;
如果消息队列1的消息余量S1<S,则判断消息队列2的消息余量S2是否大于Sx1;其中,Sx1为一个监测周期内消息队列1发送给消费者的消息数据的数量;
如果消息队列2的消息余量S2≥Sx1,则从消息队列2中获取Sx1个消息数据发送至消息队列1中,以使消息队列1中的消息数据的数量保持在消息余量标准值;
如果消息队列2的消息余量S2<Sx1,则将消息队列2中的消息余量S2发送至消息队列1;并判断消息队列3的消息余量S3是否大于Sx2;其中,Sx2=Sx1-S2;
如果S3≥Sx2,则从消息队列3中获取Sx2个消息数据发送至消息队列1;
如果S3<Sx2,将消息队列3中的消息余量S3发送至消息队列1;并判断消息队列4中的消息余量S4是否大于Sx3;其中,Sx3=Sx2-S3;
依次类推,直到消息队列N的消息数据Sn全部发送至消息队列1。
本实施例提供的可扩展的多时效等级消息转发的方法中,在获取消息数据后,可以根据消息数据的参数来判断消息数据的时效性等级;其中,消息数据的参数可以包括生成消息数据的机器信息,根据生成消息数据的机器对消息数据的时效性进行判断。第1级消息数据至第N级消息数据的时效性逐级减弱,具体的,第1级消息数据的时效性最高,第2级消息数据的时效性次之,第N级消息数据的时效性最低。第1级消息数据即为最高时效性消息数据,其余的第2级~第N级消息数据为非最高时效性消息数据。
根据消息数据的时效性等级的判断结果,将将消息数据依据时效性等级由高到低依次发送到消息队列1、消息队列2、…消息队列N;具体的,第1级消息数据发送到消息队列1,第2级消息数据发送到消息队列2,…,以此类推,第N级消息数据发送到消息队列N。其中,消息队列的数量和消息数据的时效性等级的数量相同,当消息数据的时效性等级的数量增加时,消息队列的数量也相应的增加,消息队列的数量可以扩展。
消息队列1中的消息数据的时效性等级最高,将消息队列1中的消息数据优先发送给消费者,从而可以使消费者优先接收到时效性等级最高的消息数据,避免时效性等级最高的消息数据由于数据积压而延误。
本实施例提供的方法还包括监测步骤S5,在监测步骤中对于各消息队列中的消息余量进行监测,并且定时的按照消息数据的时效性等级将其余消息队列中的消息数据发送到消息队列1中,以使消息队列1中的消息数据的数量保持在消息余量标准值。
具体而言,在监测步骤中,首先计算消息余量标准值S,S=X*tmax*V;其中,X为系数且初始值为1,X的具体数值可以为动态变化的。tmax为第1级消息数据的最大延长时间,即为第1级消息数据从获取步骤S1到转发步骤S4的时间。每间隔时间T对各消息队列中的消息余量进行监测,T即为一个监测周期。通常tmax为一个监测周期T。V为消息队列1中的消息消费速度,即为消费者对消息队列1中的消息数据的消费速度。消息余量标准值S即为下一个监测周期中发往消息队列1中的消息数据的数量。需要说明的是,因为消息队列1的消息余量S1≥S,则不做处理,则消息队列1的消息余量S1最大值可能无限接近S,再加上下一个监测周期中发送的待消费的消息数据S,消息队列1的消息余量S1的最大值时无限接近2S,此时第1级消息数据的最大延长时间tmax为两个监测周期T,即tmax=2T。
以消息余量标准值S为基准值,当消息队列1的消息余量S1≥S时,说明消费者的消费速度较慢,消息队列1中的消息数据余量充足,因而不作处理。当消息队列1的消息余量S1<S,说明消费者的消费速度较快,消息队列1中的消息数据余量不足,需要及时向消息队列1中补充消息数据。
其中,向消息队列1中补充数据的规则如下:按照时效性等级由高到低的顺序,将消息队列2至消息队列N中时效性等级高的消息数据优先发送到消息队列1中,即为依次从消息队列2、消息队列3、…至消息队列N中获取消息数据。
具体而言,当消息队列1的消息余量S1<S时,即为一个监测周期内消费者消费了消息队列1中的Sx1个消息数据,则优先从消息队列2中获取Sx1个第2级消息数据发送到消息队列1中。
如果消息队列2的消息余量S2不足Sx1个,则将消息队列2中的消息余量S2发送至消息队列1。此时,消息队列1中还差Sx1-S2个消息数据,则从消息队列3中获取Sx1-S2个第3级消息数据发送至消息队列1。
如果消息队列3中的消息数据的余量不足Sx1-S2个,则将消息队列3中的消息数据全部发送到消息队列1,然后进一步从消息队列4获取第4级消息数据发送到消息队列1中。依次类推当某一消息队列中的消息数据不足以使消息队列1中的消息数据达到消息余量标准值S时,将下一个消息队列的消息数据发送到消息队列1中,直到消息队列N的消息数据Sn全部发送至消息队列1。
本实施例提供的方法中,在监测步骤中对于各消息队列余量进行定时监测,按照消息数据的时效性等级由高到低的顺序,将各消息队列中的消息数据依次转发到消息队列1中,可以将时效性等级较高的数据优先发送到消费者,避免时效性等级较高的消息数据被延误,提高消息数据的处理的质量。
实施例2
在实施例1提供的可扩展的多时效等级消息转发的方法的基础上,本实施例提供的方法中,消息队列1中的消息消费速度V的计算方法包括:
步骤S51:获取t1、t2、t3、t4四个监测时间点的数据,其中,t2-t1=t3-t2=t4-t3=T;
步骤S52:计算t1监测时间点至t4监测时间点的时段内已消费的消息数据的数量之和δS,δS=ready4+δSsum-ready1;其中,ready1为t1监测时间点的消息队列1的消息余量;ready4为t4监测时间点的消息队列1的消息余量;δSsum为t1监测时间点至t4监测时间点的时段内,发送到消息队列1的消息数据的数量之和;
步骤S53:计算t1监测时间点至t4监测时间点的时长δt,δt=t4-t1=3T;
步骤S54:计算消息消费速度V,V=δS/δt;将δS=ready4+δSsum-ready1和δt=t4-t1=3T代入公式V=δS/δt中,得到:V=(ready4+δSsum-ready1)/3T。
本实施例中,系数X的计算方法包括:
监测到消息队列1中的消息余量S1为零时,X+0.1作为新的系数X;
本实施例中,监测周期T的时长为10s-1min。监测周期T的时间不宜过短,短于10s会导致监测次数过于频繁,不必要的增加消息数据处理的复杂程度。监测周期T的时间不宜过长,长于1min会导致监测不够及时,可能会使得部分时效性等级较高的消息数据延误。
需要说明的是,相邻的两个监测时间点之间的时段为一个监测周期T。理论上,监测周期T的时长是固定的,即为t2-t1=t3-t2=t4-t3=T。但是在实际操作过程中,由于存在一定的误差,相邻的两个监测时间点之间的时段不一定是T,可能是T±10%T。本实施例提供的技术方案,在实际的实施中,允许监测周期T存在十分之一的误差。
本实施例提供的方法中,提供了消息队列1中的消息消费速度V的具体计算方法。消息消费速度V的计算方法中忽略了下一个监测周期中直接发往消息队列1的最高时效性消息数据(即第1级消息数据)的数量,具体而言,下一个监测周期中,发往消息队列1的非最高时效性消息的发送量应为V*T-Ss,其中,Ss即为下一个监测周期中直接发往消息队列1的最高时效性消息数据的数量。忽略Ss的原因主要有如下三点:1、消息队列2/3/N向消息队列1发送的消息数据的速度远远大于发送步骤中向消息队列1发送消息数据的速度;2、第1级消息数据的数量远小于其余的时效性消息数据的数量;3、一个监测周期存在一定量的冗余消息数据,防止消费程序闲置。
计算消息余量标准值S时,考虑到充分发挥消费者的消费能力,进一步避免监测步骤中出现无数据可消费的情况,采用发送量冗余策略,使消息队列1中的消息余量始终不为零。具体而言:首先,在计算消息消费速度V时,忽略下一个监测周期中直接发往消息队列1的最高时效性消息数据的数量;然后,消息余量标准值S=X*tmax*V,系数X的初始值为1,系数X具体值可以根据监测步骤的执行效率和消息队列1的消费速度V调节,确定一个合适的值。
具体的,监测到消息队列1中的消息余量S1为零时,说明消费者的消费速度较快,X+0.1作为新的系数X,从而增大消息余量标准值S。
实施例3
本发明还提供了一种可扩展的多时效等级消息转发的系统,包括:
数据源10、数据处理器20、消费者30;数据源10和数据处理器20电连接,数据处理器20和消费者30电连接;
数据处理器20包括:
获取模块21,用于从数据源10获取消息数据;
第一判断模块22,用于根据消息数据的参数,判断消息数据的时效性等级;消息数据按照时效性等级由高到低分为第1级消息数据至第N级消息数据;
发送模块23,用于根据判断结果,将消息数据依据时效性等级由高到低依次发送到消息队列1、消息队列2、…消息队列N;其中,N为正整数,N≥3;
转发模块24,用于将消息队列1中的消息数据发送给消费者30;
监测模块25,用于定时对各消息队列中的消息余量进行监测;
监测模块25包括:第一计算模块251、第二判断模块252、执行模块253;
第一计算模块251用于计算消息余量标准值S,S=X*tmax*V;其中,X为系数且初始值为1,tmax为第1级消息数据的最大延长时间,V为消息队列1中的消息消费速度;
如果第二判断模块252监测到消息队列1的消息余量S1≥S,则执行模块253不做处理;
如果第二判断模块252监测到消息队列1的消息余量S1<S,则判断消息队列2的消息余量S2是否大于Sx1;其中,Sx1为一个监测周期内消息队列1发送给消费者的消息数据的数量;
如果第二判断模块252监测到消息队列2的消息余量S2≥Sx1,则执行模块253从消息队列2中获取Sx1个消息数据发送至消息队列1中,以使消息队列1中的消息数据的数量保持在消息余量标准值;
如果第二判断模块252监测到消息队列2的消息余量S2<Sx1,则执行模块253将消息队列2中的消息余量S2发送至消息队列1;第二判断模块252判断消息队列3的消息余量S3是否大于Sx2;其中,Sx2=Sx1-S2;
如果第二判断模块252监测到S3≥Sx2,则执行模块253从消息队列3中获取Sx2个消息数据发送至消息队列1;
如果第二判断模块252监测到S3<Sx2,将执行模块253将消息队列3中的消息余量S3发送至消息队列1;第二判断模块252判断判断消息队列4中的消息余量S4是否大于Sx3;其中,Sx3=Sx2-S3;
依次类推,直到执行模块253将消息队列N的消息数据Sn全部发送至消息队列1。
优选的,第一计算模块251还用于计算消息队列1中的消息消费速度V,包括:
第一计算模块251获取t1、t2、t3、t4四个监测时间点的数据,其中,
t2-t1=t3-t2=t4-t3=T;
第一计算模块251计算t1监测时间点至t4监测时间点的时段内已消费的消息数据的数量之和δS,δS=ready4+δSsum-ready1;其中,ready1为t1监测时间点的消息队列1的消息余量;ready4为t4监测时间点的消息队列1的消息余量;δSsum为t1监测时间点至t4监测时间点的时段内,发送到消息队列1的消息数据的数量之和;
第一计算模块251计算t1监测时间点至t4监测时间点的时长δt,δt=t4-t1=3T;
第一计算模块251计算消息消费速度V,V=δS/δt;将δS=ready4+δSsum-ready1和δt=t4-t1=3T代入公式V=δS/δt中,得到:V=(ready4+δSsum-ready1)/3T。
优选的,第一计算模块251还用于计算系数X,包括:
第二判断模块252监测到消息队列1中的消息余量S1为零时,第一计算模块251将X+0.1作为新的系数X;
优选的,监测周期T的时长为10s-1min。
本实施例提供的系统中,消息队列的数量由消息数据的时效性等级的数量决定,例如,消息数据的时效性等级分为1级至第10级,即为N=10时,则消息队列的数量相应的设置10个,分别为消息队列1至消息队列10。
请结合参考图4,下面,本实施例对于消息队列1中的消息消费速度V的具体计算公式进行示例性的说明。图4示意了t1、t2、t3、t4四个监测时间点的数据,其中:
第一次获取数据时,系统的时间点为t1、消息队列1的消息余量为ready1、最高时效性消息发送数为pChannel1、消息队列2的发送量为sChannel1、…消息队列N的发送量为rChannel1;
第二次获取数据时,系统的时间点为t2、消息队列1的消息余量为ready2、最高时效性消息发送数为pChannel2、消息队列2的发送量为sChannel2、…消息队列N的发送量为rChannel2;
第三次获取数据时,系统的时间点为t3、消息队列1的消息余量为ready3、最高时效性消息发送数为pChannel3、消息队列2的发送量为sChannel3、…消息队列N的发送量为rChannel3;
第四次获取数据时,系统的时间点为t4、消息队列1的消息余量为ready4、最高时效性消息发送数为pChannel4、消息队列2的发送量为sChannel4、…消息队列N的发送量为rChannel4;
需要说明的是,最高时效性消息发送数是指:在发送步骤中,发送到消息队列1的第1级消息数据的数量。消息队列2的发送量是指,消息队列2发送到消息队列1的消息数据的数量,依次类推,消息队列N的发送量是指,消息队列N发送到消息队列1的消息数据的数量。
消息消费速度V的计算公式为:V=V=δS/δt=(ready4+δSsum-ready1)/t4-t1。
δS=ready4+δSsum-ready1=(ready4-ready1)+(pChannel1+sChannel1+…+rChannel1)+(pChannel2+sChannel2+…+rChannel2)+(pChannel2+sChannel2+…+rChannel2)+(pChannel3+sChannel3+…+rChannel3)+(pChannel4+sChannel4+…+rChannel4)。
因此,消息消费速度V的计算公式为:
V=(ready4-ready1)+(pChannel1+sChannel1+…+rChannel1)+(pChannel2+sChannel2+…+rChannel2)+(pChannel2+sChannel2+…+rChannel2)+(pChannel3+sChannel3+…+rChannel3)+(pChannel4+sChannel4+…+rChannel4)/(t4-t1)。
通过上述实施例可知,本发明提供的可扩展的多时效等级消息转发的方法和系统,至少实现了如下的有益效果:
1、在获取消息数据后,可以根据消息数据的参数来判断消息数据的时效性等级,根据消息数据的时效性等级的判断结果,将将消息数据依据时效性等级由高到低依次发送到不同的消息队列。其中,消息队列1中的消息数据的时效性等级最高,将消息队列1中的消息数据优先发送给消费者,从而可以使消费者优先接收到时效性等级最高的消息数据,避免时效性等级最高的消息数据由于数据积压而延误,满足对重点消息数据处理的即时性要求。
2、在处理消息数据的过程中,对于各消息队列的余量进行定时监测,在消息数据流量高峰,对消息数据按时效性等级由高到低的顺序,依次转发到消息队列1中、而后发送到消费者,实现多个时效性等级依次转发的要求,使消费者按照时效性等级由高到低的顺序依次处理消息数据,提升消息数据处理的质量。
3、消息消费速度V的计算方法中忽略了下一个监测周期中直接发往消息队列1的最高时效性消息数据的数量,可以使一个监测周期存在一定量的冗余消息数据,防止消费程序闲置。
4、计算消息余量标准值S时,采用发送量冗余策略,使消息队列1中的消息余量始终不为零。首先,在计算消息消费速度V时,忽略下一个监测周期中直接发往消息队列1的最高时效性消息数据的数量;然后,设置系数X的初始值为1,系数X具体值可以根据监测步骤的执行效率和消息队列1的消费速度V调节,确定一个合适的值。以考虑到充分发挥消费者的消费能力,进一步避免监测步骤中出现无数据可消费的情况。
虽然已经通过例子对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上例子仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。
Claims (8)
1.一种可扩展的多时效等级消息转发的方法,其特征在于,包括:
获取步骤,包括:从数据源获取消息数据;
判断步骤,包括:根据所述消息数据的参数,判断所述消息数据的时效性等级;所述消息数据按照时效性等级由高到低分为第1级消息数据至第N级消息数据;
发送步骤,包括:根据判断结果,将消息数据依据时效性等级由高到低依次发送到消息队列1、消息队列2、…消息队列N;其中,N为正整数,N≥3;
转发步骤,包括:将所述消息队列1中的消息数据发送给消费者;
监测步骤,包括:计算消息余量标准值S,S=X*tmax*V;其中,X为系数且初始值为1,tmax为第1级消息数据的最大延长时间,V为所述消息队列1中的消息消费速度;
每间隔时间T对各消息队列中的消息余量进行监测;
如果所述消息队列1的消息余量S1≥S,则不做处理;
如果所述消息队列1的消息余量S1<S,则判断所述消息队列2的消息余量S2是否大于Sx1;其中,Sx1为一个监测周期内所述消息队列1发送给所述消费者的消息数据的数量;
如果所述消息队列2的消息余量S2≥Sx1,则从所述消息队列2中获取Sx1个消息数据发送至所述消息队列1中,以使所述消息队列1中的消息数据的数量保持在消息余量标准值;
如果所述消息队列2的消息余量S2<Sx1,则将所述消息队列2中的消息余量S2发送至所述消息队列1;并判断消息队列3的消息余量S3是否大于Sx2;其中,Sx2=Sx1-S2;
如果S3≥Sx2,则从所述消息队列3中获取Sx2个消息数据发送至所述消息队列1;
如果S3<Sx2,将所述消息队列3中的消息余量S3发送至所述消息队列1;并判断消息队列4中的消息余量S4是否大于Sx3;其中,Sx3=Sx2-S3;
依次类推,直到所述消息队列N的消息数据Sn全部发送至所述消息队列1。
2.根据权利要求1所述的方法,其特征在于,
所述消息队列1中的消息消费速度V的计算方法包括:
获取t1、t2、t3、t4四个监测时间点的数据,其中,t2-t1=t3-t2=t4-t3=T;
计算t1监测时间点至t4监测时间点的时段内已消费的消息数据的数量之和δS,δS=ready4+δSsum-ready1;其中,ready1为t1监测时间点的消息队列1的消息余量;ready4为t4监测时间点的消息队列1的消息余量;δSsum为t1监测时间点至t4监测时间点的时段内,发送到所述消息队列1的消息数据的数量之和;
计算t1监测时间点至t4监测时间点的时长δt,δt=t4-t1=3T;
计算消息消费速度V,V=δS/δt;将δS=ready4+δSsum-ready1和δt=t4-t1=3T代入公式V=δS/δt中,得到:V=(ready4+δSsum-ready1)/3T。
4.根据权利要求1所述的方法,其特征在于,
所述监测周期T的时长为30s。
5.一种可扩展的多时效等级消息转发的系统,其特征在于,包括:
数据源、数据处理器、消费者;所述数据源和所述数据处理器电连接,所述数据处理器和所述消费者电连接;
所述数据处理器包括:
获取模块,用于从所述数据源获取消息数据;
第一判断模块,用于根据所述消息数据的参数,判断所述消息数据的时效性等级;所述消息数据按照时效性等级由高到低分为第1级消息数据至第N级消息数据;
发送模块,用于根据判断结果,将消息数据依据时效性等级由高到低依次发送到消息队列1、消息队列2、…消息队列N;其中,N为正整数,N≥3;
转发模块,用于将所述消息队列1中的消息数据发送给所述消费者;
监测模块,用于定时对各消息队列中的消息余量进行监测;
所述监测模块包括:第一计算模块、第二判断模块、执行模块;
所述第一计算模块用于计算消息余量标准值S,S=X*tmax*V;其中,X为系数且初始值为1,tmax为第1级消息数据的最大延长时间,V为所述消息队列1中的消息消费速度;
如果所述第二判断模块监测到所述消息队列1的消息余量S1≥S,则所述执行模块不做处理;
如果所述第二判断模块监测到所述消息队列1的消息余量S1<S,则判断所述消息队列2的消息余量S2是否大于Sx1;其中,Sx1为一个监测周期内所述消息队列1发送给所述消费者的消息数据的数量;
如果所述第二判断模块监测到所述消息队列2的消息余量S2≥Sx1,则所述执行模块从所述消息队列2中获取Sx1个消息数据发送至所述消息队列1中,以使所述消息队列1中的消息数据的数量保持在消息余量标准值;
如果所述第二判断模块监测到所述消息队列2的消息余量S2<Sx1,则所述执行模块将所述消息队列2中的消息余量S2发送至所述消息队列1;所述第二判断模块判断消息队列3的消息余量S3是否大于Sx2;其中,Sx2=Sx1-S2;
如果所述第二判断模块监测到S3≥Sx2,则所述执行模块从所述消息队列3中获取Sx2个消息数据发送至所述消息队列1;
如果所述第二判断模块监测到S3<Sx2,将所述执行模块将所述消息队列3中的消息余量S3发送至所述消息队列1;所述第二判断模块判断判断消息队列4中的消息余量S4是否大于Sx3;其中,Sx3=Sx2-S3;
依次类推,直到所述执行模块将所述消息队列N的消息数据Sn全部发送至所述消息队列1。
6.根据权利要求5所述的系统,其特征在于,
所述第一计算模块还用于计算所述消息队列1中的消息消费速度V,包括:
所述第一计算模块获取t1、t2、t3、t4四个监测时间点的数据,其中,
t2-t1=t3-t2=t4-t3=T;
所述第一计算模块计算t1监测时间点至t4监测时间点的时段内已消费的消息数据的数量之和δS,δS=ready4+δSsum-ready1;其中,ready1为t1监测时间点的消息队列1的消息余量;ready4为t4监测时间点的消息队列1的消息余量;δSsum为t1监测时间点至t4监测时间点的时段内,发送到所述消息队列1的消息数据的数量之和;
所述第一计算模块计算t1监测时间点至t4监测时间点的时长δt,δt=t4-t1=3T;
所述第一计算模块计算消息消费速度V,V=δS/δt;将δS=ready4+δSsum-ready1和δt=t4-t1=3T代入公式V=δS/δt中,得到:V=(ready4+δSsum-ready1)/3T。
8.根据权利要求5所述的系统,其特征在于,
所述监测周期T的时长为30s。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811382799.XA CN109491810B (zh) | 2018-11-20 | 2018-11-20 | 可扩展的多时效等级消息转发的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811382799.XA CN109491810B (zh) | 2018-11-20 | 2018-11-20 | 可扩展的多时效等级消息转发的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109491810A CN109491810A (zh) | 2019-03-19 |
CN109491810B true CN109491810B (zh) | 2020-06-23 |
Family
ID=65697017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811382799.XA Active CN109491810B (zh) | 2018-11-20 | 2018-11-20 | 可扩展的多时效等级消息转发的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109491810B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441580A (zh) * | 2008-12-09 | 2009-05-27 | 华北电网有限公司 | 分布式并行计算平台系统及其计算任务分配方法 |
CN104935622A (zh) * | 2014-03-21 | 2015-09-23 | 阿里巴巴集团控股有限公司 | 一种用于消息分配、消费的方法及装置,用于消息处理的系统 |
CN106201676A (zh) * | 2016-06-28 | 2016-12-07 | 浪潮软件集团有限公司 | 一种任务分配方法及装置 |
US9898341B2 (en) * | 2016-02-25 | 2018-02-20 | Western Digital Technologies, Inc. | Adjustable priority ratios for multiple task queues |
CN107894926A (zh) * | 2017-11-29 | 2018-04-10 | 信雅达系统工程股份有限公司 | 一种银行影像录入任务的同步和分配系统及方法 |
CN108415778A (zh) * | 2018-03-29 | 2018-08-17 | 北京中油瑞飞信息技术有限责任公司 | 任务排序方法、装置及调度系统 |
CN108427402A (zh) * | 2018-03-27 | 2018-08-21 | 浙江吉利控股集团有限公司 | 一种语音提醒车辆故障的方法及装置 |
-
2018
- 2018-11-20 CN CN201811382799.XA patent/CN109491810B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441580A (zh) * | 2008-12-09 | 2009-05-27 | 华北电网有限公司 | 分布式并行计算平台系统及其计算任务分配方法 |
CN104935622A (zh) * | 2014-03-21 | 2015-09-23 | 阿里巴巴集团控股有限公司 | 一种用于消息分配、消费的方法及装置,用于消息处理的系统 |
US9898341B2 (en) * | 2016-02-25 | 2018-02-20 | Western Digital Technologies, Inc. | Adjustable priority ratios for multiple task queues |
CN106201676A (zh) * | 2016-06-28 | 2016-12-07 | 浪潮软件集团有限公司 | 一种任务分配方法及装置 |
CN107894926A (zh) * | 2017-11-29 | 2018-04-10 | 信雅达系统工程股份有限公司 | 一种银行影像录入任务的同步和分配系统及方法 |
CN108427402A (zh) * | 2018-03-27 | 2018-08-21 | 浙江吉利控股集团有限公司 | 一种语音提醒车辆故障的方法及装置 |
CN108415778A (zh) * | 2018-03-29 | 2018-08-17 | 北京中油瑞飞信息技术有限责任公司 | 任务排序方法、装置及调度系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109491810A (zh) | 2019-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110769278A (zh) | 一种分布式视频转码方法及系统 | |
US9568975B2 (en) | Power balancing to increase workload density and improve energy efficiency | |
CN111008075B (zh) | 一种负载均衡系统、方法、装置、设备及介质 | |
WO2020185233A1 (en) | Responding to machine learning requests from multiple clients | |
US8510742B2 (en) | Job allocation program for allocating jobs to each computer without intensively managing load state of each computer | |
CN114064211B (zh) | 一种基于端-边-云计算架构的视频流分析系统及方法 | |
WO2021013105A1 (zh) | 一种作业状态的推送方法及装置 | |
JP2021077129A (ja) | 情報処理システム、モデルの制御方法及び記憶媒体 | |
CN105657449A (zh) | 一种视频转码分配方法、装置及视频转码系统 | |
WO2013147441A1 (en) | Scheduling apparatus and method for load balancing when performing multiple transcoding operations | |
CN110442428A (zh) | Docker容器的协调方法 | |
CN114448989B (zh) | 调整消息分发的方法、装置、电子设备、存储介质及产品 | |
US11039404B2 (en) | Method for control and distribution of the amount of power to be lowered or raised in a multi-load system | |
CN109491810B (zh) | 可扩展的多时效等级消息转发的方法和系统 | |
CN110728372B (zh) | 一种人工智能模型动态加载的集群设计方法及集群系统 | |
CN106162109B (zh) | 一种远程监视方法和监控设备 | |
CN111445027B (zh) | 机器学习模型的训练方法和装置 | |
Zang et al. | A fault diagnosis method for microservices based on multi-factor self-adaptive heartbeat detection algorithm | |
CN106411971B (zh) | 负载调节方法及装置 | |
CN112543354B (zh) | 业务感知的分布式视频集群高效伸缩方法和系统 | |
CN112214303A (zh) | Kubernetes集群自动缩放系统 | |
CN104834562A (zh) | 一种异构数据中心及该数据中心的运行方法 | |
CN115934304A (zh) | 一种数据处理方法、装置、计算机设备及可读存储介质 | |
US10089149B2 (en) | Method for scheduling multiple periodic requests and scheduling device | |
US10091068B1 (en) | System for modeling distributed systems |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |