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

一种高可用性的实时消息分发方法及装置与流程

2022-07-27 16:28:39 来源:中国专利 TAG:


1.本发明涉及消息分发领域,更具体涉及一种高可用性的实时消息分发方法及装置。


背景技术:

2.伴随着互联网的高速发展,大数据实时消息发布订阅框架、计算框架广泛应用于实时监控,实时推荐,实时交易等系统。为了能够实时获取、消费数据流,实时发布订阅消息系统得到了广泛应用,但随着用户数量的指数级增长,数据实时性和消息系统可靠性面临巨大挑战。目前主流的消息系统主要通过消息队列实现数据的实时分发,其可靠性主要通过数据的备份、数据的一致性来保证。当前消息队列数据不一致性的主要原因是海量数据形成的数据集群中,主、从副本数据不一致。通常主、从副本在不同物理节点中,主从副本通信的成本很高,需要经过网络,并且花费大量磁盘调度时间,网络传输和磁盘调度使得集群负载加大,会降低集群性能;另一方面消息生产速率与消息消费速率通常是不一致的,当消息的生产速率大于消息的消费速率时,最终会导致消息缓存溢出,造成数据丢失,同步式消息生产虽然能解决数据丢失问题,但会影响消息集群的吞吐能力。
3.中国专利授权公告号cn111866191b,公开了一种消息事件的分发方法、分发平台、系统及服务器,涉及互联网的技术领域,该方法包括:如果监测到消息发布服务发布的消息事件,获取预先存储的配置信息;根据配置信息对消息事件进行分裂,得到消息事件对应的至少一个目标消息事件;将至少一个目标消息事件分类存储至消息订阅服务对应的消息队列;启动预先配置的消息订阅服务的协程组,通过协程组从消息队列中获取消息订阅服务对应的目标消息事件,并将目标消息事件推送至消息订阅服务。该发明提供的消息事件的分发方法、分发平台、系统及服务器,有可以快速进行消息队列集群化,便于后期的维护和监控,进而提高了整个消息事件分发过程的稳定性。但是其无法解决数据实时性和消息系统可靠性的问题。


技术实现要素:

