基于MQ框架确保消息队列消费顺序准确性的方法与流程

文档序号:32855345发布日期:2023-01-06 23:50阅读:36来源:国知局
基于MQ框架确保消息队列消费顺序准确性的方法与流程
基于mq框架确保消息队列消费顺序准确性的方法
技术领域
1.本发明涉及信息技术领域,尤其涉及基于mq框架确保消息队列消费顺序准确性的方法。


背景技术:

2.mq技术是目前微服务架构下解耦的利器;目前主流的mq工具仅能保障在仅有一个消费者下的条件下能顺序消费,但在以下条件下存在消费顺序问题:
3.1、无法保证按既定要求的消费执行顺序,如:kafka可以利用同一个partition来保证顺序消费;但此时如果消费者存在集群部署且多台消费者繁忙程度不一样,顺序无法保证;
4.2、存在消息堵塞风险,如:对列a中有1w消息,第一条消息如果消费失败,则不修改offset;那么对列中的其他消息均阻塞在对列中,导致对列中的所有消息均无法消费、数据无法正常流转;
5.3、无法基于mq框架采用fastdtw公式对各队列信息数据进行精准且全面的计算判断,降低消息队列的准确性。


技术实现要素:

6.本发明的目的是为了解决现有技术中存在无法保证按既定要求的消费执行顺序、存在消息堵塞风险以及无法基于mq框架采用fastdtw公式对各队列信息数据进行精准且全面的计算判断,降低消息队列的准确性的缺点,而提出的基于mq框架确保消息队列消费顺序准确性的方法。
7.为了实现上述目的,本发明采用了如下技术方案:
8.基于mq框架确保消息队列消费顺序准确性的方法,包括如下步骤:
9.步骤一、先将消息消费产生的业务数据以发送queue-1、queue-2、....、queue-n的队列形式发送至生产者的业务服务端口,并对多组发送的业务数据进行分区处理,且由时间戳对业务数据的时间进行标记;
10.步骤二、再将处理后生产者的业务服务端口产生的各业务数据发送至zfs-mqs进行全局消息(mongodb)保存,再对保存的全局消息进行统一补偿;
11.步骤三、后对生产者的业务服务端口产生的业务数据统一补偿后保存的全局业务数据存入本地消息表中;
12.步骤四、接着再将处理后的业务数据以发送queue-1、queue-2、....、queue-n的队列形式发送至mq端,对业务数据的消费消息进行处理,再根据fastdtw公式计算判断redis是否存在,若redis存在时,则调用业务服务完成业务处理,并到达消费者的业务服务端,然后再根据当前顺序业务数据的处理批次进行redis消费记录,最后再发送下一条业务数据消息,以此类推,直至所有顺序的队列业务数据处理完成为止;
13.步骤五、若redis不存在时,返回初始级再次处理判断,并作出告警措施。
14.优选的,所述在步骤一中,由消息生产组件对发送的队列形式业务数据根据业务id进行分区计算,且对每条业务数据划分为一个虚拟分区,并在分区内利用先进先出原则对同一业务数据下多个消息按照顺序整理,直至投递的队列消息整理消费完毕为止。
15.优选的,所述在步骤二中,全局消息保存完成后,对保存的全局消息进行实时监控,且按照消息积压、消费失败等依据进行初期实时告警。
16.优选的,所述在步骤三中,登录可视化消息管理界面,对统一补偿后消息的生命周期进行跟踪,查看消息的创建时间、消费时间、消息内容、补偿次数、失败原因等情况,对于未补偿的消息可由手动补偿消息手段进行处理。
17.优选的,所述在步骤四中,投递的队列消息处理完成后,再按照队列数据来源统一消息消费者,并从mq中获取消息后进行幂等重复消费判断。
18.优选的,所述在步骤四中,fastdtw公式以redis消费记录的时间序列相似性、不确定时间序列以及期望距离作为判断依据,在fastdtw公式以时间序列相似性作为判断依据时,先对redis消费记录的时间序列按照c={s1、s1...sn}进行设定,其中n表示时间序列的数量,则fastdtw公式为:rq(q、c、ε)={s|s∈c|distance(q,s)≤ε},其中ε为距离阔值。
19.优选的,所述在步骤四中,在fastdtw公式以不确定时间序列作为判断依据时,先将不确定时间序列中的每个数据队列元素设置为x,即:x=r(x)+ε(x),其中r(x)表示该数据队列元素的真实值,ε(x)表示该数据队列元素的误差值,并将不确定时间序列中的总时间设置为t,即t=(t1、t2....ti),且ti是在时间戳i对真实值的随机变量。
20.优选的,所述在步骤四中,在fastdtw公式以期望距离作为判断依据时,期望距离是指两个时间序列x和y的概率分布为f(x)和f(y),则f(x)和f(y)的期望距离为:e(x、y)=∫
+∞-∞

