CN105224550A - 分布式流计算系统和方法 - Google Patents
分布式流计算系统和方法 Download PDFInfo
- Publication number
- CN105224550A CN105224550A CN201410253627.8A CN201410253627A CN105224550A CN 105224550 A CN105224550 A CN 105224550A CN 201410253627 A CN201410253627 A CN 201410253627A CN 105224550 A CN105224550 A CN 105224550A
- Authority
- CN
- China
- Prior art keywords
- computing unit
- service request
- control module
- layer
- data
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000004364 calculation method Methods 0.000 claims abstract description 159
- 230000008569 process Effects 0.000 claims description 15
- 230000000295 complement effect Effects 0.000 claims description 5
- 238000009792 diffusion process Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 101100335572 Escherichia coli (strain K12) ftsN gene Proteins 0.000 description 2
- 238000009432 framing Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 101150106977 msgA gene Proteins 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000009412 basement excavation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 101150000582 dapE gene Proteins 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Abstract
本发明涉及一种分布式流计算系统和方法。所述系统包括接口模块、计算控制模块和任务跟踪模块;所述接口模块用于接收业务请求;所述计算控制模块用于从全局配置层获取与所述业务请求对应的计算拓扑,根据所述计算拓扑对所述业务请求进行处理得到所述业务请求的执行情况,并将所述业务请求的执行情况上报给所述任务跟踪模块;所述任务跟踪模块用于将所述业务请求的执行情况发送给所述接口模块;所述接口模块还用于根据所述业务请求的执行情况确定是否重发所述业务请求。上述分布式流计算系统和方法,业务数据并非存储在计算控制模块内,即使某个计算控制模块中数据丢失,该业务请求可以重发进行计算,提高了分布式流计算的容错性。
Description
技术领域
本发明涉及网络应用领域,特别是涉及一种分布式流计算系统和方法。
背景技术
计算系统主要分为offlineComputation离线计算、OnlineComputation在线计算、NearlineComputation近似在线计算。离线计算对算法的复杂度和数据量限制较少,适用于时间要求比较低,大规模海量数据基础上的复杂计算的场景,hadoop是典型离线计算系统,主要用于海量数据的统计和挖掘,hadoop适用于大数据小计算场景,不适合计算复杂度太高的算法;在线计算主要提供实时服务,它面向算法有一定复杂度但数据量不大的场景;Nearline计算是处于离线计算和在线计算之间的一种计算状态,部分不需要立刻应答,但计算量又比较大的服务可以采用Nearline计算。
分布式RPC(RemoteProcedureCallProtocol,远程过程调用协议)系统属于OnlineComputation在线计算系统的一种。传统的分布式流计算系统能够实现实时分布式流计算,但由于该系统的数据放在内存中,如果某个节点failover(失效转移),当前failover节点内存中的数据会全部丢失,即当前请求会失败,且没有可靠的机制保证数据消息的完全处理,故传统的分布式流计算系统的容错性低。
发明内容
基于此,有必要针对传统的分布式流计算系统的容错性低的问题,提供一种高容错的分布式流计算方法和系统。
一种分布式流计算系统,包括接口模块、计算控制模块和任务跟踪模块;
所述接口模块用于接收业务请求,并将所述业务请求发送给计算控制模块和任务跟踪模块;
所述计算控制模块用于根据所述业务请求从全局配置层获取与所述业务请求对应的计算拓扑,根据所述计算拓扑对所述业务请求进行处理得到所述业务请求的执行情况,并将所述业务请求的执行情况上报给所述任务跟踪模块;
所述任务跟踪模块用于将所述业务请求的执行情况发送给所述接口模块;
所述接口模块还用于根据所述业务请求的执行情况确定是否重发所述业务请求。
一种分布式流计算方法,包括以下步骤:
接收业务请求;
从全局配置层获取与所述业务请求对应的计算拓扑;
根据所述计算拓扑对所述业务请求进行处理得到所述业务请求的执行情况;
根据所述业务请求的执行情况确定是否重发所述业务请求。
上述分布式流计算系统和方法,通过跟踪业务请求的执行情况,并根据执行情况确定是否重发该业务请求,业务数据并非存储在计算控制模块内,即使某个计算控制模块中数据丢失,该业务请求可以重发进行计算,提高了分布式流计算的容错性。
附图说明
图1为分布式流计算系统的通用框架示意图;
图2为本发明的一种分布式流计算系统的结构框图;
图3为一个实施例中分布式流计算系统的结构框架图;
图4为一个实施例中计算单元处理消息的示意图;
图5为一个实施例中分布式流计算方法的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为分布式流计算系统的通用框架示意图。如图1所示,分布式RPC的业务请求通过接入层进入分布式流计算框架内部,分布式流计算框架根据请求类型,自动调用该请求类型的计算拓扑,接入和使用分布式流计算系统的前提时业务算法逻辑可分层,且其中一层或几层的计算可并行化,满足该前提条件的分布式流计算能更好发挥作用。
图2为本发明的一种分布式流计算系统的结构框图。如图2所示,一种分布式流计算系统,包括接口模块210、任务跟踪模块220和计算控制模块230。其中:
接口模块210用于接收业务请求,并将该业务请求发送给计算控制模块230和任务跟踪模块220。
本实施例中,接口模块210用于接收业务请求,对该业务请求解析得到key(关键字),根据key从全局配置层中获取所需转发到的节点地址,以及将所述业务请求发送至任务跟踪模块220和该节点地址所对应的计算控制模块230。
具体的,接口模块210接收业务请求后,将业务请求发送给任务跟踪模块220,由任务跟踪模块220对业务请求分配一个taskid(taskidentity,任务标识)。接口模块210还对业务请求进行解析得到key,根据该key到全局配置层中拉取需要转发到的节点IP(InternetProtocol,网络之间互连的协议)、端口等,并向任务跟踪模块220上报一条消息告知任务跟踪模块220跟踪该业务请求,然后将该业务请求发送给计算控制模块230。其中,节点IP是指计算控制模块230所在的机器的IP地址,端口是指计算控制模块230的通信端口。在一台机器上可有一个计算控制模块或多个计算控制模块。本实施例中,在一台机器上有一个计算控制模块。
其中,全局配置层用于保存分布式RPC请求调用的计算拓扑的相关信息、接口模块210、任务跟踪模块220和计算控制模块230的注册信息以及分布式RPC计算单元的分布信息,以保证分布式流计算系统配置信息的一致性和安全性。计算拓扑的相关信息包括几层计算单元、启动每层计算单元的命令、每层计算可以并行多少个进程。
此外,全局配置层提供根据key获取节点IP的函数接口,一般根据key采用hash映射的形式获取节点IP。
计算控制模块230用于根据该业务请求从全局配置层获取与该业务请求对应的计算拓扑,根据该计算拓扑对该业务请求进行处理得到该业务请求的执行情况,并将该业务请求的执行情况上报给任务跟踪模块220。
具体的,业务请求中包含业务ID(标识),全局配置层预先建立了业务ID和计算拓扑的对应关系,全局配置层根据计算控制模块230中提供的业务请求中的业务ID从业务ID和计算拓扑的对应关系中获取相应的计算拓扑,并将计算拓扑返回给计算控制模块230。
业务请求的执行情况包括业务请求执行是否成功的状态。该业务请求执行是否成功的状态包括执行成功、执行失败和超时的状态。
任务跟踪模块220用于将该业务请求的执行情况发送给接口模块210。
接口模块210还用于根据该业务请求的执行情况确定是否重发该业务请求。
具体的,业务请求执行不成功时,接口模块210重发该业务请求。
上述分布式流计算系统,通过任务跟踪模块跟踪业务请求的执行情况,并将执行情况反馈给接口模块,接口模块根据执行情况确定是否重发该业务请求,业务数据并非存储在计算控制模块内,即使某个计算控制模块中数据丢失,该业务请求可以重发进行计算,提高了分布式流计算的容错性。
在一个实施例中,计算控制模块230还用于调用该计算拓扑中的各层的计算单元对该业务请求进行处理,接收各层的计算单元对该业务请求的执行情况,并将该业务请求的执行情况上报给任务跟踪模块220。
具体的,计算控制模块230拉起计算拓扑中的各层的计算单元采用exec函数以子进程形式启动计算拓扑的各层的计算单元。只有所有层的计算单元的执行情况中执行均成功,整个业务请求的处理才为执行成功。通过任务跟踪模块对每一层计算单元的执行情况进行监控,间接对业务请求的执行情况进行可靠跟踪,从而提供可靠的分布式RPC请求服务。
上一层的计算控制模块230将数据消息传输给该上一层的计算单元,并接收该上一层的计算单元对该数据消息的计算结果,再将该计算结果传输给下一层的计算控制模块230,该上一层和下一层为相邻的两层。
具体的,数据消息包括业务标识、任务标识、key(关键字)和value(值),其中,key和value为从上一层的计算单元传输到下一层的计算单元的具体数据。上一层的计算控制模块230通过管道将数据消息传输给该上一层的计算单元。该管道是指linux中的pipe。此时,下一层的计算控制模块230暂存上一层计算单元传输给下一层计算单元的数据消息。
当上一层的计算单元计算完成后,任务跟踪模块220还用于将上一层的计算单元需要发送给下一层计算单元的数据消息数目发送至下一层的计算控制模块。
具体的,任务跟踪模块220根据计算控制模块230上报的业务请求的执行情况计算得出上一层的计算单元需要发送给下一层计算单元的数据消息数目。该业务请求的执行情况还包括输入到每个层的计算单元的数据消息和每个层的计算单元输出的数据消息。
下一层的计算控制模块还用于将从上一层的计算控制模块接收的计算结果中的数据消息数目和任务跟踪模块220发送的数据消息数目比较,若相同,则将接收的计算结果中的数据消息传输给下一层的计算单元,否则,等待。
图3为一个实施例中分布式流计算系统的结构框架图。如图3所示,该分布式流计算系统包括业务层、框架层、全局配置层和PU(ProcessingUnit,计算单元)层。框架层中包括Interface(即接口模块210)、Tasktracker(即任务跟踪模块220)和R2Sever(即计算控制模块230)。R2为分布式流计算系统的名称。全局配置层包括R2cn(即配置中心模块)。
其中,R2cn使用zookeeper集群搭建,保存分布式RPC请求调用的计算拓扑的相关信息、Interface、Tasktracker和R2Server的注册信息以及分布式RPC计算单元的分布信息,以保证分布式流计算系统配置信息的一致性和安全性。计算拓扑的相关信息包括几层计算单元、启动每层计算单元的命令、每层计算可以并行多少个进程。R2Server的注册信息包括R2Server所在的节点IP和R2server的通讯端口。
R2cn将zookeeper中的配置信息同步到SHM(本地共享内存),提供给该分布式流计算系统的其他系统单元(如Interface、Tasktracker、R2Sever)一个稳定可靠的分布式配置信息快速读写接口,同时负责分布式流计算系统中计算单元的分配工作,实现系统负载均衡。
Interface接收业务请求,该业务请求中包括业务ID、key和value,Interface向Tasktracker注册新taskid,并将业务请求发送给Tasktracker和R2Server。
Tasktracker跟踪该业务请求执行情况。
R2Server接收Interface转发的业务请求,从配置中心R2cn的本地共享内存中获取业务请求所对应的计算拓扑,拉起该计算拓扑的每一层计算单元,通过管道(pipe)将数据消息传输给计算单元,同时接收计算单元对数据消息的计算结果,并将计算结果传输给下一层的R2Server。当上一层所有计算单元全部计算完成后,Tasktracker将上一层的计算单元需要发送到下一层的计算单元的数据消息数目发送到下一层的R2Server。下一层的R2Server将上一层的R2Server传输的计算结果中的数据消息数目和Tasktracker发送的数据消息数目比较,若相同,则下一层的R2Server将接收到的计算结果中的数据消息通过管道发送到下一层的计算单元,否则等待。
计算单元可包括通用的计算单元,如排序、过滤、分组聚合等通用功能的计算单元,也包括用户根据自己的RPC请求所需要自己开发的支持不同功能的计算单元。
R2Server接收计算单元的计算结果后,将计算单元计算是否成功的状态上报给Tasktracker。Tasktracker根据上报信息,跟踪分布式RPC业务请求每层计算单元的运行情况,并在一层的计算单元的计算全部完成后,通知下一层的R2Server,并根据每一层计算单元的运行情况,监控整个分布式流计算系统中业务请求的执行情况,并将执行情况(如包括业务请求执行成功、失败或超时的状态)上报给Interface。
Tasktracker通过监控每一层计算的运行情况,结合业务的计算拓扑,可以间接实现整个计算拓扑运行情况的跟踪,只有每一层计算单元都运行成功才说明整个计算拓扑运行成功,若在此过程中,Tasktracker等待某层计算结果超时,则会上报给Interface,Interface将请求重新发送,并生成新的taskid,实现业务请求的可靠处理。
需要说明的是,不同层的计算单元所对应的R2Server可相同,也可不同,如PU1和其中一个PU2受控于一个R2Server,另一个PU2和PU3受控于另一个R2Server。
当分布式流计算系统R2某个节点死机或节点和R2CN连接故障,无法正常提供服务,节点和R2CN的心跳连接会断开,R2CN检测到节点不存在后,从其他可用节点中选取一组新的R2Server建立连接,并由Interface重发该业务请求,该R2系统的容错性高。
在一个实施例中,该计算拓扑中某层包括多个计算单元。该某层可为任意层。
该某层的计算控制模块接收所述多个计算单元中每个计算单元对数据消息的计算结果,再将所述多个计算单元中每个计算单元对数据消息的计算结果一起传输给所述某层的下一层的计算控制模块,并将多个计算单元中的每个计算单元的执行情况上报给任务跟踪模块220;
当某层的多个计算单元计算完成后,任务跟踪模块220根据该某层的每个计算单元的执行情况得到该某层的多个计算单元需要发送给该某层的下一层计算单元的数据消息数目,并将该数据消息数目发送至该某层的下一层的计算控制模块;
该某层的下一层的计算控制模块用于将从该某层的计算控制模块接收的计算结果中的数据消息数目和该任务跟踪模块发送的数据消息数目比较,若相同,则将接收的计算结果中的数据消息传输给所述下一层的计算单元。
当某层的多个计算单元中的每个计算单元完成后,某层的计算控制模块将该每个计算单元分配对应的消息标识,并将该消息标识上报给任务跟踪模块220;
当所述某层的多个计算单元完成后,任务跟踪模块220将该任务标识所对应的该某层的完成标志位清零。
每一个计算单元完成后R2Server向Tasktracker上报一个消息ID,当一层计算单元全部完成后,Tasktracker会将该taskid所对应的该层的完成标志位清零,同时Tasktracker记录数据消息在扩散层扩散的具体数目,然后告知下一层的R2Server数据消息扩散数目,下一层的R2Server将数据消息扩散数目和已经收到的计算结果中的数据消息的扩散数目比较,若相等,则下一层R2Server将暂存的收拢的数据消息通过管道发送给下一层的计算单元。
任务跟踪模块220还用于将该每个计算单元的消息标识进行异或操作,若异或操作为零,则该计算单元计算成功。
因计算拓扑中某层包括多个计算单元,将数据消息通过多个计算单元并行计算,实现了数据消息的扩散,多个计算单元的计算结果发送给下一层的计算控制模块实现了数据消息扩散后的收拢,下一层计算控制模块可将收拢后的数据消息传输给下一层的计算单元,该下一层的计算单元通过类似读文件的方式串行处理收拢后的所有数据消息。
为了说明数据消息扩散后收拢的过程,以上述分布式流计算系统应用于计算群稠密度为例进行说明。群稠密度的计算逻辑如下:假设一个群的成员个数为n,获取每一个群成员好友列表,计算群成员好友列表和群成员重合的即时通讯标识的个数icom,则一个群的稠密度gdense的计算公式如式(1):
由式(1)可知,群的稠密度的计算过程包括:求取所有群成员的群成员好友列表和群成员重合的即时通讯标识的个数之和,求取群成员个数与群成员个数减去1的乘积,再求取和与乘积的比值即得到群的稠密度。
群稠密度计算的业务逻辑接入上述分布式流计算系统,在上述分布式流计算系统内部数据消息以key-value的形式传输,群稠密度计算请求以群标识为key,分3层子计算,具体如下:
(1)第一层计算单元,根据分布式RPC业务请求的群标识拉取群成员列表,以每一个群成员的即时通讯标识为key,群标识为value,将数据消息发送到第二层计算单元;
(2)第二层计算单元,根据业务请求的即时通讯标识和群标识,分别拉取即时通讯标识的好友列表和群的群成员列表,计算好友列表和群成员列表中重合的即时通讯标识数目icom,然后以群标识为key,icom和群成员数目gnum为value发送给第三层计算单元;
(3)第三层计算单元,使用数据消息value中的icom和gnum,根据公式(1)计算群的稠密度。
由群稠密度的3层计算可知,数据消息在第二层根据群成员数目进行扩散,使得计算在第二层可以并行化,第二层的计算单元数目设置高一些,可以明显提高运算速度。在第三层计算中需要等待第二层计算的结果全部到达后,才可以得到最终群稠密度计算,为此,本发明的分布式流计算系统中采用数据消息扩散的计算层的所有计算单元(如第二层计算单元)完成并且收拢层(如第三层计算单元)已经将结果收到后,R2Server将收拢后的数据消息传输给下一层的计算单元,该下一层的计算单元能够通过类似读文件的方式串行处理收拢后的所有数据消息,不需做暂存和超时判断,降低了分布式流计算系统的复杂度。
上述分布式流计算系统采用Storm系统消息异或机制监控每一层计算单元是否完成。图4为一个实施例中计算单元处理消息的示意图。如图4所示,该计算拓扑包括三个计算单元,分别为PU1、PU2和PU3,1个业务请求的数据消息在系统内部扩散为4个,如消息标识msgA经过PU1扩散为2个消息标识msgB和msgC,2个PU2计算单元接到数据消息后计算并将计算结果通过msgD和msgE发送到PU3,PU3将计算结果合并计算后输出,在此过程中Interface和R2Server分别向Tasktracker上报如下信息:
Interface:msgA
R2Server:msgAxormsgBxormsgC
R2Server:msgBxormsgD
R2Server:msgCxormsgE
R2Server:msgDxormsgE
Tasktracker将上报的4条消息标识进行异或操作,当最终结果为msgAxormsgAxormsgBxormsgCxormsgBxormsgDxormsgCxormsgExormsgDxormsgE=0则说明业务请求计算完成,若当某taskid的所有上报到Tasktracker的msgid直到预设的超时时间点都非0,说明中间计算异常或网络丢包,则Interface将重发业务请求,从而保证业务请求执行成功。
此外,Tasktracker对每一层计算单元的消息标识进行异或,该异或操作为零,则该层计算单元计算成功。消息标识是一个随机数,每一个数据消息有一个消息标识。
上述计算拓扑采用三层计算,也可采用四层、五层等多层计算,在此不作限定。
图5为一个实施例中分布式流计算方法的流程示意图。图5中的分布式流计算方法基于上述分布式流计算系统,其中未详细描述的请参照分布式流计算系统中所描述。该分布式流计算方法,包括以下步骤:
步骤502,接口模块接收业务请求。
本实施例中,通过接口模块接收业务请求,对该业务请求解析得到关键字,根据该关键字从该全局配置层获取所需转发到的节点地址,以及将该业务请求发送至任务跟踪模块和该节点地址所对应的计算控制模块。
接口模块接收业务请求后,将业务请求发送给任务跟踪模块,由任务跟踪模块对业务请求分配一个taskid。接口模块还对业务请求进行解析得到key,根据该key到全局配置层中拉取需要转发到的节点IP、端口等,并向任务跟踪模块上报一条消息告知任务跟踪模块跟踪该业务请求,然后将该业务请求发送给计算控制模块。
步骤504,从全局配置层获取与该业务请求对应的计算拓扑。
具体的,业务请求中包含业务ID(标识),全局配置层预先建立了业务ID和计算拓扑的对应关系,全局配置层根据计算控制模块中提供的业务请求中的业务ID从业务ID和计算拓扑的对应关系中获取相应的计算拓扑,并将计算拓扑返回给计算控制模块。
步骤506,根据该计算拓扑对该业务请求进行处理得到该业务请求的执行情况。
具体的,计算控制模块将业务请求的执行情况上报给任务跟踪模块。业务请求的执行情况包括业务请求执行是否成功的状态。该业务请求执行是否成功的状态包括执行成功、执行失败和超时的状态。
步骤S508,根据该业务请求的执行情况确定是否重发所述业务请求。
具体的,任务跟踪模块将该业务请求的执行情况发送给接口模块,接口模块根据该业务请求的执行情况确定是否重发所述业务请求。
业务请求执行不成功时,接口模块重发该业务请求。
上述分布式流计算方法,跟踪业务请求的执行情况,并根据执行情况确定是否重发该业务请求,业务数据并非存储在计算控制模块内,即使某个计算控制模块中数据丢失,该业务请求可以重发进行计算,提高了分布式流计算的容错性。
在一个实施例中,根据该计算拓扑对所述业务请求进行处理得到所述业务请求的执行情况的步骤包括:
通过计算控制模块调用该计算拓扑中的各层的计算单元对该业务请求进行处理,接收各层的计算单元对该业务请求的执行情况。
此外,计算控制模块将该业务请求的执行情况上报给任务跟踪模块。
在一个实施例中,上述分布式流计算方法还包括:
上一层的计算控制模块将数据消息传输给该上一层的计算单元,并接收该上一层的计算单元对所述数据消息的计算结果,再将该计算结果传输给下一层的计算控制模块,该上一层和下一层为相邻的两层。
具体的,数据消息包括业务标识、任务标识、key(关键字)和value(值),其中,key和value为从上一层的计算单元传输到下一层的计算单元的具体数据。上一层的计算控制模块通过管道将数据消息传输给该上一层的计算单元。该管道是指linux中的pipe。此时,下一层的计算控制模块暂存上一层计算单元传输给下一层计算单元的数据消息。
在该上一层的计算控制模块将数据消息传输给该上一层的计算单元,并接收该上一层的计算单元对该数据消息的计算结果,再将该计算结果传输给下一层的计算控制模块,该上一层和下一层为相邻的两层的步骤之后,该分布式流计算方法还包括:
当上一层的计算单元计算完成后,通过任务跟踪模块将上一层的计算单元需要发送给下一层计算单元的数据消息数目发送至下一层的计算控制模块;
下一层的计算控制模块将从上一层计算控制模块接收的计算结果中的数据消息数目和所述任务跟踪模块发送的数据消息数目比较,若相同,则将接收的计算结果中的数据消息传输给所述下一层的计算单元。
在一个实施例中,计算拓扑中某层包括多个计算单元;
上述分布式流计算方法,还包括:
某层的计算控制模块接收该多个计算单元中每个计算单元对数据消息的计算结果,再将该多个计算单元中每个计算单元对数据消息的计算结果一起传输给该某层的下一层的计算控制模块,并将多个计算单元中的每个计算单元的执行情况上报给任务跟踪模块;
当某层的多个计算单元计算完成后,任务跟踪模块根据该某层的每个计算单元的执行情况得到所述某层的多个计算单元需要发送给该某层的下一层计算单元的数据消息数目,并将该数据消息数目发送至该某层的下一层的计算控制模块;
该某层的下一层的计算控制模块将从该某层的计算控制模块接收的计算结果中的数据消息数目和该任务跟踪模块发送的数据消息数目比较,若相同,则将接收的计算结果中的数据消息传输给该下一层的计算单元。
在一个实施例中,在该接收业务请求之后,所述分布式流计算方法还包括:
为该业务请求分配任务标识;
当某层的多个计算单元中的每个计算单元完成后,某层的计算控制模块将该每个计算单元分配对应的消息标识;
当某层的多个计算单元完成后,将该任务标识所对应的该某层的完成标志位清零。
上述分布式流计算方法还包括:
将该每个计算单元的消息标识进行异或操作,若异或操作为零,则该计算单元计算成功。
具体的,通过任务跟踪模块将该每个计算单元的消息标识进行异或操作,若异或操作为零,则该计算单元计算成功。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述程序可存储于一计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (16)
1.一种分布式流计算系统,其特征在于,包括接口模块、计算控制模块和任务跟踪模块;
所述接口模块用于接收业务请求,并将所述业务请求发送给计算控制模块和任务跟踪模块;
所述计算控制模块用于根据所述业务请求从全局配置层获取与所述业务请求对应的计算拓扑,根据所述计算拓扑对所述业务请求进行处理得到所述业务请求的执行情况,并将所述业务请求的执行情况上报给所述任务跟踪模块;
所述任务跟踪模块用于将所述业务请求的执行情况发送给所述接口模块;
所述接口模块还用于根据所述业务请求的执行情况确定是否重发所述业务请求。
2.根据权利要求1所述的系统,其特征在于,所述接口模块还用于接收业务请求,对所述业务请求解析得到关键字,根据所述关键字从所述全局配置层获取所需转发到的节点地址,以及将所述业务请求发送至任务跟踪模块和所述节点地址所对应的计算控制模块。
3.根据权利要求1所述的系统,其特征在于,所述计算控制模块还用于调用所述计算拓扑中的各层的计算单元对所述业务请求进行处理,接收各层的计算单元对所述业务请求的执行情况,并将所述业务请求的执行情况上报给所述任务跟踪模块。
4.根据权利要求3所述的系统,其特征在于,上一层的计算控制模块将数据消息传输给所述上一层的计算单元,并接收所述上一层的计算单元对所述数据消息的计算结果,再将所述计算结果传输给下一层的计算控制模块,所述上一层和下一层为相邻的两层。
5.根据权利要求4所述的系统,其特征在于,当上一层的计算单元计算完成后,所述任务跟踪模块还用于将上一层的计算单元需要发送给下一层计算单元的数据消息数目发送至下一层的计算控制模块;
下一层的计算控制模块还用于将从上一层的计算控制模块接收的计算结果中的数据消息数目和所述任务跟踪模块发送的数据消息数目比较,若相同,则将接收的计算结果中的数据消息传输给所述下一层的计算单元。
6.根据权利要求3所述的系统,其特征在于,所述计算拓扑中某层包括多个计算单元;
所述某层的计算控制模块接收所述多个计算单元中每个计算单元对数据消息的计算结果,再将所述多个计算单元中每个计算单元对数据消息的计算结果一起传输给所述某层的下一层的计算控制模块,并将多个计算单元中的每个计算单元的执行情况上报给所述任务跟踪模块;
当某层的多个计算单元计算完成后,所述任务跟踪模块根据所述某层的每个计算单元的执行情况得到所述某层的多个计算单元需要发送给所述某层的下一层计算单元的数据消息数目,并将所述数据消息数目发送至所述某层的下一层的计算控制模块;
所述某层的下一层的计算控制模块用于将从所述某层的计算控制模块接收的计算结果中的数据消息数目和所述任务跟踪模块发送的数据消息数目比较,若相同,则将接收的计算结果中的数据消息传输给所述下一层的计算单元。
7.根据权利要求6所述的系统,其特征在于,所述任务跟踪模块还用于为所述业务请求分配任务标识;
当所述某层的多个计算单元中的每个计算单元完成后,所述某层的计算控制模块将所述每个计算单元分配对应的消息标识,并将所述消息标识上报给所述任务跟踪模块;
当所述某层的多个计算单元完成后,所述任务跟踪模块将所述任务标识所对应的所述某层的完成标志位清零。
8.根据权利要求7所述的系统,其特征在于,所述任务跟踪模块还用于将所述每个计算单元的消息标识进行异或操作,若异或操作为零,则所述计算单元计算成功。
9.一种分布式流计算方法,包括以下步骤:
接收业务请求;
从全局配置层获取与所述业务请求对应的计算拓扑;
根据所述计算拓扑对所述业务请求进行处理得到所述业务请求的执行情况;
根据所述业务请求的执行情况确定是否重发所述业务请求。
10.根据权利要求9所述的方法,其特征在于,在所述接收业务请求的步骤之后,所述方法还包括:
对所述业务请求解析得到关键字,根据所述关键字获取所需转发到的节点地址,以及将所述业务请求发送至任务跟踪模块和所述节点地址所对应的计算控制模块。
11.根据权利要求9所述的方法,其特征在于,根据所述计算拓扑对所述业务请求进行处理得到所述业务请求的执行情况的步骤包括:
通过计算控制模块调用所述计算拓扑中的各层的计算单元对所述业务请求进行处理,以及接收各层的计算单元对所述业务请求的执行情况。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
上一层的计算控制模块将数据消息传输给所述上一层的计算单元,并接收所述上一层的计算单元对所述数据消息的计算结果,再将所述计算结果传输给下一层的计算控制模块,所述上一层和下一层为相邻的两层。
13.根据权利要求12所述的方法,其特征在于,在所述上一层的计算控制模块将数据消息传输给所述上一层的计算单元,并接收所述上一层的计算单元对所述数据消息的计算结果,再将所述计算结果传输给下一层的计算控制模块,所述上一层和下一层为相邻的两层的步骤之后,所述方法还包括:
当上一层的计算单元计算完成后,通过任务跟踪模块将上一层的计算单元需要发送给下一层计算单元的数据消息数目发送至下一层的计算控制模块;
下一层的计算控制模块将从上一层计算控制模块接收的计算结果中的数据消息数目和所述任务跟踪模块发送的数据消息数目比较,若相同,则将接收的计算结果中的数据消息传输给所述下一层的计算单元。
14.根据权利要求11所述的方法,其特征在于,所述计算拓扑中某层包括多个计算单元;
所述方法还包括:
所述某层的计算控制模块接收所述多个计算单元中每个计算单元对数据消息的计算结果,再将所述多个计算单元中每个计算单元对数据消息的计算结果一起传输给所述某层的下一层的计算控制模块,并将多个计算单元中的每个计算单元的执行情况上报给任务跟踪模块;
当某层的多个计算单元计算完成后,所述任务跟踪模块根据所述某层的每个计算单元的执行情况得到所述某层的多个计算单元需要发送给所述某层的下一层计算单元的数据消息数目,并将所述数据消息数目发送至所述某层的下一层的计算控制模块;
所述某层的下一层的计算控制模块将从所述某层的计算控制模块接收的计算结果中的数据消息数目和所述任务跟踪模块发送的数据消息数目比较,若相同,则将接收的计算结果中的数据消息传输给所述下一层的计算单元。
15.根据权利要求14所述的方法,其特征在于,在所述接收业务请求之后,所述方法还包括:
为所述业务请求分配任务标识;
当所述某层的多个计算单元中的每个计算单元完成后,所述某层的计算控制模块将所述每个计算单元分配对应的消息标识;
当所述某层的多个计算单元完成后,将所述任务标识所对应的所述某层的完成标志位清零。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
将所述每个计算单元的消息标识进行异或操作,若异或操作为零,则所述计算单元计算成功。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410253627.8A CN105224550B (zh) | 2014-06-09 | 2014-06-09 | 分布式流计算系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410253627.8A CN105224550B (zh) | 2014-06-09 | 2014-06-09 | 分布式流计算系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105224550A true CN105224550A (zh) | 2016-01-06 |
CN105224550B CN105224550B (zh) | 2019-07-19 |
Family
ID=54993523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410253627.8A Active CN105224550B (zh) | 2014-06-09 | 2014-06-09 | 分布式流计算系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105224550B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106549823A (zh) * | 2016-09-21 | 2017-03-29 | 南京途牛科技有限公司 | 一种分布式实时流计算系统 |
CN107135191A (zh) * | 2016-02-29 | 2017-09-05 | 阿里巴巴集团控股有限公司 | 检查分布式业务处理完整度的方法及装置 |
CN110225530A (zh) * | 2018-03-02 | 2019-09-10 | 中国移动通信有限公司研究院 | 无线数据分析方法、装置及cuda实体 |
CN111064713A (zh) * | 2019-02-15 | 2020-04-24 | 腾讯科技(深圳)有限公司 | 一种分布式系统中的节点控制方法和相关装置 |
CN111078496A (zh) * | 2019-11-29 | 2020-04-28 | 联想(北京)有限公司 | 一种数据监控方法、平台及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7987453B2 (en) * | 2004-03-18 | 2011-07-26 | International Business Machines Corporation | Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data |
CN103595651A (zh) * | 2013-10-15 | 2014-02-19 | 北京航空航天大学 | 基于分布式的数据流处理方法和系统 |
CN103699599A (zh) * | 2013-12-13 | 2014-04-02 | 华中科技大学 | 一种基于Storm实时流计算框架的消息可靠处理保障方法 |
CN103782270A (zh) * | 2013-10-28 | 2014-05-07 | 华为技术有限公司 | 流处理系统的管理方法和相关设备及系统 |
-
2014
- 2014-06-09 CN CN201410253627.8A patent/CN105224550B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7987453B2 (en) * | 2004-03-18 | 2011-07-26 | International Business Machines Corporation | Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data |
CN103595651A (zh) * | 2013-10-15 | 2014-02-19 | 北京航空航天大学 | 基于分布式的数据流处理方法和系统 |
CN103782270A (zh) * | 2013-10-28 | 2014-05-07 | 华为技术有限公司 | 流处理系统的管理方法和相关设备及系统 |
CN103699599A (zh) * | 2013-12-13 | 2014-04-02 | 华中科技大学 | 一种基于Storm实时流计算框架的消息可靠处理保障方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107135191A (zh) * | 2016-02-29 | 2017-09-05 | 阿里巴巴集团控股有限公司 | 检查分布式业务处理完整度的方法及装置 |
WO2017148277A1 (zh) * | 2016-02-29 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 检查分布式业务处理完整度的方法及装置 |
TWI662486B (zh) * | 2016-02-29 | 2019-06-11 | 香港商阿里巴巴集團服務有限公司 | 檢查分布式業務處理完整度的方法及裝置 |
CN107135191B (zh) * | 2016-02-29 | 2020-02-21 | 阿里巴巴集团控股有限公司 | 检查分布式业务处理完整度的方法及装置 |
CN106549823A (zh) * | 2016-09-21 | 2017-03-29 | 南京途牛科技有限公司 | 一种分布式实时流计算系统 |
CN110225530A (zh) * | 2018-03-02 | 2019-09-10 | 中国移动通信有限公司研究院 | 无线数据分析方法、装置及cuda实体 |
CN110225530B (zh) * | 2018-03-02 | 2022-04-01 | 中国移动通信有限公司研究院 | 无线数据分析方法、装置及cuda实体 |
CN111064713A (zh) * | 2019-02-15 | 2020-04-24 | 腾讯科技(深圳)有限公司 | 一种分布式系统中的节点控制方法和相关装置 |
CN111064713B (zh) * | 2019-02-15 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 一种分布式系统中的节点控制方法和相关装置 |
CN111078496A (zh) * | 2019-11-29 | 2020-04-28 | 联想(北京)有限公司 | 一种数据监控方法、平台及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105224550B (zh) | 2019-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2691859B1 (en) | Fault detection and recovery as a service | |
US8094585B2 (en) | Membership management of network nodes | |
CN105224550A (zh) | 分布式流计算系统和方法 | |
CN102355366B (zh) | 堆叠分裂时管理堆叠成员设备的方法和堆叠成员设备 | |
WO2017050254A1 (zh) | 热备方法、装置及系统 | |
CN103780615B (zh) | 一种在多个服务器间客户端会话数据共享方法 | |
CN105516292A (zh) | 一种智能变电站云平台的热备方法 | |
CN110677282B (zh) | 一种分布式系统的热备份方法及分布式系统 | |
CN102025783A (zh) | 集群系统及其消息处理方法和协议转发网关 | |
CN106230622A (zh) | 一种集群实现方法及装置 | |
CN108140035A (zh) | 分布式系统的数据库复制方法及装置 | |
US10205630B2 (en) | Fault tolerance method for distributed stream processing system | |
CN114221736A (zh) | 数据处理的方法、装置、设备及介质 | |
CN111880932A (zh) | 一种基于多网口的数据存储方法及装置 | |
Li et al. | Design and implementation of high availability distributed system based on multi-level heartbeat protocol | |
Gawali | Leader election problem in distributed algorithm | |
Sharma et al. | A comparative review on reliability and fault tolerance enhancement protocols in wireless sensor networks | |
CN102647424A (zh) | 一种数据传输方法及其装置 | |
CN113760459A (zh) | 虚拟机故障检测方法、存储介质和虚拟化集群 | |
Wang et al. | An optimal solution for byzantine agreement under a hierarchical cluster-oriented mobile ad hoc network | |
CN110716827A (zh) | 适用于分布式系统的热备份方法及分布式系统 | |
Baldoni et al. | An algorithm for implementing bft registers in distributed systems with bounded churn | |
CN114257601B (zh) | 一种云边协同的集群构建方法和系统 | |
CN113010337B (zh) | 故障检测方法、总控节点、工作节点及分布式系统 | |
CN116055496B (zh) | 一种监控数据采集方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231229 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |