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

基于Actor模型的并发数据处理方法、系统、设备和存储介质与流程

2022-02-21 03:56:25 来源:中国专利 TAG:

基于actor模型的并发数据处理方法、系统、设备和存储介质
技术领域
1.本技术涉及数据处理领域,特别是涉及一种基于actor模型的并发数据处理方法、系统、设备和存储介质。


背景技术:

2.随着互联网的极速发展,当下互联网公司所面对的数据量已经达到pb级别,传统的集中式数据处理已经无法满足市场的需求,因此,能够进行并发处理的分布式网络逐渐成为主流。
3.多数传统的并发处理是基于多线程之间的数据共享内存,使用同步方法防止写争夺,但是这种同步方法会造成多线程之间的数据出现竞争,从而带来线程安全问题。
4.针对相关技术中存在多线程之间的数据出现竞争,从而带来线程安全问题,目前还没有提出有效的解决方案。


技术实现要素:

5.在本实施例中提供了一种基于actor模型的并发数据处理方法、系统、设备和存储介质,以解决相关技术存在多线程之间的数据出现竞争的问题。
6.第一个方面,在本实施例中提供了一种基于actor模型的并发数据处理方法,包括:
7.根据用户需求创建数据处理总任务;
8.将所述数据处理总任务拆分为若干子任务,通过actor消息将若干所述子任务分发给相应的工作节点;
9.在所述工作节点中根据接收到的子任务获取待处理数据,并为每个所述子任务创建相应的子任务处理actor模型组,根据所述待处理数据创建若干数据处理actor模型,其中每个所述子任务处理actor模型组包括若干所述数据处理actor模型,所述数据处理actor模型之间相互隔离;
10.对所述数据处理actor模型进行并发执行,得到执行结果。
11.在其中的一些实施例中,在所述将所述数据处理总任务拆分为若干子任务之前,还包括:
12.通过心跳检测管理判断所有注册的工作节点是否有心跳;
13.若所述工作节点有心跳,则保留该工作节点;
14.若所述工作节点无心跳,则移除该工作节点,并且不会再分配新的子任务给判断为无心跳的工作节点。
15.在其中的一些实施例中,所述将所述数据处理总任务拆分为若干子任务,通过actor消息将若干所述子任务分发给相应的工作节点,包括:
16.根据拆分规则和有心跳的工作节点的数量,将所述数据处理总任务进行拆分,得到若干所述子任务;
17.通过负载均衡算法,将若干所述子任务以actor消息的方式分发给具体的所述有心跳的工作节点。
18.在其中的一些实施例中,所述在所述工作节点中根据接收到的子任务获取待处理数据,并为每个所述子任务创建相应的子任务处理actor模型组,根据所述待处理数据创建若干数据处理actor模型,其中每个所述子任务处理actor模型组包括若干所述数据处理actor模型,所述数据处理actor模型之间相互隔离,包括:
19.根据接收到的子任务生成相应的取数任务;
20.根据所述取数任务从源数据库中获取相应的待处理数据;
21.在所述工作节点中为每个所述子任务创建相应的子任务处理actor模型组;
22.对所述待处理数据进行并发遍历,并根据所述待处理数据在所述工作节点中创建若干所述数据处理actor模型;
23.通过actor消息将所述创建的若干数据处理actor模型发送给所述子任务处理actor模型组,每个所述子任务处理actor模型组包括若干所述数据处理actor模型。
24.在其中的一些实施例中,所述基于actor模型的并发数据处理方法,还包括:
25.在所述工作节点中对创建的所述数据处理actor模型进行异常监管;
26.当所述数据处理actor模型出现异常,执行异常处理操作。
27.在其中的一些实施例中,所述对所述数据处理actor模型进行并发执行,包括:
28.在所述工作节点中通过负载均衡算法对所述数据处理actor模型进行并发执行。
29.在其中的一些实施例中,所述基于actor模型的并发数据处理方法,还包括:
30.所述数据处理actor模型将所述执行结果暂存在缓存中,同时将数据处理任务完成通知消息发送给对应的所述工作节点;
31.在所述工作节点中接到所述通知消息后,从所述缓存中读取所述执行结果,并将所述执行结果根据批次规则存储至目标数据库。
32.第二个方面,在本实施例中提供了一种基于actor模型的并发数据处理系统,包括:任务管理模块、路由分发模块和工作节点模块;
33.所述任务管理模块用于根据用户需求创建数据处理总任务;
34.所述路由分发模块用于将所述数据处理总任务拆分为若干子任务,通过actor消息将若干所述子任务分发给相应的工作节点;
35.所述工作节点模块用于根据接收到的子任务获取待处理数据,并为每个所述子任务创建相应的子任务处理actor模型组,根据所述待处理数据创建若干数据处理actor模型,其中每个所述子任务处理actor模型组包括若干所述数据处理actor模型,所述数据处理actor模型之间相互隔离;
36.对所述数据处理actor模型进行并发执行,得到执行结果。
37.第三个方面,在本实施例中提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一个方面所述的基于actor模型的并发数据处理方法。
38.第四个方面,在本实施例中提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一个方面所述的基于actor模型的并发数据处理方法。
39.与相关技术相比,在本实施例中提供的基于actor模型的并发数据处理方法,根据
用户需求创建数据处理总任务;将所述数据处理总任务拆分为若干子任务,通过actor消息将若干所述子任务分发给相应的工作节点;在所述工作节点中根据接收到的子任务获取待处理数据,并为每个所述子任务创建相应的子任务处理actor模型组,根据所述待处理数据创建若干数据处理actor模型,其中每个所述子任务处理actor模型组包括若干所述数据处理actor模型,所述数据处理actor模型之间相互隔离;对所述数据处理actor模型进行并发执行,得到执行结果。由各工作节点为接收到的子任务创建一个相应的子任务处理actor模型组,其中每个所述子任务处理actor模型组包括若干数据处理actor模型,不同工作节点中的若干数据处理actor模型相互隔离并且不会共享内存,解决了相关技术中存在多线程之间的数据出现竞争的问题,实现了并发数据处理中不会出现数据竞争状态的效果。
40.本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。
附图说明
41.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
42.图1是本实施例中基于actor模型的并发数据处理方法的终端的硬件结构框图;
43.图2是actor模型之间数据交互示意图;
44.图3是一个实施例中基于actor模型的并发数据处理方法的流程图;
45.图4是一个优选实施例中基于actor模型的并发数据处理方法的流程图;
46.图5是一个优选实施例中执行基于actor模型的并发数据处理方法的示意图;
47.图6是一个实施例中基于actor模型的并发数据处理系统的结构框图。
48.图中:11、任务管理模块;12、路由分发模块;13、工作节点模块。
具体实施方式
49.为更清楚地理解本技术的目的、技术方案和优点,下面结合附图和实施例,对本技术进行了描述和说明。
50.除另作定义外,本技术所涉及的技术术语或者科学术语应具有本技术所属技术领域具备一般技能的人所理解的一般含义。在本技术中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本技术中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本技术中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本技术中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本技术中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
51.在本实施例中提供的方法实施例可以在终端、计算机或者类似的运算装置中执
行。比如在终端上运行,图1是本实施例的基于actor模型的并发数据处理方法的终端的硬件结构框图。如图1所示,终端可以包括一个或多个(图1中仅示出一个)处理器102和用于存储数据的存储器104,其中,处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置。上述终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限制。例如,终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示出的不同配置。
52.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如在本实施例中的基于actor模型的并发数据处理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
53.传输设备106用于经由一个网络接收或者发送数据。上述的网络包括终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
54.actor模型是一种通用的并发编程模型,其模型的基础是通过消息进行通信,actor模型一次只接收处理一个消息,未处理消息会被放入队列等待处理,因此保证了单独写原则,避免了数据间的多线程写争夺。图2是actor模型之间数据交互示意图,如图2所示,该模型包括以下三部分:
55.state(状态):指actor模型对象的变量信息,状态由actor自己管理,避免了并发环境下的锁和内存原子性等问题;
56.behavior(行为):指actor模型中的计算逻辑,通过actor接收到的消息来改变actor模型的状态;
57.mailbox(邮箱):邮箱也可以认为是一种消息队列,是各actor模型之间的通信桥梁,邮箱内部通过fifo(先入先出)消息队列来存储发送方actor模型消息,接受方actor模型从邮箱队列中获取消息。
58.在本实施例中提供了一种基于actor模型的并发数据处理方法,图3是相应的流程图,如图3所示,该流程包括以下步骤:
59.步骤s210,根据用户需求创建数据处理总任务。
60.具体地,上述用户需求指的是用户根据需求自定义的业务规则,包括:执行时间段、是否进行增量执行、指定算法、源数据库地址、目标数据库地址、最大业务数据、数据采样数量限制、提交批次规则、数据处理范围等规则属性。
61.根据上述用户自定义的业务规则创建数据处理总任务,其中,源数据库地址、目标数据库地址、最大业务数据、数据采样数量限制、数据处理范围确定了该数据处理总任务的数据来源、数据范围和数据采样规则等。执行时间段指定了在什么时间段执行该数据处理
总任务。是否进行增量执行和指定算法确定了该数据处理总任务中进行数据处理的具体方法。提交批次规则指的是用户设定每次将多少默认数据量的数据批量存储至目标数据库。
62.步骤s220,将数据处理总任务拆分为若干子任务,通过actor消息将若干子任务分发给相应的工作节点。
63.具体地,将数据处理总任务拆分为若干子任务后,每个子任务包括一定的数据处理范围,每个子任务通过actor消息发送给不同的工作节点,每个工作节点执行上述数据处理范围的子任务。例如,数据处理总任务可以是一个大的数据仓库,其中包括多个数据库,每个数据库又包括多张数据表,此处的拆分为若干子任务就是将数据仓库里的多个数据库或数据表拆分为若干子任务。
64.步骤s230,在工作节点中根据接收到的子任务获取待处理数据,并为每个子任务创建相应的子任务处理actor模型组,其中每个子任务处理actor模型组包括若干数据处理actor模型,数据处理actor模型之间相互隔离。
65.具体地,在工作节点根据接收到的子任务获取子任务中需要进行数据处理的待处理数据,并且为接收到的子任务创建一个相应的子任务处理actor模型组,一个工作节点对应一个子任务处理actor模型组,根据待处理数据创建若干数据处理actor模型,其中每个子任务处理actor模型组中还包括若干在工作节点创建的数据处理actor模型。
66.需要知道的是,一个子任务处理actor模型组中的若干数据处理actor模型是相互隔离的,并且不同工作节点中的数据处理actor模型之间也是相互隔离的。
67.步骤s240,对数据处理actor模型进行并发执行,得到执行结果。
68.具体地,在每个工作节点上的子任务处理actor模型组中对数据处理actor模型进行并发处理。
69.通过上述步骤,本实施例根据用户需求创建数据处理总任务;将数据处理总任务拆分为若干子任务,通过actor消息将若干子任务分发给相应的工作节点;在工作节点中根据接收到的子任务获取待处理数据,并为每个子任务创建相应的子任务处理actor模型组,根据待处理数据创建若干数据处理actor模型,其中每个子任务处理actor模型组包括若干数据处理actor模型,不同的工作节点中的若干数据处理actor模型之间相互隔离;对数据处理actor模型进行并发执行,得到执行结果。
70.现有技术中,多数传统的并发处理是基于多线程之间的数据共享内存,使用同步方法防止写争夺,但是这种同步方法会造成多线程之间的数据出现竞争,从而带来线程安全问题。另外,现有技术中还有一些基于actor模型实现的方法,但是这些方法中将actor模型用于任务调度或是数据采集,本实施例提供的基于actor模型的并发数据处理方法在现有技术的基础上提供了有效的补充,通过在工作节点上为每一个子任务创建一个相应的子任务处理actor模型组,其中子任务处理actor模型组还包括若干执行具体数据处理任务的数据处理actor模型,由每个数据处理actor模型执行具体的数据处理任务,并且这些数据处理actor模型之间相互隔离,不会出现数据竞争状态,实现了一个完整、高效的并发数据处理方法,解决了相关技术中存在多线程之间的数据出现竞争,从而带来线程安全问题。
71.在其中的一些实施例中,上述将数据处理总任务拆分为若干子任务,通过actor消息将若干子任务分发给相应的工作节点,还包括以下步骤:
72.步骤s310,通过心跳检测管理判断所有注册的工作节点是否有心跳。
73.步骤s311,若工作节点有心跳,则保留该工作节点。
74.步骤s312,若工作节点无心跳,则移除该工作节点,并且不会再分配新的子任务给判断为无心跳的工作节点。
75.具体地,上述心跳检测管理会通过心跳检测服务actor模型主动发送心跳包给所有注册的工作节点,工作节点接收到心跳包后会回复一条确认消息。
76.如果正确收到工作节点发送的确认消息,则判断该工作节点有心跳,保留该工作节点;
77.如果没有正确收到工作节点发送的确认消息,则判断该工作节点无心跳,存在一定异常,移除该工作节点,并且不会再分配新的子任务给该工作节点。
78.步骤s320,根据拆分规则和有心跳的工作节点的数量,将数据处理总任务进行拆分,得到若干子任务。
79.具体地,根据拆分规则的逻辑和有心跳的工作节点数量将上述数据加工总任务进行拆分细化。
80.步骤s330,通过负载均衡算法,将若干子任务以actor消息的方式分发给具体的有心跳的工作节点。
81.具体地,通过负载均衡算法,将拆分得到的子任务封装成actor消息分发给各个有心跳的工作节点。
82.其中,上述负载均衡算法主要通过路由策略实现,主要支持以下路由策略:
83.(1)round robin:依次向pool(工作池)/group(工作组)中的各个节点发送消息,循环往复。
84.(2)random:——随机向pool(工作池)/group(工作组)中的各个节点发送消息。
85.(3)smallest mailbox:向当前包含消息数量最少的actor模型发送消息。由于远程actor模型的邮箱大小未知,因此假设它们的队列中已经有消息在排队。所以会优先将消息发送给空闲的本地actor模型。
86.(4)tail chopping:与smallest mailbox类型,但是router(路由)并不是一次性向pool(工作池)/group(工作组)中的所有actor模型都发送一条消息,而是每向一个actor模型发送消息后等待一小段时间,较smallest mailbox有可能可以减少网络负载。
87.(5)consistent hashing:给router(路由)提供一个key,router根据这个key生成哈希值。使用这个哈希值来决定给哪个工作节点发送数据。需要将特定的数据发送到特定的目标位置时,就可以使用哈希方法。
88.(6)balancingpool:该路由策略只可以用于本地actor模型,多个actor模型共享同一个邮箱,一有空闲就处理邮箱中的任务。这种策略可以确保所有actor模型都处于繁忙状态。对于本地集群来说,经常会优先选择这个路由策略。
89.通过本实施例,可以对所有注册的工作节点进行管理,及时检测工作节点的状态并且移除异常的工作节点,并且通过路由策略实现均衡负载算法,通过均衡负载算法,将子任务以actor消息的形式分发给各工作节点,提高了对所有工作节点管理和分发子任务的效率。
90.在其中的一些实施例中,上述在工作节点中根据接收到的子任务获取待处理数据,并为每个子任务创建相应的子任务处理actor模型组,根据待处理数据创建若干数据处
理actor模型,其中每个子任务处理actor模型组包括若干数据处理actor模型,包括以下步骤:
91.步骤s410,根据接收到的子任务生成相应的取数任务。
92.具体地,上述子任务包括一定的数据处理范围,即根据该数据处理范围生成相应的取数任务。
93.步骤s420,根据取数任务从源数据库中获取相应的待处理数据。
94.具体地,根据取数任务,生成具体的sql语句从源数据库中获取待处理数据。
95.步骤s430,在工作节点中为每个子任务创建相应的子任务处理actor模型组。
96.步骤s440,对待处理数据进行并发遍历,并根据待处理数据在工作节点中创建若干数据处理actor模型。
97.具体地,此步骤是将工作节点中的子任务进行进一步拆分,对子任务中的待处理数据并发遍历后,再将待处理数据拆分得到更加细化的、最细粒度的数据处理任务,并且在工作节点中创建若干数据处理actor模型,每个数据处理actor模型执行最细粒度的具体数据处理任务。例如,在将一个大的数据仓库总任务拆分成若干子任务后,每个子任务可以包括一些数据库或数据表,但是每个数据表中还包括很多数据字段,上述步骤就是在工作节点中为一个或多个数据字段创建一个具体的数据处理actor模型,每个数据处理actor模型只需执行具体的数据处理任务。
98.步骤s450,通过actor消息将创建的若干数据处理actor模型发送给子任务处理actor模型组,每个子任务处理actor模型组包括若干数据处理actor模型。
99.其中,一个子任务处理actor模型组中的若干数据处理actor模型是相互隔离的,并且不同工作节点中的数据处理actor模型之间也是相互隔离的。
100.通过本实施例,可以根据接收到的子任务获取待处理数据,并且进一步将子任务拆分成具体的数据处理任务,在工作节点上为每个具体的数据处理任务创建相应的数据处理actor模型,由这些数据处理actor模型在工作节点上并发进行数据处理,从而实现了在并发处理中,各个数据处理actor模型相互隔离并且不共享内存,并发进行数据处理的效果。
101.在其中的一些实施例中,上述基于actor模型的并发数据处理方法,还包括以下步骤:
102.在工作节点中对创建的数据处理actor模型进行异常监管;
103.当数据处理actor模型出现异常,执行异常处理操作。
104.具体地,可以执行以下异常处理操作:
105.(1)当actor模型还能够正常运行时,忽略异常,保留其状态,恢复该actor模型,继续执行;
106.(2)重启该actor模型,并且清空其状态;
107.(3)关闭该actor模型;
108.(4)关闭自己,并向上一级汇报异常。
109.在其中的一些实施例中,对数据处理actor模型进行并发执行,包括步骤:
110.在工作节点中通过负载均衡算法对数据处理actor模型进行并发执行。
111.具体地,通过上述实施例中的负载均衡算法,决定工作节点中的若干数据处理
actor模型具体执行的顺序、调节若干数据处理actor模型的执行速率等。
112.在其中的一些实施例中,上述基于actor模型的并发数据处理方法,还包括以下步骤:
113.数据处理actor模型将执行结果暂存在缓存中,同时将数据处理任务完成通知消息发送给对应的工作节点;
114.在工作节点中接到通知消息后,从缓存中读取执行结果,并将执行结果根据批次规则存储至目标数据库。
115.具体地,在之前的实施例中用户通过提交批次规则设定每次将多少默认数据量的数据批量存储至目标数据库。本实施例中的批次规则会在上述默认数据量的基础上根据具体情况动态修改。例如,当前表的数据字段内容比较多或者存在大字段或写入目标数据库等待时间过长的情况,则降低批次写入的数据量阈值,反之提高阈值。
116.下面通过优选实施例对本实施例进行描述和说明。
117.图4是本优选实施例的基于actor模型的并发数据处理方法的流程图,图5是执行该方法的示意图。如图4所示,该方法包括以下步骤:
118.步骤s510,根据用户需求创建数据处理总任务。
119.步骤s520,通过心跳检测管理判断所有注册的工作节点是否有心跳。若有心跳,则执行步骤s521;若无心跳,则执行步骤s522。
120.步骤s521,保留该工作节点。
121.步骤s522,移除该工作节点,并且不会再分配新的子任务给判断为无心跳的工作节点。
122.步骤s530,根据拆分规则和有心跳的工作节点的数量,将数据处理总任务进行拆分,得到若干子任务。通过负载均衡算法,将若干子任务以actor消息的方式分发给具体的有心跳的工作节点。
123.具体地,此步骤中的负载均衡算法采用的是round robin路由策略方式,按轮询的方式,依次分发到每一个工作节点。
124.步骤s540,根据接收到的子任务生成相应的取数任务,从源数据库中获取相应的待处理数据。
125.步骤s550,在工作节点中为每个子任务创建相应的子任务处理actor模型组。
126.步骤s560,对待处理数据进行并发遍历,并根据待处理数据在工作节点中创建若干数据处理actor模型。通过actor消息将创建的若干数据处理actor模型发送给子任务处理actor模型组。
127.步骤s570,在工作节点中通过负载均衡算法对数据处理actor模型进行并发执行。
128.步骤s580,数据处理actor模型将执行结果暂存在缓存中,同时将数据处理任务完成通知消息发送给对应的工作节点。
129.步骤s590,在工作节点中接到通知消息后,从缓存中读取执行结果,并将执行结果根据批次规则存储至目标数据库。
130.另外,在本优选实施例中采用了akka并发框架,能够更好地实现actor模型的功能。该框架中的每一个节点都是actor模型,也就是说,上述所有实施例中的心跳检测管理、工作节点、子任务分发、异常监管等功能节点,都可以通过actor模型实现。
131.需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
132.在本实施例中还提供了一种基于actor模型的并发数据处理系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。以下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管在以下实施例中所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
133.图6是本实施例中基于actor模型的并发数据处理系统的结构框图,如图6所示,该系统包括:任务管理模块11、路由分发模块12、工作节点模块13,其中:
134.任务管理模块11,用于根据用户需求创建数据处理总任务;
135.路由分发模块12,用于将数据处理总任务拆分为若干子任务,通过actor消息将若干子任务分发给相应的工作节点;
136.工作节点模块13,用于根据接收到的子任务获取待处理数据,并为每个子任务创建相应的子任务处理actor模型组,根据待处理数据创建若干数据处理actor模型,其中每个子任务处理actor模型组包括若干数据处理actor模型,数据处理actor模型之间相互隔离;
137.对数据处理actor模型进行并发执行,得到执行结果。
138.本实施例提供的系统,通过将创建的数据处理总任务拆分成子任务并分发给各个工作节点,并且在工作节点上为每个子任务再创建若干具体的数据处理actor模型,通过并发执行数据处理actor模型,从而解决了进行并发处理时存在多线程之间的数据出现竞争,从而带来线程安全的问题。
139.在其中的一些实施例中,上述路由分发模块12还包括:心跳检测子模块;
140.心跳检测子模块,用于判断所有注册的工作节点是否有心跳;
141.若工作节点有心跳,则保留该工作节点;
142.若工作节点无心跳,则移除该工作节点,并且不会再分配新的子任务给判断为无心跳的工作节点。
143.具体地,上述心跳检测子模块通过心跳检测服务actor模型主动发送心跳包给所有注册的工作节点,工作节点接收到心跳包后会回复一条确认消息。
144.如果正确收到工作节点发送的确认消息,则判断该工作节点有心跳,保留该工作节点;
145.如果没有正确收到工作节点发送的确认消息,则判断该工作节点无心跳,存在一定异常,移除该工作节点,并且不会再分配新的子任务给该工作节点。
146.在其中的一些实施例中,上述路由分发模块12,还可以用于:
147.根据拆分规则和有心跳的工作节点的数量,将数据处理总任务进行拆分,得到若干子任务;
148.通过负载均衡算法,将若干子任务以actor消息的方式分发给具体的有心跳的工作节点。
149.在其中的一些实施例中,上述工作节点模块13,还包括:数据获取子模块、任务创
建子模块和异常监管子模块,其中:
150.数据获取子模块,用于根据接收到的子任务生成相应的取数任务;根据取数任务从源数据库中获取相应的待处理数据;
151.任务创建子模块,用于对待处理数据进行并发遍历,并根据待处理数据在工作节点中创建若干数据处理actor模型;
152.异常监管子模块,用于在工作节点中对创建的数据处理actor模型进行异常监管;当数据处理actor模型出现异常,执行异常处理操作。
153.在其中的一些实施例中,上述工作节点模块13,还用于:
154.在工作节点中通过负载均衡算法对数据处理actor模型进行并发执行。
155.在其中的一些实施例中,上述工作节点模块13,还用于:
156.在接到数据处理actor模型发送的数据处理任务完成通知消息后,从缓存中读取执行结果,并将执行结果根据批次规则存储至目标数据库。
157.需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
158.在本实施例中还提供了一种计算机设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
159.此外,结合上述实施例中提供的基于actor模型的并发数据处理方法,在本实施例中还可以提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种基于actor模型的并发数据处理方法。
160.应该明白的是,这里描述的具体实施例只是用来解释这个应用,而不是用来对它进行限定。根据本技术提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本技术保护范围。
161.显然,附图只是本技术的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本技术适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本技术披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本技术公开的内容不足。
[0162]“实施例”一词在本技术中指的是结合实施例描述的具体特征、结构或特性可以包括在本技术的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本技术中描述的实施例在没有冲突的情况下,可以与其它实施例结合。
[0163]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

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

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

相关文献