4.本发明所要解决的技术问题在于现有技术消息分发方法无法解决数据实时性和消息系统可靠性的问题。
5.本发明通过以下技术手段实现解决上述技术问题的:一种高可用性的实时消息分发方法,所述方法包括:
6.在消息实时分发过程中根据消息订阅频次计算消息热度;
7.根据消息热度大小将各消息划分到不同的缓存队列中并进行自适应副本同步,释放热度低于预设值的消息的副本;
8.带权重的队列选择器根据消息热度大小给各缓存队列分配权重并根据权重与消息发布频率之间的映射关系,将消息按照不同频率分发,消息热度的大小与权重大小成正比;
9.消息发送线程读取带权重的队列选择器发送过来的消息并经消息代理发送给消息订阅者,消息发送线程读取消息的过程中,缓存队列里的数据有问题的情况下拉取其对应的同步副本数据。
10.本发明根据消息热度大小将各消息划分到不同的缓存队列中并进行自适应副本同步,释放热度低于预设值的消息的副本,最大限度的降低冗余备份,系统可靠性强,同时为不同热度的消息建立不同的缓存队列,并且实现实时消息热度分级,动态的变更消息所在的缓存队列,实时性强,带权重的队列选择器根据消息热度大小给各缓存队列分配权重并根据权重与消息发布频率之间的映射关系,将消息按照不同频率分发,将极大改善消息发布速率,整个系统高速率工作的同时具有较高的实时性和可靠性。
11.进一步地,所述计算消息热度包括:
12.通过公式si=∑ei/ti计算第i个时间周期ti内的消息访问热度,其中,ei表示第i个时间周期ti内消息被访问的次数;
13.通过公式h(i)=εsi (1-ε)h
(i-1)
计算第i个时间周期ti内消息热度,其中,ε表示当前所求得的消息热度对预估值的影响权值。
14.更进一步地,所述自适应副本同步包括:
15.通过公式fi=w/ti计算周期ti内的消息的副本更新频率,其中,w代表某个周期ti中消息补偿偏移量;
16.当h(i)/fi>1时,采用同步方式对消息进行副本同步;
17.当h(i)/fi<1时,对消息从待更新副本集合中移除,不进行副本同步。
18.更进一步地,所述自适应副本同步还包括:
19.通过md5散列算法计算缓存队列中同一位置的消息当前时刻与上一时刻的md5值,判断md5值是否相同,若相同则消息未更新,若不同则消息已更新,消息已更新的情况下拉取当前时刻的消息作为该消息的副本,替换该消息之前的副本。
20.进一步地,所述根据消息热度大小将各消息划分到不同的缓存队列包括:
21.根据消息热度大小将各消息划分到高频次消息缓存、中频次消息缓存以及低频次消息缓存中,所述消息热度大小在第一范围内的消息分到高频次消息缓存中,所述消息热度大小在第二范围内的消息分到中频次消息缓存中,所述消息热度大小在第三范围内的消息分到低频次消息缓存中,第一范围的消息热度大于第二范围的消息热度,第二范围的消息热度大于第三范围的消息热度。
22.更进一步地,所述带权重的队列选择器根据消息热度大小给各缓存队列分配权重包括:
23.将时间戳与截止时间差值小于阈值的消息提升到上一个层次的消息缓存中,如果上一个层次的消息缓存中无剩余空间,则时间戳与截止时间差值小于阈值的消息仍然在原缓存中。
24.更进一步地,所述将时间戳与截止时间差值小于阈值的消息提升到上一个层次的消息缓存中包括:
25.当高频次消息缓存有剩余空间,将时间戳与截止时间差值小于阈值的中频次消息缓存中的消息放入高频次消息缓存中;当中频次消息缓存有剩余空间,将时间戳与截止时间差值小于阈值的低频次消息缓存中的消息放入中频次消息缓存中。
26.本发明还提供一种高可用性的实时消息分发装置,所述装置包括:
27.消息热度计算模块,用于在消息实时分发过程中根据消息订阅频次计算消息热度;
28.自适应副本同步模块,用于根据消息热度大小将各消息划分到不同的缓存队列中并进行自适应副本同步,释放热度低于预设值的消息的副本;
29.消息分发模块,用于带权重的队列选择器根据消息热度大小给各缓存队列分配权重并根据权重与消息发布频率之间的映射关系,将消息按照不同频率分发,消息热度的大小与权重大小成正比;
30.消息订阅模块,用于消息发送线程读取带权重的队列选择器发送过来的消息并经消息代理发送给消息订阅者,消息发送线程读取消息的过程中,缓存队列里的数据有问题的情况下拉取其对应的同步副本数据。
31.进一步地,所述计算消息热度包括:
32.通过公式si=∑ei/ti计算第i个时间周期ti内的消息访问热度,其中,ei表示第i个时间周期ti内消息被访问的次数;
33.通过公式h(i)=εsi (1-ε)h
(i-1)
计算第i个时间周期ti内消息热度,其中,ε表示当前所求得的消息热度对预估值的影响权值。
34.更进一步地,所述自适应副本同步包括:
35.通过公式fi=w/ti计算周期ti内的消息的副本更新频率,其中,w代表某个周期ti中消息补偿偏移量;
36.当h(i)/fi>1时,采用同步方式对消息进行副本同步;
37.当h(i)/fi<1时,对消息从待更新副本集合中移除,不进行副本同步。
38.更进一步地,所述自适应副本同步还包括:
39.通过md5散列算法计算缓存队列中同一位置的消息当前时刻与上一时刻的md5值,判断md5值是否相同,若相同则消息未更新,若不同则消息已更新,消息已更新的情况下拉取当前时刻的消息作为该消息的副本,替换该消息之前的副本。
40.进一步地,所述根据消息热度大小将各消息划分到不同的缓存队列包括:
41.根据消息热度大小将各消息划分到高频次消息缓存、中频次消息缓存以及低频次消息缓存中,所述消息热度大小在第一范围内的消息分到高频次消息缓存中,所述消息热度大小在第二范围内的消息分到中频次消息缓存中,所述消息热度大小在第三范围内的消息分到低频次消息缓存中,第一范围的消息热度大于第二范围的消息热度,第二范围的消息热度大于第三范围的消息热度。
42.更进一步地,所述带权重的队列选择器根据消息热度大小给各缓存队列分配权重包括:
43.将时间戳与截止时间差值小于阈值的消息提升到上一个层次的消息缓存中,如果上一个层次的消息缓存中无剩余空间,则时间戳与截止时间差值小于阈值的消息仍然在原缓存中。
44.更进一步地,所述将时间戳与截止时间差值小于阈值的消息提升到上一个层次的消息缓存中包括:
45.当高频次消息缓存有剩余空间,将时间戳与截止时间差值小于阈值的中频次消息
缓存中的消息放入高频次消息缓存中;当中频次消息缓存有剩余空间,将时间戳与截止时间差值小于阈值的低频次消息缓存中的消息放入中频次消息缓存中。
46.本发明的优点在于:
47.(1)本发明根据消息热度大小将各消息划分到不同的缓存队列中并进行自适应副本同步,释放热度低于预设值的消息的副本,最大限度的降低冗余备份,系统可靠性强,同时为不同热度的消息建立不同的缓存队列,并且实现实时消息热度分级,动态的变更消息所在的缓存队列,实时性强,带权重的队列选择器根据消息热度大小给各缓存队列分配权重并根据权重与消息发布频率之间的映射关系,将消息按照不同频率分发,将极大改善消息发布速率,整个系统高速率工作的同时具有较高的实时性和可靠性。
48.(2)本发明根据副本更新频率与消息热度之间的比值判断需不需同步副本,相比现有技术对所有消息都进行副本同步的方案,极大减少冗余备份,提升系统的消息发布速率,提高系统可靠性。
49.(3)本发明将时间戳与截止时间差值小于阈值的消息提升到上一个层次的消息缓存中,如果上一个层次的消息缓存中无剩余空间,则时间戳与截止时间差值小于阈值的消息仍然在原缓存中,合理调度多队列缓存,最大限度的保证了实时消息分发的可用性。
附图说明
50.图1为本发明实施例所公开的一种高可用性的实时消息分发方法中基于消息分发热度的自适应消息同步副本过程示意图;
51.图2为本发明实施例所公开的一种高可用性的实时消息分发方法中实时消息多队列动态缓存过程示意图。
具体实施方式
52.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
53.实施例1
54.一种高可用性的实时消息分发方法,所述方法包括:
55.在消息实时分发过程中根据消息订阅频次计算消息热度;
56.根据消息热度大小将各消息划分到不同的缓存队列中并进行自适应副本同步,释放热度低于预设值的消息的副本;
57.带权重的队列选择器根据消息热度大小给各缓存队列分配权重并根据权重与消息发布频率之间的映射关系,将消息按照不同频率分发,消息热度的大小与权重大小成正比;
58.消息发送线程读取带权重的队列选择器发送过来的消息并经消息代理发送给消息订阅者,消息发送线程读取消息的过程中,缓存队列里的数据有问题的情况下拉取其对应的同步副本数据。以下详细介绍本发明的具体实施过程。
59.1基于消息热度的自适应副本数据同步策略
60.1.1消息热度自适应
61.消息副本保证数据的可靠性的同时也带来了集群负载增大的问题。一个时间周期内,消息订阅频率越高,则表示消息的需求量和订阅热度越大。用访问频率si来代表第i个时间周期ti内的消息访问热度,ei表示第i个时间周期ti内消息被访问的次数。
62.通过公式si=∑ei/ti计算第i个时间周期ti内的消息访问热度;
63.消息热度自适应采用lrfu(leastrecently frequently used)算法计算第i个时间周期ti内消息被访问的次数,lrfu算法结合lru(least recently used,最近最少使用)算法和lfu(least frequently used,最不经常使用)算法。不仅考虑了时间对结果的影响,还结合访问频率对结果影响。可给出自适应消息热度。
64.1.2消息热度预估计算
65.用户的需求不一样,所以造成订阅消息的频次不一样,即消息的热度不一样,消息热度的变化会在该消息热度前一个时刻的基础上变化,因此当前消息热度预估可基于前一时刻消息热度预估,而前一时刻消息热度预估又可以通过前一时刻的前一时刻预估。消息热度预估每过时间ti会重新去预估下一段时间的消息热度,根据这个预估的消息热度值,动态的选择在下一时段内此消息副本的更新策略。不仅考虑了消息当前热度对预测热度的影响,还考虑历史消息热度值对预测值的影响。消息预估的热度值h(i),其求解方式如式所示:
66.h(i)=εsi (1-ε)h
(i-1)
,其中,h(i)代表了第i个时间周期ti内消息的历史热度,h
(i-1)
代表着第i-1个时间周期t
i-1
时内消息的历史热度,h(i)是基于上述公式根据h
(i-1)
预估得到的,ε表示当前所求得的消息热度对预估值的影响权值。
67.1.3自适应副本数据同步
68.所有消息的副本在更新时由于慢副本、卡主副本等几种原因,从而导致有的副本更新滞后,影响数据一致性。因此,副本的更新频率也会影响到数据的一致性,副本更新频率fi为:
69.fi=w/ti,其中,w代表某个周期ti中消息补偿偏移量;在时间周期t
i-1
内的消息热度预测得到一时间周期热度h(i),根据此预测值,结合后继消息在周期内的更新频率fi,动态调整其同步策略。
70.当h(i)/fi>1时,代表此消息的消费速率比消息的后继消息更新速率要大,此时消息的这个副本就满足强一致性更新,采用同步方式对消息进行副本同步;
71.当h(i)/fi<1时,代表了消息的消费速率比消息的后继消息更新速率小,此时就需要把这个消息副本从待更新集合中移除,进行弱一致性更新,不进行副本同步。
72.所述自适应副本同步还包括:通过md5散列算法计算缓存队列中同一位置的消息当前时刻与上一时刻的md5值,判断md5值是否相同,若相同则消息未更新,若不同则消息已更新,消息已更新的情况下拉取当前时刻的消息作为该消息的副本,替换该消息之前的副本。
73.2实时同步的消息热度的分级缓存
74.2.1多队列缓存机制
75.在大数据分发的情况下,随着时间的增加,缓存队列的数据会越来越大,造成队列溢出,数据丢失。实时同步的消息热度的分级缓存,一方面增大缓存能力,另一方面划分了
高频次消息缓存,中频次消息缓存,低频次消息缓存队列,为不同频次的消息配置不同的资源,有效的提高资源的使用效率。实时同步的消息热度的分级缓存分为高,中,低频次,根据不同的消息热度将消息放入不同的缓存队列中,实现数据的分流存储,读取数据线程采用轮询的方式从不同级别的队列中去读取数据,热度越高的读取队列,每次轮询的时间片更长,基于消息分发热度的自适应消息同步副本如图1所示。具体过程为:
76.根据消息热度大小将各消息划分到高频次消息缓存、中频次消息缓存以及低频次消息缓存中,所述消息热度大小在第一范围内的消息分到高频次消息缓存中,所述消息热度大小在第二范围内的消息分到中频次消息缓存中,所述消息热度大小在第三范围内的消息分到低频次消息缓存中,第一范围的消息热度大于第二范围的消息热度,第二范围的消息热度大于第三范围的消息热度。
77.2.2多队列模型
78.实时同步的消息热度的分级缓存过程如图2所示。采用并行多队列调度方法来进行消息分发,既满足数据的可靠性,又要能够更加充分地利用系统资源。带权重的队列选择器根据消息热度大小给各缓存队列分配权重并根据权重与消息发布频率之间的映射关系,将消息按照不同频率分发,消息热度的大小与权重大小成正比。所述带权重的队列选择器根据改进的wfq算法合理调度多队列缓存,根据消息热度大小给各缓存队列分配权重。
79.2.3改进的wfq算法合理调度多队列缓存
80.现有的调度策略多种多样,例如先进先出,时间片轮转,短作业优先,wrr,wfq等等策略。为使下游消费者能够及时的获取各种热度的数据,降低消费的延迟,采用更加公平的基于消息热度的多队列调度算法。wfq是一个复杂的排队过程,可以保证相同优先级业务间公平,不同优先级业务间加权。队列的数目可预先配置,默认范围是(16-4096)。实时消息多队列的wfq入队过程采用hash算法来自动完成,将不同的热度消息分入不同的队列。在出队的时候,wfq按消息的优先级来分配每个消息流应占有出口时间片。优先级的数值越小,所得的带宽越少。优先级的数值越大,所得的带宽越多。这样就保证了相同优先级业务之间的公平,体现了不同优先级业务之间的权值。本发明中改进的wfq算法通过计算出消息timestamp(时间戳)后,调度器会对所有队列维护的时间戳进行对比,将时间戳与截止时间最接近的消息增加权重,当高频次消息缓存有剩余空间,将时间戳与截止时间差值小于阈值的中频次消息缓存中的消息放入高频次消息缓存中;当中频次消息缓存有剩余空间,将时间戳与截止时间差值小于阈值的低频次消息缓存中的消息放入中频次消息缓存中,即将时间戳与截止时间差值小于阈值的消息提升到上一个层次的消息缓存中,如果上一个层次的消息缓存中无剩余空间,则时间戳与截止时间差值小于阈值的消息仍然在原缓存中。改进wfq算法,合理调度多队列缓存最大限度的保证了实时消息分发的可用性。
81.通过以上技术方案,本发明根据消息热度大小将各消息划分到不同的缓存队列中并进行自适应副本同步,释放热度低于预设值的消息的副本,最大限度的降低冗余备份,系统可靠性强,同时为不同热度的消息建立不同的缓存队列,并且实现实时消息热度分级,动态的变更消息所在的缓存队列,实时性强,带权重的队列选择器根据消息热度大小给各缓存队列分配权重并根据权重与消息发布频率之间的映射关系,将消息按照不同频率分发,将极大改善消息发布速率,整个系统高速率工作的同时具有较高的实时性和可靠性。
82.实施例2
83.基于实施例1,本发明实施例2还提供一种高可用性的实时消息分发装置,所述装置包括:
84.消息热度计算模块,用于在消息实时分发过程中根据消息订阅频次计算消息热度;
85.自适应副本同步模块,用于根据消息热度大小将各消息划分到不同的缓存队列中并进行自适应副本同步,释放热度低于预设值的消息的副本;
86.消息分发模块,用于带权重的队列选择器根据消息热度大小给各缓存队列分配权重并根据权重与消息发布频率之间的映射关系,将消息按照不同频率分发,消息热度的大小与权重大小成正比;
87.消息订阅模块,用于消息发送线程读取带权重的队列选择器发送过来的消息并经消息代理发送给消息订阅者,消息发送线程读取消息的过程中,缓存队列里的数据有问题的情况下拉取其对应的同步副本数据。
88.具体的,所述计算消息热度包括:
89.通过公式si=∑ei/ti计算第i个时间周期ti内的消息访问热度,其中,ei表示第i个时间周期ti内消息被访问的次数;
90.通过公式h(i)=εsi (1-ε)h
(i-1)
计算第i个时间周期ti内消息热度,其中,ε表示当前所求得的消息热度对预估值的影响权值。
91.更具体的,所述自适应副本同步包括:
92.通过公式fi=w/ti计算周期ti内的消息的副本更新频率,其中,w代表某个周期ti中消息补偿偏移量;
93.当h(i)/fi>1时,采用同步方式对消息进行副本同步;
94.当h(i)/fi<1时,对消息从待更新副本集合中移除,不进行副本同步。
95.更具体的,所述自适应副本同步还包括:
96.通过md5散列算法计算缓存队列中同一位置的消息当前时刻与上一时刻的md5值,判断md5值是否相同,若相同则消息未更新,若不同则消息已更新,消息已更新的情况下拉取当前时刻的消息作为该消息的副本,替换该消息之前的副本。
97.具体的,所述根据消息热度大小将各消息划分到不同的缓存队列包括:
98.根据消息热度大小将各消息划分到高频次消息缓存、中频次消息缓存以及低频次消息缓存中,所述消息热度大小在第一范围内的消息分到高频次消息缓存中,所述消息热度大小在第二范围内的消息分到中频次消息缓存中,所述消息热度大小在第三范围内的消息分到低频次消息缓存中,第一范围的消息热度大于第二范围的消息热度,第二范围的消息热度大于第三范围的消息热度。
99.更具体的,所述带权重的队列选择器根据消息热度大小给各缓存队列分配权重包括:
100.将时间戳与截止时间差值小于阈值的消息提升到上一个层次的消息缓存中,如果上一个层次的消息缓存中无剩余空间,则时间戳与截止时间差值小于阈值的消息仍然在原缓存中。
101.更具体的,所述将时间戳与截止时间差值小于阈值的消息提升到上一个层次的消息缓存中包括:
102.当高频次消息缓存有剩余空间,将时间戳与截止时间差值小于阈值的中频次消息缓存中的消息放入高频次消息缓存中;当中频次消息缓存有剩余空间,将时间戳与截止时间差值小于阈值的低频次消息缓存中的消息放入中频次消息缓存中。
103.以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

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

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

相关文献