一种轻量级分布式系统的数据分发方法及装置与流程

文档序号:33622809发布日期:2023-03-25 13:15阅读:49来源:国知局
一种轻量级分布式系统的数据分发方法及装置与流程

1.本发明属于分布式计算技术领域,特别是一种轻量级分布式系统的数据分发方法及装置。


背景技术:

2.现有的电磁信号通用分布式智能处理分析平台(例如专利cn113157252a),能够满足在分布及计算集群中实现分布式计算的功能。该分布式智能处理分析平台由一个调度节点、若干个常规计算节点、若干个高级计算节点若干个数据接入节点等组成。其中每个节点上部署一个节点管理模块,用来监控硬件状态、软件运行状态、启动关闭软件模块等功能,调度节点部署调度模块,作为系统的中枢,负责调度和资源协调,计算节点用来适应并行处理任务。ui前端模块接收用户任务指令通过通信协议发送给后端服务模块,节点管理模块资源监测与资源分配成功后任务涉及模块(数据接入模块、预处理计算模块、深度学习计算模块)启动任务;各模块与数据管理模块交互实现数据存储与管理,任务结束后通过通信协议完成结果反馈;后端服务模块负责任务调度,节点管理模块负责资源回收,ui前端模块负责结果展示。
3.上述平台的软件框架中包含一个nginx前端模块、一个调度模块、一个代理助理软件模块、一个数据管理模块、若干个数据接入模块、若干个常规计算软件模块、若干个高级计算软件模块;可运行在一台计算机上,也可按角色分别运行在多台计算机上,如:数据接入软件模块运行在采集服务器上,计算节点有两类,常规计算软件模块运行在常规计算节点,高级计算软件模块运行在高级计算节点。
4.在分布式计算、多任务并发场景下,将有多个客户端“同时”向调度软件发送任务申请,而且每个用户都可能申请多个任务;同时,每个任务会存在并行计算进程,甚至分布在不同计算节点上。这个问题的本质是调度模块要能够接多个任务申请,并能够根据当前计算资源状态(包括常规计算软件模块和高级计算软件模块),将任务合理的分配到相应的计算资源,同时对资源运行情况进行监控和管理。专利cn113157252a尚未解决上述问题,无法适用于在线数据接入和离线数据加载两种场景,难以解决分布式系统数据分发并行处理问题,也无法实现批量的数据接入与分发。


技术实现要素:

