用于在高度分布式数据处理系统中自动且动态地将对于任务的责任分配给可用的计算组件的方法与流程

文档序号:17439275发布日期:2019-04-17 04:32阅读:246来源:国知局
用于在高度分布式数据处理系统中自动且动态地将对于任务的责任分配给可用的计算组件的方法与流程



背景技术:

在其中多个计算机组件贡献它们自己的数据处理和存储部分的分布式数据处理系统中,对于要处理的事务子集和要存储的数据子集的明确责任,即对于要实施的任务的责任,必须分配给各个组件。因此,使用分割技术将数据总量和事务总量分解为子集(部分、分割部分(partition,部分、分割、分区))。在该过程中,每个请求和每个数据项(即每项任务)被分派来自有限范围的值的唯一编号(散列值),并且限定从任何给定散列值到负责组件的映射。然后,该组件负责处理请求和/或存储数据项。由于需要区分不同的责任,例如:数据和索引,系统中需要多组责任装置。

数据处理系统的所有组件必须能够确定负责任务的组件,以便触发在那里处理和存储。

众所周知,使用(从...到…)值范围限定分割,这允许灵活和详细的分割。缺点是需要在系统中的所有组件中保持一致的路由表,否则对这些值范围的改变将导致错误分派。

在高度分布式系统中,这种一致的路由表提出了特殊的挑战。因此,为了一致地分配所涉及的组件的分割,甚至在路由表的更新不一致的情况下,需要替代的分割程序。



技术实现要素:

本发明的目的是提出一种方法,使用该方法,在高度分布式数据处理系统中,对处理的数据的特定子集(分割部分、任务)的责任的分派自动且动态地适合于可用的计算组件。本发明的另外的目的是分割任务,使得可以将有效的算法应用于冗余副本的同步。

根据本发明,该目的通过根据权利要求1的方法实现。

本发明的有利配置从从属权利要求得出。

基于附图中示出的示例性实施方式更详细地解释本发明,附图以示意图的形式示出了根据本发明的方法的顺序。

根据本发明,在用于在高度分布式数据处理系统中通过在处置任务的源组件qz将任务分配给可用的计算组件的方法中,根据需要对该任务进行分割,并且将由此获得的子任务的一部分授权给附加计算组件zz。

例如,当因为处于分割部分的数据量太高或者太多的访问请求在进行而需要释放计算组件时,在数据处理系统中触发任务(分割)划分。

在转移期间必须保证所涉及的计算机组件正确处理受影响的任务。

为每个计算组件分配控制单元,该控制单元完成对多个组件的管理任务。随后将负责源组件的控制单元指定为源管理器qm。此单元是分割过程的触发(器)。

要从源组件接管任务的目标组件是由另外的控制单元(目标管理器zm)管理。由于每个控制单元可以管理多个组件,因此源管理器qm和目的地管理器zm也可以由一个控制组件实现。

可以例如基于这些组件的物理或虚拟位置来实施将组件分配给控制单元,使得例如一个控制单元负责虚拟或物理主机上的所有组件。

每台服务器的组件及它们的控制单元的数量取决于其性能能力。

根据本发明的方法的顺序如下:

第一步包括认识到任务分割的需要。有许多不同的可能触发因素:

-存在没有分配的分割部分的目标组件,

-在两个组件之间分派的分割部分在大小上的显著差异,

-按访问请求(tps负载)的单独组件的过载,

-由于存储的对象(存储)导致的单独组件的过分配。

如果通过负责控制组件——源管理器qm——已经检测到一个这样的触发因素,则在下一步骤中识别潜在的目标组件zz。

用于检测触发因素的控制组件的信息源主要是数据处理系统的任务路由表,其存在于所有组件中并且例如基于流言传播(gossip)协议分布,以及由组件报告存储器和cpu分配。

任务路由表包含所有组件的分割部分,并且因此可以根据大小对这些分割部分进行排序。在按总分割部分大小排序的组件列表中,可以将最大的与最小的进行比较,并且然后决定是否需要对任务进行分割。

为了以并行并以分布式方式实施该操作,同时检查具有大的总分割部分的多个组件和具有小的总分割部分的多个组件作为潜在的候选者,其中它总是发起该过程的负责源组件qz的控制单元qm。

例如,如果在系统中识别出没有任务的组件,则在没有任何另外条件的情况下,识别出具有高于平均大小的任务(分割部分)的另一组件并请求分割以及释放其任务。

由于可以为一个组件分配多项任务,因此所有分配的任务的和与利用比较相关。任务因此被最终识别,其适用于负载平衡并且可以被转移(q->z)。

此后,从源组件qz和所选择的目标组件两者获得对所提议的分割的同意,并且暂时阻止另外的类似请求。

这给予两个组件拒绝所提议的分割的选项。对于此可能的原因可能是,例如,涉及转移的分割过程已经起作用并且组件正在等待该进程的结束,或者组件上的应用因为技术原因当前无法转移它们的状况(db对象或状态)。

只有当两个组件qz、zz以及负责目标组件zz的控制单元zm同意时,才实施分割。

在转移结束后,在任务路由表中确认新的任务分派,并且该程序被终止。

图1示出了在该方法期间在源管理器qm、源组件qz、目标管理器zm、目标组件zz的四个参与组件之间的通信。

必须将对任何组件的任务/分割分配的修改以路由传送给数据处理系统的所有组件。