+∞-∞
pointsdis(x,y)f
x,y
(x,y)dxdy,其中,pointsdis(x,y)可以用||x-y||2表示,即x2+y
2-2|xy|,可以推导出e(x、y)=e(x2)+e(y2)-2e(x)e(y)={(e(x)-e(y))}2+var(x)+var(y)。
21.优选的,所述在步骤四中,fastdtw公式在执行mq框架的计算步骤为:
22.a、先输入采集到的序列a以及待检测的确定时间序列b;
23.b、fastdtw算法以redis消费记录的时间序列相似性、不确定时间序列以及期望距离作为判断依据执行,当粗粒度进行到第n(n》3)次细粒度化时,把细粒度化好的矩阵放入mq框架中执行计算;
24.c、执行mr计算:
25.c1、由于fastdtw的计算矩阵是n*m矩阵,先将序列x划分为长度分别为[m/p]的p个子序列x0,x1,

x
p-1
,再将序列y划分为长度分别为[n/q]的q个子序列y0,y1,
…yp-1
,构造p*q个子矩阵m
f*g
,fε[1,p],gε[1,q],且每个子矩阵的规模为[m*n]/[p*q];
[0026]
c2、每个子矩阵求的路径作为key值,编号作为value值进行排序;
[0027]
c3、排序过后的值传入reduce部分进行路径汇总筛选,并规约在一起得出redis中业务队列总的动态规约路径。
[0028]
与现有技术相比,本发明的有益效果是:
[0029]
该基于mq框架确保消息队列消费顺序准确性的方法,通过步骤一到五,实现消息信息数据的分区队列划分和先进先出原则的顺序排序,保证在同一服务端口中的多个消息具有事务特性,使多个对列之间也可保证消息顺序性,能严格保证在集群和单机部署模式
下的消息顺序性,以防消费失败,导致消息信息发生阻塞,同时也防止重复消费,再基于mq框架采用fastdtw公式对各队列信息数据进行精准且全面的计算判断,提高较多消息队列的准确性。
附图说明
[0030]
图1为本发明提出的基于mq框架确保消息队列消费顺序准确性的方法的方法流程图;
[0031]
图2为本发明提出的fastdtw细粒度变化计算过程图。
具体实施方式
[0032]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
[0033]
实施例一
[0034]
参照图1-2,基于mq框架确保消息队列消费顺序准确性的方法,包括如下步骤:
[0035]
步骤一、先将消息消费产生的业务数据以发送queue-1、queue-2、....、queue-n的队列形式发送至生产者的业务服务端口,并对多组发送的业务数据进行分区处理,且由时间戳对业务数据的时间进行标记;
[0036]
步骤二、再将处理后生产者的业务服务端口产生的各业务数据发送至zfs-mqs进行全局消息(mongodb)保存,再对保存的全局消息进行统一补偿;
[0037]
步骤三、后对生产者的业务服务端口产生的业务数据统一补偿后保存的全局业务数据存入本地消息表中;
[0038]
步骤四、接着再将处理后的业务数据以发送queue-1、queue-2、....、queue-n的队列形式发送至mq端,对业务数据的消费消息进行处理,再根据fastdtw公式计算判断redis是否存在,若redis存在时,则调用业务服务完成业务处理,并到达消费者的业务服务端,然后再根据当前顺序业务数据的处理批次进行redis消费记录,最后再发送下一条业务数据消息,以此类推,直至所有顺序的队列业务数据处理完成为止;
[0039]
步骤五、若redis不存在时,返回初始级再次处理判断,并作出告警措施,通过步骤一到五,实现消息信息数据的分区队列划分和先进先出原则的顺序排序,保证在同一服务端口中的多个消息具有事务特性,使多个对列之间也可保证消息顺序性,能严格保证在集群和单机部署模式下的消息顺序性,以防消费失败,导致消息信息发生阻塞,同时也防止重复消费,再基于mq框架采用fastdtw公式对各队列信息数据进行精准且全面的计算判断,提高较多消息队列的准确性。
[0040]
实施例二
[0041]
在实施例一的基础上改进:基于mq框架确保消息队列消费顺序准确性的方法,包括如下步骤:
[0042]
步骤一、先将消息消费产生的业务数据以发送queue-1、queue-2、....、queue-n的队列形式发送至生产者的业务服务端口,并对多组发送的业务数据进行分区处理,由消息生产组件对发送的队列形式业务数据根据业务id进行分区计算,且对每条业务数据划分为一个虚拟分区,并在分区内利用先进先出原则对同一业务数据下多个消息按照顺序整理,
直至投递的队列消息整理消费完毕为止,使各队列信息数据得以按顺序排列,保证各队列信息数据的完整性和有序性,以防出现堵塞和混乱,且由时间戳对业务数据的时间进行标记;
[0043]
步骤二、再将处理后生产者的业务服务端口产生的各业务数据发送至zfs-mqs进行全局消息(mongodb)保存,再对保存的全局消息进行统一补偿,全局消息保存完成后,对保存的全局消息进行实时监控,且按照消息积压、消费失败等依据进行初期实时告警,对异常消息进行警示,提高消息的处理安全性;
[0044]
步骤三、后对生产者的业务服务端口产生的业务数据统一补偿后保存的全局业务数据存入本地消息表中,登录可视化消息管理界面,对统一补偿后消息的生命周期进行跟踪,查看消息的创建时间、消费时间、消息内容、补偿次数、失败原因等情况,对于未补偿的消息可由手动补偿消息手段进行处理,方便后期进行追踪溯源,追查责任人,完善奖惩制度;
[0045]
步骤四、接着再将处理后的业务数据以发送queue-1、queue-2、....、queue-n的队列形式发送至mq端,对业务数据的消费消息进行处理,投递的队列消息处理完成后,再按照队列数据来源统一消息消费者,并从mq中获取消息后进行幂等重复消费判断,防止消息数据发送重叠和错误,提高消费信息的精准度,fastdtw公式以redis消费记录的时间序列相似性、不确定时间序列以及期望距离作为判断依据,在fastdtw公式以时间序列相似性作为判断依据时,先对redis消费记录的时间序列按照c={s1、s1...sn}进行设定,其中n表示时间序列的数量,则fastdtw公式为:rq(q、c、ε)={s|s∈c|distance(q,s)≤ε},其中ε为距离阔值,在fastdtw公式以不确定时间序列作为判断依据时,先将不确定时间序列中的每个数据队列元素设置为x,即:x=r(x)+ε(x),其中r(x)表示该数据队列元素的真实值,ε(x)表示该数据队列元素的误差值,并将不确定时间序列中的总时间设置为t,即t=(t1、t2....ti),且ti是在时间戳i对真实值的随机变量,在fastdtw公式以期望距离作为判断依据时,期望距离是指两个时间序列x和y的概率分布为f(x)和f(y),则f(x)和f(y)的期望距离为:e(x、y)=∫
+∞-∞

