一种实时数据处理方法技术

技术编号:32278327 阅读:14 留言:0更新日期:2022-02-12 19:44
本发明专利技术提供的一种实时数据处理方法,所述处理方法包括:rocketmq服务端将实时数据推送到对应的消息队列上;所述消息队列包括多个消息子队列,将所述实时数据平均分配到多个所述消息子队列上;将所述消息子队列上的消息采用负载均衡算法调度,获得调度信息;将所述调度信息分配到多个客户端;所述客户端将所述调度信息发送至数据处理模块进行数据处理。解决了单个mq客户端宕机带来的消息无法接收的问题,提高了数据接收性能,实现了实时数据处理暂停和重启,并从根本上解决了高并发的情况下,丢失更新的问题,同时避免了数据积压或者数据处理失败造成的数据丢失,大大提高重新读取数据处理的性能。处理的性能。处理的性能。

【技术实现步骤摘要】
一种实时数据处理方法


[0001]本专利技术涉及数据处理领域,尤其涉及一种实时数据处理方法。

技术介绍

[0002]Redis缓存:Redis是一个高性能的key

value内存数据库。官方性能测试set操作每秒110000次,get操作每秒81000次,常被用来做缓存。
[0003]rocketmq:是阿里开源分布式消息队列。rocketmq以topic来进行消息管理,每个topic包含多个partition队列,发布者发到某个topic的消息会被均匀的分布到多个partition上。Zookeeper协调控制,当consumer加入或离开时会触发负载均衡算法,使得一个consumer group内的多个consumer的负载均衡。
[0004]LevelDB:Leveldb是一个google实现的非常高效的kv数据库,目前能够支持十亿级别的数据量了。LevelDB是单进程的服务,性能非常之高,在一台4核Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。
[0005]Zookeeper:Zookeeper是一个Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括。配置维护、名字服务、分布式同步、组服务等,ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
[0006]现有方案如果应用RocketMQ客户端意外宕机,导致消息积压,无法处理,影响数据的实时性。
[0007]现有技术中,数据处理任务只能由线程自己调度,无法实现暂停和重启。现有技术中会出现多线程同时更新数据,导致更新丢失的情况,若想避免此情况,则无法实现高并发,高性能的处理消息。如果消息处理失败,需要从数据库读出未处理的消息,如果积压过多的消息未处理,Broker性能下降,处理效率低下。

技术实现思路

[0008]鉴于上述问题,提出了本专利技术以便提供克服上述问题或者至少部分地解决上述问题的一种实时数据处理方法。
[0009]根据本专利技术的一个方面,提供了一种实时数据处理方法,所述处理方法包括:
[0010]rocketmq服务端将实时数据推送到对应的消息队列上;
[0011]所述消息队列包括多个消息子队列,将所述实时数据平均分配到多个所述消息子队列上;
[0012]将所述消息子队列上的消息采用负载均衡算法调度,获得调度信息;
[0013]将所述调度信息分配到多个客户端;
[0014]所述客户端将所述调度信息发送至数据处理模块进行数据处理。
[0015]可选的,所述客户端将所述调度信息发送至数据处理模块进行数据处理具体包括:
[0016]将所述实时数据发送至客户端接收数据;
[0017]将所述接收数据进行存储,并发送至数据分发模块;
[0018]所述数据分发模块将数据发送至多个数据处理单元,每个所述数据处理单元对数据进行相应的状态变更,获得变更数据;
[0019]将所述变更数据发送至数据库进行存储。
[0020]可选的,所述将所述接收数据进行存储,并发送至数据分发模块之后还包括:将所述接收数据发送至缓存模块,将所述接收数据进行缓存。
[0021]可选的,所述数据分发模块还用于将未处理的数据发送至数据存储器,进行数据存储。
[0022]本专利技术提供的一种实时数据处理方法,所述处理方法包括:rocketmq服务端将实时数据推送到对应的消息队列上;所述消息队列包括多个消息子队列,将所述实时数据平均分配到多个所述消息子队列上;将所述消息子队列上的消息采用负载均衡算法调度,获得调度信息;将所述调度信息分配到多个客户端;所述客户端将所述调度信息发送至数据处理模块进行数据处理。解决了单个mq客户端宕机带来的消息无法接收的问题,提高了数据接收性能,实现了实时数据处理暂停和重启,并从根本上解决了高并发的情况下,丢失更新的问题,同时避免了数据积压或者数据处理失败造成的数据丢失,大大提高重新读取数据处理的性能。
[0023]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。
附图说明
[0024]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0025]图1为本专利技术实施例提供的一种实时数据处理方法流程图;
[0026]图2为本专利技术实施例提供的一种数据处理过程流程图。
具体实施方式
[0027]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0028]本专利技术的说明书实施例和权利要求书及附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。
[0029]下面结合附图和实施例,对本专利技术的技术方案做进一步的详细描述。
[0030]如图1所示,rocketmq服务端将实时数据推送到对应的topic上,由于每个topic分多个queue,这些数据会被平均的分配到这些queue上。mq客户端接收数据的时候,需要指定
topic,这些客户端连接经过ZooKeeper调度,将自动负载均衡分配到这个topic的queue上面,当有客户端加入或者离开时,会触发ZooKeeper负载均衡算法,实现自动负载均衡。此方案既能解决单个客户端宕机造成的数据积压,又能解决服务端大批量数据推送数据,客户端接收效率低的问题。
[0031]如图2所示,mq客户端接收实时消息,首先存储到levelDB中,存储成功之后,调用消息分发模块,将消息分发到不同的消息处理模块。每个模块内都有单独的队列,由单独的线程进行处理。消息处理成功之后,会将数据库对应的消息状态变更为已处理,同时删除levelDB中的消息;如果处理失败,不变更状态。消息分发模块定时从levelDB中读取未处理的数据重新处理,保证了处理数据的准确性。
[0032]当需要暂停处理的时候,系统会发出一条加锁指令到数据分发模块,数据分发模块收到加锁指令后,会将指令分发到所有数据处理模块。当数据处理模块收到指令后,首先会清空模块内存队列,然后等待处理完当前正在处理的数据。当所有模块都处理完当前的数据后,每个模块内的线程都处于阻塞状态,此时redis中锁状态变为LOCKING,所有数据模块暂停处理,等待redis锁状态变为本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种实时数据处理方法,其特征在于,所述处理方法包括:rocketmq服务端将实时数据推送到对应的消息队列上;所述消息队列包括多个消息子队列,将所述实时数据平均分配到多个所述消息子队列上;将所述消息子队列上的消息采用负载均衡算法调度,获得调度信息;将所述调度信息分配到多个客户端;所述客户端将所述调度信息发送至数据处理模块进行数据处理。2.根据权利要求1所述的一种实时数据处理方法,其特征在于,所述客户端将所述调度信息发送至数据处理模块进行数据处理具体包括:将所述实时数据发送至客户端接收数据;将...

【专利技术属性】
技术研发人员:贾明库
申请(专利权)人:首约科技北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1