5.本发明的目的在于提供一种轻量级分布式系统的数据分发方法及装置,解决分布式系统数据分发并行处理问题。
6.实现本发明目的的技术解决方案为:一种轻量级分布式系统的数据分发方法,包括以下处理过程:
7.分布式系统中每个硬件节点上设置一个节点管理模块,节点管理模块通过配置文件配置硬件节点的角色,配置多个硬件节点为调度节点,调度节点默认是候选者状态,通过选主方法确定活动调度节点;
8.调度节点设有调度模块,调度模块向各计算节点的常规计算模块分发数据,以任务为单位,区分在线任务和离线任务,进行数据接入模块、调度模块和常规计算模块之间的协调与配合;
9.对于单任务多常规计算模块进程场景,调调度模块向常规计算模块分发数据的策略是:谁先举手给谁发,举手信号即常规计算模块的数据申请信号或调度模块的数据处理完毕信号;通过三步实现数据的分发:调度模块接入加载数据、常规计算模块申请数据以及调度模块分发数据。
10.一种轻量级分布式系统的数据分发装置,分布式系统中每个硬件节点上设置一个节点管理模块,节点管理模块通过配置文件配置硬件节点的角色,配置多个硬件节点为调度节点,调度节点默认是候选者状态,通过选主方法确定活动调度节点;
11.调度节点设有调度模块,调度模块向各计算节点的常规计算模块分发数据,以任务为单位,区分在线任务和离线任务,进行数据接入模块、调度模块和常规计算模块之间的协调与配合;
12.对于单任务多常规计算模块进程场景,调调度模块向常规计算模块分发数据的策略是:谁先举手给谁发,举手信号即常规计算模块的数据申请信号或调度模块的数据处理完毕信号;
13.所述数据分发装置包括调度模块接入加载数据单元、常规计算模块申请数据单元以及调度模块分发数据单元。
14.本发明与现有技术相比,其显著优点为:(1)调度节点的调度模块向各计算节点的常规计算模块分发数据,以任务为单位,区分在线任务和离线任务,调度模块向常规计算模块分发数据策略是,谁先举手给谁发的策略,通过设置多处缓存,可实现批量的数据接入与分发;(2)不依赖任何开源组件,自主可控;(3)可运行在多种操作系统上,且适用在线数据接入和离线数据加载两种场景;(4)通信简单,稳定可靠,可动态自动感知数据分发节点。
附图说明
15.图1是背景系统硬件组成图。
16.图2是背景系统软件架构图。
17.图3是调度模块接入加载数据流程图
18.图4是常规计算模块申请数据流程图。
19.图5是调度模块分发数据流程图。
具体实施方式
20.本发明一种轻量级分布式系统的数据分发方法,包括以下处理过程:
21.结合图1~图2,分布式系统中每个硬件节点上设置一个节点管理模块,节点管理模块通过配置文件配置硬件节点的角色,配置多个硬件节点为调度节点,调度节点默认是候选者状态,通过选主方法确定活动调度节点;
22.调度节点设有调度模块,调度模块向各计算节点的常规计算模块分发数据,以任务为单位,区分在线任务和离线任务,进行数据接入模块、调度模块和常规计算模块之间的协调与配合;
23.对于单任务多常规计算模块进程场景,调调度模块向常规计算模块分发数据的策略是:谁先举手给谁发,举手信号即常规计算模块的数据申请信号或调度模块的数据处理完毕信号;通过三步实现数据的分发:调度模块接入加载数据、常规计算模块申请数据以及调度模块分发数据。
24.作为一种具体实施方式,通过设置在数据接入模块、调度模块以及常规计算软件模块多处的缓存,利用消息通知机制驱动实现批量的数据接入与分发。
25.作为一种具体实施方式,当新的任务启动后,常规计算模块被调度拉起,一个常规计算模块进程,只是一个数据处理任务的一部分,在被启动时,被告知任务id;
26.调度维护所有任务的进程完毕列表即processdonelist,processdonelist的成员包含:常规计算软件的本地ip即localip、常规计算软件的命令端口即comport、常规计算软件的数据端口即dataport、数据处理完毕标志即isok、任务id这些信息;
27.常规计算模块向调度模块发送的数据请求applydata信号和调度模块收到常规计算模块的数据处理完毕processdone信号一致。
28.结合图3,作为一种具体实施方式,所述调度模块接入加载数据,具体如下:
29.(1.1)调度模块启动检测定时器,判断任务类型:
30.如果是在线任务,进入步骤(1.2);
31.如果是离线任务,加载离线数据,数据一次性接入后结束;
32.(1.2)判断调度模块的检测定时器是否达到定时时间:
33.如果没有达到,重新进入步骤(1.2);
34.如果达到,则进入步骤(1.3)
35.(1.3)调度模块遍历数据接入任务队列,结合平台设置的上限值,判断调度模块的某个任务的缓存是否存满:
36.若缓存没满,则向数据接入模块发送申请数据信号;
37.若缓存已满,则向数据接入模块发送不申请数据信号。
38.作为一种具体实施方式,结合图4,所述常规计算模块申请数据,具体如下:
39.(2.1)当启动任务后,常规计算模块进程被调度模块自动拉起,并与调度模块建立连接;
40.(2.2)收到调度模块的任务流程参数,启动算法插件,算法插件与调度模块建立连接;
41.(2.3)通过网络线程发送一次数据请求applydata信号,该信号附带了信号id、任务id、常规计算模块的ip、常规计算模块的端口号这些信息;
42.(2.4)判断常规计算模块是否收到数据:
43.如果没有收到数据,则重新进入步骤(2.4);
44.如果收到数据,则将数据放入缓存队列,并向算法插件发送数据;
45.(2.5)判断缓存队列是否为空:
46.若为空,则返回步骤(2.3)继续向调度模块发送数据请求applydata信号;
47.若不为空,则该线程等待数据。
48.作为一种具体实施方式,结合图5,所述调度模块分发数据,具体如下:
49.(3.1)调度模块启动数据发送定时器,并通过网络接收线程监测常规计算模块发
来的数据请求,此请求在调度模块被当作常规计算模块数据处理完毕processdone信号;
50.(3.2)当调度模块收到processdone信号后,调度模块在全局map中根据processdone信号中的任务id,检测是否存在此任务信息:
51.若全局map中含此任务id,则找到该任务对应的子map,并将该processdone信号存入processdonelist列表中;
52.若全局map中不含此任务id,则在全局map创建一个此任务id的子map,并将该processdone信号存入processdonelist列表中;
53.(3.3)当数据发送定时器的时间到达,则遍历每个任务的processdonelist列表,在某一任务对应的processdonelist列表中取头部一条processdone信号,判断此任务的发送缓存队列大小是否超过设置上限值:
54.如果超过设置上限值,则取发送缓存队列上限值数量发送;
55.如果未超过设置上限值,则取发送队列全部发送。
56.本发明一种轻量级分布式系统的数据分发装置,分布式系统中每个硬件节点上设置一个节点管理模块,节点管理模块通过配置文件配置硬件节点的角色,配置多个硬件节点为调度节点,调度节点默认是候选者状态,通过选主方法确定活动调度节点;
57.调度节点设有调度模块,调度模块向各计算节点的常规计算模块分发数据,以任务为单位,区分在线任务和离线任务,进行数据接入模块、调度模块和常规计算模块之间的协调与配合;
58.对于单任务多常规计算模块进程场景,调调度模块向常规计算模块分发数据的策略是:谁先举手给谁发,举手信号即常规计算模块的数据申请信号或调度模块的数据处理完毕信号;
59.所述数据分发装置包括调度模块接入加载数据单元、常规计算模块申请数据单元以及调度模块分发数据单元。
60.作为一种具体实施方式,所述调度模块接入加载数据单元,包括任务类型判断子单元、时间判断子单元、缓存判断子单元,其中:
61.任务类型判断子单元的功能为:通过调度模块启动检测定时器,判断任务类型:
62.如果是在线任务,进入时间判断子单元;
63.如果是离线任务,加载离线数据,数据一次性接入后结束;
64.时间判断子单元的功能为:判断调度模块的检测定时器是否达到定时时间:
65.如果没有达到,重新进入时间判断子单元;
66.如果达到,则进入缓存判断单元;
67.缓存判断子单元的功能为:通过调度模块遍历数据接入任务队列,结合平台设置的上限值,判断调度模块的某个任务的缓存是否存满:
68.若缓存没满,则向数据接入模块发送申请数据信号;
69.若缓存已满,则向数据接入模块发送不申请数据信号。
70.作为一种具体实施方式,所述常规计算模块申请数据单元,包括任务启动子单元、算法插件启动子单元、数据请求applydata信号发送子单元、接收数据判断子单元、缓存队列判断子单元,其中:
71.任务启动子单元的功能为:当启动任务后,常规计算模块进程被调度模块自动拉
起,并与调度模块建立连接;
72.算法插件启动子单元的功能为:收到调度模块的任务流程参数,启动算法插件,算法插件与调度模块建立连接;
73.数据请求applydata信号发送子单元的功能为:通过网络线程发送一次数据请求applydata信号,该信号附带了信号id、任务id、常规计算模块的ip、常规计算模块的端口号这些信息;
74.接收数据判断子单元的功能为:判断常规计算模块是否收到数据:
75.如果没有收到数据,则重新进入接收数据判断子单元;
76.如果收到数据,则将数据放入缓存队列,并向算法插件发送数据;
77.缓存队列判断子单元的功能为:判断缓存队列是否为空:
78.若为空,则返回数据请求applydata信号发送子单元,继续向调度模块发送数据请求applydata信号;
79.若不为空,则该线程等待数据。
80.作为一种具体实施方式,所述调度模块分发数据单元包括数据发送定时器启动子单元、全局map检测子单元、发送缓存队列大小判断子单元,其中:
81.数据发送定时器启动子单元的功能为:通过调度模块启动数据发送定时器,并通过网络接收线程监测常规计算模块发来的数据请求,此请求在调度模块被当作常规计算模块数据处理完毕processdone信号;
82.全局map检测子单元的功能为:当调度模块收到processdone信号后,调度模块在全局map中根据processdone信号中的任务id,检测是否存在此任务信息:
83.若全局map中含此任务id,则找到该任务对应的子map,并将该processdone信号存入processdonelist列表中;
84.若全局map中不含此任务id,则在全局map创建一个此任务id的子map,并将该processdone信号存入processdonelist列表中;
85.发送缓存队列大小判断子单元的功能为,当数据发送定时器的时间到达,则遍历每个任务的processdonelist列表,在某一任务对应的processdonelist列表中取头部一条processdone信号,判断此任务的发送缓存队列大小是否超过设置上限值:
86.如果超过设置上限值,则取发送缓存队列上限值数量发送;
87.如果未超过设置上限值,则取发送队列全部发送。
88.下面结合附图及具体实施例对本发明做进一步详细描述。
89.实施例
90.本发明所述的一种轻量级分布式系统的数据分发方法所依赖的硬件组成图如图1所示,所运行的分布式计算软件框架结构如图2所示。
91.本发明所述轻量级分布式系统的数据分发方法,借助背景技术中的软件架构和软件模块,通过三步实现数据的分发:调度模块接入加载数据、常规计算模块申请数据以及调度模块分发数据。当新的任务启动后,常规计算模块被调度拉起,一个常规计算,模块进程,只是一个数据处理任务的一部分,在被启动时,被告知任务id。
92.调度维护所有任务的processdonelist,processdonelist的成员包含:localip(常规计算软件的本地ip)、comport(常规计算软件的命令端口)、dataport(常规计算软件
的数据端口)、isok(数据处理完毕标志)、任务id等信息。
93.常规计算模块向调度模块发送的applydata数据请求信号和调度模块收到常规计算模块的processdone信号处理完毕信号一致。
94.步骤一、调度模块接入加载数据
95.调度模块启动检测定时器,根据任务类型,分为在线数据任务和离线数据任务。对于在线数据任务,数据源源不断的接入,对于离线数据任务,数据一次性接入。当调度模块的检测定时器时间到,判断调度模块某任务的缓存是否存满(设置的上限值),若没满,则向数据接入模块发送申请数据信号,若缓存已满,则向数据接入模块发送不申请数据信号。
96.1)调度模块启动检测定时器;
97.2)当调度模块的检测定时器时间到,调度模块遍历数据接入任务队列,结合平台设置的上限值,判断调度模块的某个任务的缓存是否存满;
98.3)若缓存没满,则向数据接入模块发送申请数据信号;
99.4)若缓存已满,则向数据接入模块发送不申请数据信号。
100.步骤二、常规计算模块申请数据
101.当启动任务后,常规计算模块进程被调度模块自动拉起,并与调度模块建立连接,随后收到调度模块的任务流程参数,启动算法插件,并与之建立连接;当连接成功后,使用网络线程发送一次数据请求(applydata),若收到数据,则将数据放入缓存队列,并向算法插件发送数据,然后判断缓存队列是否为空,若为空则继续向调度模块发送数据请求(applydata);否则该线程等待数据。
102.1)常规计算模块启动并与调度模块建立连接后,通过网络线程发送一次数据请求(applydata)信号,该信号附带了信号id、任务id、常规计算模块的ip、常规计算模块的端口号等信息;
103.2)若常规计算模块收到数据,则将数据放入缓存队列,并向算法插件发送数据;
104.3)判断缓存队列是否为空,若为空则继续向调度模块发送数据请求(applydata)信号;
105.4)判断缓存队列是否为空,若非空则该线程等待数据。
106.步骤三、调度模块分发数据
107.调度模块启动数据发送定时器,并通过网络接收线程监测常规计算模块发来的数据请求,此请求可认为是常规计算模块数据处理完毕的信号(processdone);当收到此信号后,调度模块在全局map中根据processdone信号中的任务id,检测是否存在此任务信息,若全局map中含此任务id,则找到该任务对应的子map,并将该processdone信号存入processdonelist列表中,否则在全局map创建一个此任务id的子map,并将该processdone信号存入processdonelist列表中。
108.当数据发送定时器时间到,则在某一任务对应的processdonelist列表中取一条processdone信号,判断此任务的发送缓存队列大小是否超过设置上限值,如果超过,则取发送缓存队列上限值数量发送,否则取发送队列全部发送。
109.1)调度模块启动数据发送定时器,并通过网络接收线程监测常规计算模块发来的数据请求,也即在调度模块当作的常规计算模块数据处理完毕的信号(processdone);
110.2)当数据发送定时器时间未到当调度模块收到processdone信号后,调度模块在
全局map中根据processdone信号中的任务id,检测是否存在此任务信息;
111.3)若全局map中含此任务id,则找到该任务对应的子map,并将该processdone信号存入processdonelist列表中;
112.4)若全局map中不含此任务id,则在全局map创建一个此任务id的子map,并将该processdone信号存入processdonelist列表中;
113.5)当数据发送定时器时间到,则遍历每个任务的processdonelist列表,在某一任务对应的processdonelist列表中取头部一条processdone信号,判断此任务的发送缓存队列大小是否超过设置上限值,如果超过设置上限值,则取发送缓存队列上限值数量发送;
114.6)如果未超过设置上限值,则取发送队列全部发送。
115.综上所述,本发明轻量级分布式系统的数据分发方法及装置,调度节点的调度模块向各计算节点的常规计算模块分发数据,以任务为单位,区分在线任务和离线任务,涉及数据接入模块、调度模块和常规计算模块之间的协调与配合。调度模块向常规计算模块分发数据策略是,谁先举手给谁发的策略。通过设置多处缓存,可实现批量的数据接入与分发。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1