+∞-∞
pointsdis(x,y)f
x,y
(x,y)dxdy,其中,pointsdis(x,y)可以用||x-y||2表示,即x2+y
2-2|xy|,可以推导出e(x、y)=e(x2)+e(y2)-2e(x)e(y)={(e(x)-e(y))}2+var(x)+var(y),fastdtw公式在执行mq框架的计算步骤为:
[0046]
a、先输入采集到的序列a以及待检测的确定时间序列b;
[0047]
b、fastdtw算法以redis消费记录的时间序列相似性、不确定时间序列以及期望距离作为判断依据执行,当粗粒度进行到第n(n》3)次细粒度化时,把细粒度化好的矩阵放入mq框架中执行计算;
[0048]
c、执行mr计算:
[0049]
c1、由于fastdtw的计算矩阵是n*m矩阵,先将序列x划分为长度分别为[m/p]的p个子序列x0,x1,

x
p-1
,再将序列y划分为长度分别为[n/q]的q个子序列y0,y1,
…yp-1
,构造p*q个子矩阵m
f*g
,fε[1,p],gε[1,q],且每个子矩阵的规模为[m*n]/[p*q];
[0050]
c2、每个子矩阵求的路径作为key值,编号作为value值进行排序;
[0051]
c3、排序过后的值传入reduce部分进行路径汇总筛选,并规约在一起得出redis中业务队列总的动态规约路径,从时间序列相似性、不确定时间序列以及期望距离三个判断依据出发,进一步提高消息数据的判断精准度,以防出现错漏,避免给使用方造成重大经济
损失,保证各队列消费信息数据的顺序性、完整性和精准性,利于使用方对消费信息数据的快速处理,以便使用方有效开展工作,再根据fastdtw公式计算判断redis是否存在,若redis存在时,则调用业务服务完成业务处理,并到达消费者的业务服务端,然后再根据当前顺序业务数据的处理批次进行redis消费记录,最后再发送下一条业务数据消息,以此类推,直至所有顺序的队列业务数据处理完成为止;
[0052]
步骤五、若redis不存在时,返回初始级再次处理判断,并作出告警措施,通过步骤一到五,实现消息信息数据的分区队列划分和先进先出原则的顺序排序,保证在同一服务端口中的多个消息具有事务特性,使多个对列之间也可保证消息顺序性,能严格保证在集群和单机部署模式下的消息顺序性,以防消费失败,导致消息信息发生阻塞,同时也防止重复消费,再基于mq框架采用fastdtw公式对各队列信息数据进行精准且全面的计算判断,提高较多消息队列的准确性。
[0053]
根据图2可知:第—幅图表示在递归最底层阶段执行fastdtw算法,第二幅图表示在递归返回阶段将第—幅图求得的路径经过的方格进行细分,并且向左右,上下以及左上右下的斜对角方向扩展r个单位重新执行fastdtw算法得到的新路径,以此类推.直到最后求得最终的路径。
[0054]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1