CN112202692A - 数据分发方法、装置、设备以及存储介质 - Google Patents
数据分发方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN112202692A CN112202692A CN202011063982.0A CN202011063982A CN112202692A CN 112202692 A CN112202692 A CN 112202692A CN 202011063982 A CN202011063982 A CN 202011063982A CN 112202692 A CN112202692 A CN 112202692A
- Authority
- CN
- China
- Prior art keywords
- data
- processed
- processing unit
- downstream processing
- fragments
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
Abstract
本申请公开了数据分发方法、装置、电子设备及存储介质,涉及分布式流式计算领域。具体实现方案为:查询下游处理单元中的数据分片的排序信息,排序信息是对下游处理单元的数据分片按照待处理数据量进行排序得到的;基于数据分片的排序信息,向下游处理单元中的数据分片进行数据分发。本申请实施例根据下游处理单元的数据处理能力向下游处理单元中的数据分片进行数据分发,使数据向处理能力快的处理单元倾斜,能够有效地解决数据积压、数据流阻塞的问题,有效地提高数据流的处理速度与效率,可用于云计算。
Description
技术领域
本申请涉及一种计算机技术领域,尤其涉及一种分布式流式计算领域,可用于云计算。
背景技术
在流式计算系统中,流式计算分发方案包括上游算子的处理单元将数据分发至下游算子的规则。在流式数据处理的实际业务中,部署在分布式集群中规模较大的作业可能会出现单点故障或单点处理速度缓慢的问题。当某个下游算子出现问题时,导致其上游算子数据积压而无法及时消费。上游算子的数据积压到一定程度,例如在数据队列已满的情况下,会导致上游算子的上游算子也出现数据积压,从而导致整条数据流消费缓慢。以上现象称为数据流反压。出现反压时由于下游问题算子不消费数据或者消费较慢,导致数据积压持续加重,直到数据流阻塞。
出现反压时目前的解决方案是找出问题单点机器,解决问题或迁移作业到其他机器来疏通数据流。目前的解决方案只能在数据流阻塞之后解决问题,故障处理效率较低。
发明内容
本申请提供了一种数据分发方法、装置、设备以及存储介质。
根据本申请的一方面,提供了一种数据分发方法,包括:
查询下游处理单元中的数据分片的排序信息,排序信息是对下游处理单元的数据分片按照待处理数据量进行排序得到的;
基于数据分片的排序信息,向下游处理单元中的数据分片进行数据分发。
根据本申请的另一方面,提供了一种数据分发装置,包括:
查询单元,用于查询下游处理单元中的数据分片的排序信息,排序信息是对下游处理单元的数据分片按照待处理数据量进行排序得到的;
分发单元,用于基于数据分片的排序信息,向下游处理单元中的数据分片进行数据分发。
根据本申请的又一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本申请任意一项实施例所提供的方法。
根据本申请的又一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使该计算机执行本申请任意一项实施例所提供的方法。
上述申请中的一个实施例具有如下优点或有益效果:根据下游处理单元的数据处理能力向下游处理单元中的数据分片进行数据分发,使数据向处理能力快的处理单元倾斜,能够有效地解决数据积压、数据流阻塞的问题,有效地提高数据流的处理速度与效率。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请一实施例的数据分发方法的流程图;
图2是根据本申请一实施例的数据分发方法的流式计算框架示意图;
图3是根据本申请另一实施例的数据分发方法的流程图;
图4是根据本申请另一实施例的数据分发方法的小顶堆示意图;
图5是根据本申请另一实施例的数据分发方法的流程图;
图6是根据本申请另一实施例的数据分发方法的小顶堆调整示意图;
图7是根据本申请另一实施例的数据分发方法的流程图;
图8是根据本申请另一实施例的数据分发方法的小顶堆调整示意图;
图9是根据本申请一实施例的数据分发装置的示意图;
图10是根据本申请一实施例的数据分发装置的分发单元的示意图;
图11是根据本申请另一实施例的数据分发装置的示意图;
图12是根据本申请另一实施例的数据分发装置的调整单元的示意图;
图13是用来实现本申请实施例的数据分发方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本申请一实施例的数据分发方法的流程图。参见图1,该数据分发方法包括:
步骤S110,查询下游处理单元中的数据分片的排序信息,排序信息是对下游处理单元的数据分片按照待处理数据量进行排序得到的;
步骤S120,基于数据分片的排序信息,向下游处理单元中的数据分片进行数据分发。
流式计算分发技术目前通常采用如下几种方案:
(1)通过待分发数据里的特定字段进行全局哈希运算来决定该条数据发往哪个下游算子。大多数流式计算系统以此作为默认的数据分发方案。
(2)通过上下游算子的并发度计算出上下游算子之间的绑定关系(分组),在组内局部轮询分发数据。
(3)上下游算子不进行分组,上游算子通过全局轮询的方式向下游算子分发数据。
(4)使用用户自定义的数据分发规则(需用户实现)分发数据。
上述几种数据分发方案都是静态地分发数据,都没有考虑到作业运行时下游算子的消费能力。因此,当某个下游算子出现问题时,例如在数据流出现反压现象时,上游算子还是会向该下游算子发送数据,导致数据积压甚至整条数据流阻塞。
有鉴于此,本申请实施例提出一种基于动态负载的数据分发方法,在上游算子向下游算子分发数据时可动态地考虑到下游算子的消费能力。当某个下游算子消费能力不足或不消费时,可停止向该下游算子发送数据。本申请实施例可有效地避免由于单点问题而导致的数据流阻塞现象,有利于保证数据流处于畅通的状态。
图2是根据本申请一实施例的数据分发方法的流式计算框架示意图。在图2的示例中,Processor是流式计算系统中的算子,对应于集群中的一个节点。例如Processor可以对应于集群中的一台物理机。Processor A(简称PA)表示上游算子。“parallelism=2”表示设置Processor A的并发度为2,即上游算子Processor A包括2个下游处理单元(PE,processor element),分别为PE-0和PE-1。Processor B表示下游算子。“parallelism=4”表示设置Processor B(简称PB)的并发度为4,即下游算子Processor B包括4个下游处理单元PE,分别为PE-0、PE-1、PE-2和PE-3。
本申请实施例在StreamFramework(流式计算框架)系统中引入数据分片(KeyGroup,缩写为kg),对数据进行并行处理。数据分片相当于数据的集合,可以把大批数据分成多个组,每组数据就是一个数据分片。一个数据分片可包括一条或多条数据。在流式计算系统中,算子接收到来自上游分发的数据时,可将数据分组,可采用多线程的方式对分组的数据进行处理。对于每个数据分片,可用KeyGroupId(缩写为kgid)表示数据分片标识。用max_kg_id(max_keyGroup_id)表示算子具有的最大的数据分片数。例如Processor A的max_kg_id是10,并发度为2,则Processor A中的每个PE可处理5个数据分片。可采用多线程的方式对5个数据分片进行处理。
本申请实施例中,并发度和max_kg_id可以是预先配置的。在图2的示例中,“max_kg_id=4”表示设置Processor A的最大的数据分片数为4;“max_kg_id=8”表示设置Processor B的最大的数据分片数为8。
在一个示例中,一个PE可以处理多个kg,假设Processor的并发度为m,max_kg_id为N,则PE和kg的映射关系如下:
其中,表示对N/m进行向上取整计算。以图2中的Processor A为例,max_kg_id为N=4,并发度为m=2,则N/m=2。再经过向上取整计算得到即Processor A中每个PE处理的kg个数为2。则Processor A包括的2个PE处理的kg个数为4,分别编号为0、1、2、和3。可将数据分片的编号作为数据分片标识。
同理,图2中的Processor B的max_kg_id为N=8,并发度为m=4,则N/m=2。再经过向上取整计算得到即Processor B中每个PE处理的kg个数为2。则Processor B包括的4个PE处理的kg个数为8,分别编号为0、1、2、3、4、5、6和7。
2)PE-k处理的kg的编号为[k*count,MIN((k+1)*count,N)),k从0开始。
其中,每个Processor中包括的PE的编号为0、1、2、…k-1。例如Process A的并发度为2,max_kg_id=4。则当k=0时,PE-0处理kg[0,2);当k=1时,PE-1处理kg[2,4)。也就是说,PE-0处理编号为0和1的kg,PE-1处理编号为2和3的kg。参见图2所示,算子A包括的PE-0和PE-1对应处理的数据分片为编号为0、1、2、和3。
同理,参见图2所示,算子B包括的PE-0、PE-1、PE-2和PE-3对应处理的数据分片为编号为0、1、2、3、4、5、6和7。
图2中算子A中的PE-0与算子B中的PE-0、PE-1、PE-2和PE-3的连线表示上游算子A中的PE-0可以向下游算子B中的PE-0、PE-1、PE-2和PE-3分发数据。参见图1和图2,在上游算子向下游算子分发数据之前,上游算子可预先统计并保存下游算子的各个下游处理单元(PE)中的待处理数据量。可对下游处理单元的数据分片按照待处理数据量进行排序,得到下游处理单元中的数据分片的排序信息。例如可采用冒泡排序、选择排序、插入排序、归并排序或堆排序等算法对下游处理单元的数据分片进行排序。
在步骤S110中,通过查询下游处理单元中的数据分片的排序信息,可获知各个下游处理单元的数据处理能力情况。在步骤S120中,基于数据分片的排序信息,可得到下游处理单元中待处理数据量较少的数据分片。向下游处理单元中的数据分片进行数据分发时,将数据分发给待处理数据量相对较少的数据分片,从而可以避免发生数据积压和数据流阻塞的情况。
本申请实施例根据下游处理单元的数据处理能力向下游处理单元中的数据分片进行数据分发,使数据向处理能力快的处理单元倾斜,能够有效地解决数据积压、数据流阻塞的问题,有效地提高数据流的处理速度与效率。
图3是根据本申请另一实施例的数据分发方法的流程图。如图3所示,在一种实施方式中,图1中的步骤S120,基于数据分片的排序信息,向下游处理单元中的数据分片进行数据分发,具体可包括:
步骤S210,基于数据分片的排序信息,得到在下游处理单元的所有数据分片中待处理数据量最小的数据分片;
步骤S220,将待分发数据分发给待处理数据量最小的数据分片。
图2中用带圈数字表示数据分片的编号。算子B的数据分片的编号下面对应标示了数据分片中包括的待处理数据的条数。上游算子在分发数据之前,预先统计并保存下游算子的各个数据分片的待处理数据量。参见图2的标示,统计的结果可包括:编号为0、1、2、3、4、5和6的数据分片有2条待处理数据,编号为7的数据分片有1条待处理数据。
可采用冒泡排序或选择排序等排序算法进行一趟排序,可将一趟排序的结果作为排序信息。在步骤S210中,基于数据分片的排序信息,得到在下游处理单元的所有数据分片中待处理数据量最小的数据分片为编号为7的数据分片。在步骤S220中,将待分发数据分发给编号为7的数据分片。
本申请实施例将待分发数据优先分发给待处理数据量最小的数据分片,能够最大限度地疏通数据流阻塞,从而有效避免数据积压。
在一种实施方式中,上述方法还包括:将下游处理单元中的各个数据分片中的待处理数据量的大小作为结点的值创建小顶堆;
基于数据分片的排序信息,得到在下游处理单元的所有数据分片中待处理数据量最小的数据分片,包括:将小顶堆的堆顶结点对应的数据分片确定为待处理数据量最小的数据分片。
堆(heap)是计算机科学中一类数据结构的统称。堆通常是一个可以被看作一棵树的数组对象。示例性地,堆总是满足下列性质:
堆中某个结点的值总是不大于或不小于其父结点的值;
堆总是一棵完全二叉树。
其中,将根结点最小的堆叫做小顶堆、最小堆或小根堆。
本申请实施例中,上游算子可首先将预先统计的下游算子的各个数据分片的待处理数据量大小作为结点的值创建小顶堆。参见图2,命名为usage_heap的堆是一个小顶堆。堆的结点<kgid,n>表示标识为kgid的结点中存储的数据条数为n。在上游算子向下游算子分发数据时,可利用该小顶堆记录上游算子发往下游算子的每个kg的数据条数。如果下游算子的某个kg接收到上游算子分发的a条数据,则该kg对应的结点中的数值n更新为n+a。如果下游算子的某个kg消费了b条数据,则该kg对应的结点中的数值n更新为n-b。因此,堆的结点<kgid,n>中,变量n用于记录该结点对应的kg包含的数据条数,也就是该结点对应的kg中待处理数据量的大小。
小顶堆创建完成后,堆顶结点即为包含数据条数最小的结点。图4是根据本申请另一实施例的数据分发方法的小顶堆示意图。参见图2和图4,小顶堆创建完成后,堆顶结点为编号为7的kg,该kg中包含的数据条数n=1,是待处理数据量最小的数据分片。
与图2相对应,下游算子B中待处理数据量最小的数据分片是编号为7的数据分片。图2中由上游算子A的每个数据分片到下游算子B中编号为7的数据分片的连线可表示数据分发关系,表示上游算子A将数据分发给下游算子B中编号为7的数据分片。
本申请实施例采用小顶堆作为数据结构,可以很容易地找到在下游处理单元的所有数据分片中待处理数据量最小的数据分片。此外,堆排序仅需要一个记录大小供交换用的辅助存储空间。堆排序在最坏的情况下,其时间复杂度也能达到O(nlogn)。本申请实施例将小顶椎作为数据结构,用于记录数据分片中待处理数据量,可减少算法运行时间,提升系统运行效率,从而有效地提高数据流的处理速度与效率。
图5是根据本申请另一实施例的数据分发方法的流程图。如图5所示,在一种实施方式中,图1中的步骤S120,基于数据分片的排序信息,向下游处理单元中的数据分片进行数据分发之后,该数据分发方法还包括:
步骤S310,将待分发数据的数据量累计到下游处理单元中对应的数据分片的待处理数据量中;
步骤S320,根据累计之后的下游处理单元中的各个数据分片中的待处理数据量,对小顶堆进行调整。
参见图1至图4,在一个示例中,上游算子A向下游算子B中编号为7的数据分片分发了4条数据。在步骤S310中,分发数据之后对下游处理单元中对应的数据分片的待处理数据量进行累计。在分发数据之前编号为7的数据分片对应的结点的值n=1,分发数据之后结点的值更新为n=1+4=5。
在步骤S320中,根据更新后的各个结点的值对小顶堆进行调整。图6是根据本申请另一实施例的数据分发方法的小顶堆调整示意图。如图6所示,在编号为7的数据分片对应的结点的值更新为n=5之后,开始调整小顶堆。在调整的过程中编号为7的数据分片依次与编号为0、编号为1、编号为3的数据分片进行交换。最终调整完成的小顶堆如图6所示。
可见,经过调整之后,将待处理数据量较多的编号为7的数据分片对应的结点调整成为叶子结点。也就是说,待处理数据量较多的编号为7的数据分片对应的结点不再是堆顶结点,后续上游算子再分发数据的时候不会再向待处理数据量较多的数据分片分发数据。调整之后的小顶堆的堆顶结点仍是待处理数据量最小的结点,算子再分发数据的时候仍将数据分发给待处理数据量最小的堆顶结点。本申请实施例在上游算子分发数据后通过对小顶堆进行调整,可以保证上游算子始终将数据分发给下游处理单元中待处理数据量最小的数据分片,从而有效地解决数据积压、数据流阻塞的问题。
在一种实施方式中,图5中的步骤S320,根据累计之后的下游处理单元中的各个数据分片中的待处理数据量,对小顶堆进行调整,还包括:
在分发的数据量达到预设阈值的情况下,按照各个数据分片中的待处理数据量对小顶堆进行调整。
在一个示例中,可设置预设阈值为s条数据。为了减少堆的调整频率,可以配置上游算子发送s条数据到堆顶结点对应kg后再调整小顶堆。本申请实施例通过设置分发的数据量达到预设阈值的条件,可以减少堆的调整频率,避免由于堆的频繁调整而消耗系统资源,从而提升系统运行效率,有效地提高数据流的处理速度与效率。
图7是根据本申请另一实施例的数据分发方法的流程图。如图7所示,上述方法还包括:
步骤S410,响应接收到下游处理单元发送的数据分片处理完成的数据量信息,在小顶堆中更新与处理完成的数据量信息对应的结点的值;
步骤S420,根据更新后的结点的值,对小顶堆进行调整。
下游算子处理完数据后,可向上游算子发送ACK(Acknowledge character,确认字符)消息。ACK是在数据通信中接收站发给发送站的一种传输类控制字符。在一个示例中,可用“kgid=d”表示下游算子中标识为d的数据分片。若标识为d的数据分片消费了b条数据,则下游算子向上游算子发送ACK消息,通知上游算子“kgid=d”对应的数据分片中的b条数据已经消费完成。
上游算子接收到ACK消息后,更新小顶堆中“kgid=d”对应的结点的值,将n更新为(n-b),并重新调整小顶堆。
例如,在当前时刻小顶堆中结点的值如图6所示,此时上游算子接收到下游算子发送的ACK消息。ACK消息中通知编号为7的数据分片中的5条数据已经消费完成。则上游算子根据ACK消息将小顶堆中编号为7的数据分片对应的结点的值更新为n=5-5=0。然后重新调整小顶堆。图8是根据本申请另一实施例的数据分发方法的小顶堆调整示意图。如图8所示,在调整的过程中编号为7的数据分片依次与编号为3、编号为1、编号为0的数据分片进行交换。最终调整完成的小顶堆如图8所示。
在后续过程中,上游算子再次分发数据时根据调整之后的小顶堆,将数据分发给堆顶结点对应的数据分片。本申请实施例在下游算子消费数据后通过对小顶堆进行调整,可以保证上游算子始终将数据分发给下游处理单元中待处理数据量最小的数据分片,从而有效地解决数据积压、数据流阻塞的问题。
参见图2,假设下游Processor B的PE-0出现故障而不消费数据,则PE-0在小顶堆中对应的编号为kg[0,2)的数据分片的数据量n的值不会减少。在调整小顶堆的时候该数据分片对应的结点不会处于堆顶,因此不会向编号为kg[0,2)的数据分片分发数据,即不会向Processor B的PE-0分发数据,从而可有效避免数据的积压。可见,本申请实施例中下游算子出现故障时不会再去拉取上游的数据,因此不会产生数据流阻塞的情况。
图9是根据本申请一实施例的数据分发装置的示意图。参见图9,该数据分发装置包括:
查询单元100,用于查询下游处理单元中的数据分片的排序信息,排序信息是对下游处理单元的数据分片按照待处理数据量进行排序得到的;
分发单元200,用于基于数据分片的排序信息,向下游处理单元中的数据分片进行数据分发。
图10是根据本申请一实施例的数据分发装置的分发单元的示意图。如图10所示,在一种实施方式中,分发单元200包括:
排序子单元210,用于基于数据分片的排序信息,得到在下游处理单元的所有数据分片中待处理数据量最小的数据分片;
分发子单元220,用于将待分发数据分发给待处理数据量最小的数据分片。
图11是根据本申请另一实施例的数据分发装置的示意图。如图11所示,在一种实施方式中,上述装置还包括创建单元300,创建单元300用于:将下游处理单元中的各个数据分片中的待处理数据量的大小作为结点的值创建小顶堆;
排序子单元210用于:将小顶堆的堆顶结点对应的数据分片确定为待处理数据量最小的数据分片。
图12是根据本申请另一实施例的数据分发装置的调整单元的示意图。参见图11和图12,在一种实施方式中,上述装置还包括调整单元400,调整单元400包括:
累计子单元410,用于将待分发数据的数据量累计到下游处理单元中对应的数据分片的待处理数据量中;
调整子单元420,用于根据累计之后的下游处理单元中的各个数据分片中的待处理数据量,对小顶堆进行调整。
在一种实施方式中,调整子单元420还用于:
在分发的数据量达到预设阈值的情况下,按照各个数据分片中的待处理数据量对小顶堆进行调整。
在一种实施方式中,调整单元400还用于:
响应接收到下游处理单元发送的数据分片处理完成的数据量信息,在小顶堆中更新与处理完成的数据量信息对应的结点的值;
根据更新后的结点的值,对小顶堆进行调整。
本申请实施例的数据分发装置中的各单元的功能可以参见上述方法中的对应描述,在此不再赘述。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图13所示,是根据本申请实施例的数据分发方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图13所示,该电子设备包括:一个或多个处理器1301、存储器1302,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图13中以一个处理器1301为例。
存储器1302即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的数据分发方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据分发方法。
存储器1302作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的数据分发方法对应的程序指令/模块(例如,附图9所示的查询单元100和分发单元200)。处理器1301通过运行存储在存储器1302中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据分发方法。
存储器1302可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据分发的电子设备的使用所创建的数据等。此外,存储器1302可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器1302可选包括相对于处理器1301远程设置的存储器,这些远程存储器可以通过网络连接至数据分发的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
数据分发方法的电子设备还可以包括:输入装置1303和输出装置1304。处理器1301、存储器1302、输入装置1303和输出装置1304可以通过总线或者其他方式连接,图13中以通过总线连接为例。
输入装置1303可接收输入的数字或字符信息,以及产生与数据分发的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置1304可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决传统物理主机与虚拟专用服务器(VPS)服务中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
根据本申请实施例的技术方案,根据下游处理单元的数据处理能力向下游处理单元中的数据分片进行数据分发,使数据向处理能力快的处理单元倾斜,能够有效地解决数据积压、数据流阻塞的问题,有效地提高数据流的处理速度与效率。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (14)
1.一种数据分发方法,包括:
查询下游处理单元中的数据分片的排序信息,所述排序信息是对所述下游处理单元的数据分片按照待处理数据量进行排序得到的;
基于所述数据分片的排序信息,向所述下游处理单元中的数据分片进行数据分发。
2.根据权利要求1所述的方法,其中,基于所述数据分片的排序信息,向所述下游处理单元中的数据分片进行数据分发,包括:
基于所述数据分片的排序信息,得到在所述下游处理单元的所有数据分片中待处理数据量最小的数据分片;
将待分发数据分发给所述待处理数据量最小的数据分片。
3.根据权利要求2所述的方法,所述方法还包括:将所述下游处理单元中的各个数据分片中的待处理数据量的大小作为结点的值创建小顶堆;
基于所述数据分片的排序信息,得到在所述下游处理单元的所有数据分片中待处理数据量最小的数据分片,包括:将所述小顶堆的堆顶结点对应的数据分片确定为所述待处理数据量最小的数据分片。
4.根据权利要求1至3中任一项所述的方法,其中,基于所述数据分片的排序信息,向所述下游处理单元中的数据分片进行数据分发之后,还包括:
将所述待分发数据的数据量累计到所述下游处理单元中对应的数据分片的待处理数据量中;
根据累计之后的所述下游处理单元中的各个数据分片中的待处理数据量,对所述小顶堆进行调整。
5.根据权利要求4所述的方法,其中,根据累计之后的所述下游处理单元中的各个数据分片中的待处理数据量,对所述小顶堆进行调整,还包括:
在分发的数据量达到预设阈值的情况下,按照各个数据分片中的待处理数据量对所述小顶堆进行调整。
6.根据权利要求1至3中任一项所述的方法,所述方法还包括:
响应接收到所述下游处理单元发送的数据分片处理完成的数据量信息,在所述小顶堆中更新与所述处理完成的数据量信息对应的结点的值;
根据更新后的结点的值,对所述小顶堆进行调整。
7.一种数据分发装置,包括:
查询单元,用于查询下游处理单元中的数据分片的排序信息,所述排序信息是对所述下游处理单元的数据分片按照待处理数据量进行排序得到的;
分发单元,用于基于所述数据分片的排序信息,向所述下游处理单元中的数据分片进行数据分发。
8.根据权利要求7所述的装置,其中,所述分发单元包括:
排序子单元,用于基于所述数据分片的排序信息,得到在所述下游处理单元的所有数据分片中待处理数据量最小的数据分片;
分发子单元,用于将待分发数据分发给所述待处理数据量最小的数据分片。
9.根据权利要求8所述的装置,所述装置还包括创建单元,所述创建单元用于:将所述下游处理单元中的各个数据分片中的待处理数据量的大小作为结点的值创建小顶堆;
所述排序子单元用于:将所述小顶堆的堆顶结点对应的数据分片确定为所述待处理数据量最小的数据分片。
10.根据权利要求7至9中任一项所述的装置,所述装置还包括调整单元,所述调整单元包括:
累计子单元,用于将所述待分发数据的数据量累计到所述下游处理单元中对应的数据分片的待处理数据量中;
调整子单元,用于根据累计之后的所述下游处理单元中的各个数据分片中的待处理数据量,对所述小顶堆进行调整。
11.根据权利要求10所述的装置,其中,所述调整子单元还用于:
在分发的数据量达到预设阈值的情况下,按照各个数据分片中的待处理数据量对所述小顶堆进行调整。
12.根据权利要求7至9中任一项所述的装置,所述调整单元还用于:
响应接收到所述下游处理单元发送的数据分片处理完成的数据量信息,在所述小顶堆中更新与所述处理完成的数据量信息对应的结点的值;
根据更新后的结点的值,对所述小顶堆进行调整。
13.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011063982.0A CN112202692A (zh) | 2020-09-30 | 2020-09-30 | 数据分发方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011063982.0A CN112202692A (zh) | 2020-09-30 | 2020-09-30 | 数据分发方法、装置、设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112202692A true CN112202692A (zh) | 2021-01-08 |
Family
ID=74013138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011063982.0A Pending CN112202692A (zh) | 2020-09-30 | 2020-09-30 | 数据分发方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112202692A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115599541A (zh) * | 2021-02-25 | 2023-01-13 | 华为技术有限公司(Cn) | 一种排序装置及方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030016628A1 (en) * | 2001-07-23 | 2003-01-23 | Broadcom Corporation | Flow based congestion control |
CN102025609A (zh) * | 2009-09-18 | 2011-04-20 | 浙江省电力公司 | 一种基于可分组报文的负载均衡分发系统及其方法 |
CN103345514A (zh) * | 2013-07-09 | 2013-10-09 | 焦点科技股份有限公司 | 大数据环境下的流式数据处理方法 |
CN104822076A (zh) * | 2015-04-14 | 2015-08-05 | 天脉聚源(北京)传媒科技有限公司 | 一种数据的分发方法及装置 |
CN106648904A (zh) * | 2017-01-09 | 2017-05-10 | 大连理工大学 | 一种流式数据处理自适应速率控制方法 |
CN107729147A (zh) * | 2014-03-06 | 2018-02-23 | 华为技术有限公司 | 流计算系统中的数据处理方法、控制节点及流计算系统 |
CN108259373A (zh) * | 2016-12-29 | 2018-07-06 | 中移(苏州)软件技术有限公司 | 一种数据分配调度的方法及系统 |
-
2020
- 2020-09-30 CN CN202011063982.0A patent/CN112202692A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030016628A1 (en) * | 2001-07-23 | 2003-01-23 | Broadcom Corporation | Flow based congestion control |
CN102025609A (zh) * | 2009-09-18 | 2011-04-20 | 浙江省电力公司 | 一种基于可分组报文的负载均衡分发系统及其方法 |
CN103345514A (zh) * | 2013-07-09 | 2013-10-09 | 焦点科技股份有限公司 | 大数据环境下的流式数据处理方法 |
CN107729147A (zh) * | 2014-03-06 | 2018-02-23 | 华为技术有限公司 | 流计算系统中的数据处理方法、控制节点及流计算系统 |
CN104822076A (zh) * | 2015-04-14 | 2015-08-05 | 天脉聚源(北京)传媒科技有限公司 | 一种数据的分发方法及装置 |
CN108259373A (zh) * | 2016-12-29 | 2018-07-06 | 中移(苏州)软件技术有限公司 | 一种数据分配调度的方法及系统 |
CN106648904A (zh) * | 2017-01-09 | 2017-05-10 | 大连理工大学 | 一种流式数据处理自适应速率控制方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115599541A (zh) * | 2021-02-25 | 2023-01-13 | 华为技术有限公司(Cn) | 一种排序装置及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6224244B2 (ja) | 作業密度を増加させ、エネルギー効率を向上させるための電力バランシング | |
US9344395B2 (en) | Subscription groups in publish-subscribe system | |
US10356004B2 (en) | Software load balancer to maximize utilization | |
CN112181683A (zh) | 消息中间件的并发消费方法以及装置 | |
CN111694646A (zh) | 资源调度方法、装置、电子设备及计算机可读存储介质 | |
CN111190745A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN103812949A (zh) | 一种面向实时云平台的任务调度与资源分配方法及系统 | |
CN111782365A (zh) | 定时任务处理方法、装置、设备及存储介质 | |
CN113886434A (zh) | 基于数据库集群的查询和存储方法、装置以及设备 | |
CN111970132A (zh) | Ota数据包下发流量的控制方法、装置及服务器 | |
CN110716959A (zh) | 流式数据处理方法、装置、电子设备及存储介质 | |
CN106104527B (zh) | 流式查询资源控制 | |
CN114448989B (zh) | 调整消息分发的方法、装置、电子设备、存储介质及产品 | |
US10892940B2 (en) | Scalable statistics and analytics mechanisms in cloud networking | |
US8903871B2 (en) | Dynamic management of log persistence | |
CN112202692A (zh) | 数据分发方法、装置、设备以及存储介质 | |
CN114356547B (zh) | 基于处理器虚拟化环境的低优阻塞方法及装置 | |
CN112887407B (zh) | 用于分布式集群的作业流量控制方法和装置 | |
CN111240822B (zh) | 任务调度方法、装置、系统及存储介质 | |
US10379780B2 (en) | Statistics management for scale-out storage | |
CN111831752A (zh) | 分布式数据库的空间整理方法、装置、设备以及存储介质 | |
CN111782147A (zh) | 用于集群扩缩容的方法和装置 | |
CN111858030A (zh) | 作业的资源处理方法、装置、电子设备及可读存储介质 | |
US11663054B2 (en) | Autoscaling of data processing computing systems based on predictive queue length | |
CN113778645A (zh) | 基于边缘计算的任务调度方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210108 |
|
RJ01 | Rejection of invention patent application after publication |