优选地,基于所谓的流言传播协议进行该信息的交换。据此,仅在一段时间(通常是几秒)之后在系统中一致地更新改变,使得直到那时同步使用旧的和新的路由表而不会因此发生任何处理错误。

只有特定的负责控制单元可以更新对路由表中组件的分割分配的改变,以便避免改变的不一致和冲突,即在分割过程中源组件qz的迁移分割的删除由源管理器qm在系统中分布并且将该分割添加到目标组件zz由目标管理器zm分布在系统中。

如果相关源组件中存在对处理重要的条件,诸如存储的数据项、索引等,则需要将该关于分割的信息从源组件qz转移到目标组件zz。在该转移期间,在系统中对于特定事务的责任保留在源组件qz中或已属于目标组件zz。因此,在这段时间期间,从目标组件zz到源组件qz的转发请求的过程必须是起作用的,反之亦然,直到转移已经结束以及任务路由表已被更新。

根据要转移的数据类型,组件负责唯一的分配和数据的一致修改,直到转移已经完全结束。

使用根据本发明的方法,特别是通过添加或移除资源,在满负载下容易地处置数据处理系统的配置的改变

在操作期间实施系统的扩展以包括另一资源,而无需人工干预。新资源启动空组件(蓝图),这些组件提供有单独的登录通道和授权。经由登录通道,新组件使其自己被系统知晓并被授权。同时,在运行的系统将新组件记录在流言传播表中。在用于同步系统配置的下一个流言传播事务之一中,新组件被集成并随当前任务路由表一起供应。

然后使用根据本发明的方法为新组件分配任务。

对于分割的任务可能还需要再次组合。对于此的触发因素的示例如下:

-系统组件正停止服务,在此之前必须将此组件的所有任务转移到其他组件,或

-整合分散的系统。

在这种情况下,有两种可能的程序:

-将分割部分迁移到其他组件,而不改变分割部分的大小。(合并)

-作为步骤1的结果,统一先前共享的分割部分。(统一)

为了允许负载和数据的均匀分布,另外细分组件内的任务(分割部分)也是有利的,例如以另外将本地分割部分分解为4x1/4分割部分。因此,代替分割,也可以实施这些分割片段中之一的迁移。然后,用于更精细的细分的触发因素取决于分割部分可以拆分成的组件数量(这由于流言传播而在所有组件中都知晓)。然后,s阶段分割意味着:

-获取此分割组的组件总数

-向上舍入到2的幂。

-确定基数为2的对数

-将s添加到此值。

-在二进制任务树中对此位深度进行分割

示例:200个组件并且s=2,向上舍入到2的幂=256,对数基数2=8,加上s=2,给出10位深度,因此1024个分割部分。然后每个组件具有4-6个子分割部分(大约1024/200)。

使用此二进制分割是为了在分割的冗余副本之间实现有效的同步。

数据集的冗余副本产生于这样的事实:多次提供用于其分割的值范围(例如3x)。所有访问请求和数据都在这些副本中并行实施。由于这可能导致在状态和数据存储期间在这些副本之间存在差异,例如,由于数据传输错误,必须修复这些差异。

根据本发明的方法的特别有利的设计可用于执行该修复。

这涉及为每项任务分配特征值,并且基于特征值实施将任务分配给数据处理系统的计算组件。

特征值根据每项任务的内容确定,例如,客户的名称、客户编号或电话号码并且例如表示为64位二进制值。该值可以基于多项式除法来计算,这也在数据的循环冗余校验中提供。

然后,基于这些特征值实施将任务分配给计算组件,其中为每个组件分配限定的值范围。

由于下述事实,限定是以特别简单的方式进行的,所述事实为:特征值的某些部分例如一些最高有效位(前缀)指定地址空间,因此4位可用于分配16个不同的计算组件,8位寻址有256个组件等等。因此,即使对于非常大的数据处理系统,本示例的64位二进制值也是相当足够的。

对于示例特征值0x76912635011e355a,二进制表示的最高有效位是:011101101001......

具有前缀010*的组件与特征值的前3位不匹配,但另一方面,具有前缀01110*的组件与前5位匹配。因此,该组件也负责该任务。

现在可以利用二进制树结构更加简单和快速地进行对负责特定任务的计算组件的搜索,其中从最高有效位开始,每个位表示树结构的分支点。

通过限定从任意二进制起始点(散列前缀)开始的同步程序,分割的二进制树结构也可以用于上述副本之间差异的修复,利用它可以关于对数复杂度识别和修复差异。

在这种情况下,为每个数据项计算内容特征值(摘要)并在树中聚合/组合直到同步节点,以便能够通过比较两个子摘要(0和1)来决定在树中的每个级别上差异是否位于子树的左侧(0)或右侧(1)。

在使用这些子摘要值的同步伙伴之间的交换中,可以在对话中识别具有对数复杂度的数据集中的第一差别。

二进制树结构支持通过下述方式将根据本发明的任务分割为两半(分割划分):所述方式为将二进制任务树中的一个分割条目替换为前缀已扩展了一位的两个新条目。

因此,可以将总值范围视为块状物,通过将部分减半而越来越精细地划分。然后,结果部分代表分布在组件上的分割部分。

本发明的方法使得能够在完全操作中以及即使在最大负载下进行重新分割,并且因此即使在不一致的分布式任务树的情况下确保两个无错误操作,其中要释放的计算机组件即使在从另一组件转移其一半数据期间也没有比以前负载重,此外在有限量的时间之后确保完全重新分割的状态。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1