首页> 中国专利> 分片调度方法、装置及分布式服务器系统

分片调度方法、装置及分布式服务器系统

摘要

本公开是关于一种分片调度方法、装置及分布式服务器系统,其中,分片调度方法包括:获得当前分布式服务器系统中每个服务器的权重;根据权重为每个服务器分配对应的分片数量,并将对应的分片数量通知对应的服务器,以使服务器保持对应的分片数量。上述分片调度方法、装置及分布式服务器系统,通过获得每个服务器的权重,并根据权重为每个服务器分配对应的分片数量,使得服务器可以保持对应的分片数量,从而达到灵活满足线上负载能力的目的。

著录项

  • 公开/公告号CN105338109A

    专利类型发明专利

  • 公开/公告日2016-02-17

    原文格式PDF

  • 申请/专利权人 小米科技有限责任公司;

    申请/专利号CN201510812434.6

  • 发明设计人 廖振良;赵凌志;张友明;

    申请日2015-11-20

  • 分类号H04L29/08;

  • 代理机构北京博思佳知识产权代理有限公司;

  • 代理人林祥

  • 地址 100085 北京市海淀区清河中街68号华润五彩城购物中心二期13层

  • 入库时间 2023-12-18 14:21:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-12

    授权

    授权

  • 2016-03-16

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20151120

    实质审查的生效

  • 2016-02-17

    公开

    公开

说明书

技术领域

本公开涉及通信技术领域,尤其涉及一种分片调度方法、装置及分布式 服务器系统。

背景技术

随着计算机技术和互联网技术的飞速发展,基于互联网的社交应用软件 应运而生,例如,微博、微信等。社交应用软件可以为用户提供一种即时交 互的平台,例如,两个用户可以通过两台安装了相同的应用软件的通信终端 进行信息的分享和交流等。

由于社交应用软件通常具有海量使用用户且遍布全国各地,因此,需要 服务器具有极大的处理能力,于是出现了分布式服务器系统。

目前的分布式服务器系统包括位于不同地区的服务器,并且为每个地区 服务器设置相同的负载能力,但是,当某个地区出现爆炸性消息时,该地区 的服务器需要处理的信息量会陡增,然而目前该地区的服务器无法有效地提 供服务,甚至会出现宕机的情况。

发明内容

本公开实施例提供一种分片调度方法、装置及分布式服务器系统,用以 解决目前分布式服务器系统无法灵活满足线上负载能力的问题。

根据本公开实施例的第一方面,提供一种分片调度方法,包括:

获得当前分布式服务器系统中每个服务器的权重;

根据所述权重为每个服务器分配对应的分片数量,并将对应的分片数量 通知对应的服务器,以使所述服务器保持对应的分片数量。

在一实施例中,所述每个服务器均包含主节点和从节点;所述每个服务 器通过自己的主节点保存对应数量的分片,通过从节点备份其他服务器主节 点保存的分片。

在一实施例中,当所述每个服务器包含三个节点时,第一个节点为所述 主节点,第二个节点为所述从节点,第三个节点为所述第二个节点的从节点。

在一实施例中,所述方法还包括:

基于预设原则为所述从节点分配分片,以使所述从节点保存对应的分片; 所述预设原则包括与当前服务器主节点分配到的分片保持互斥的原则以及与 当前服务器主节点分配到的分片数量接近的原则。

在一实施例中,所述基于预设原则为所述从节点分配分片,包括:

基于所述预设原则获得所述从节点的所有分片分配方式,并计算所有分 片分配方式对应的平衡量估计值;

从所有的平衡量估计值中找到最小平衡量估计值,并记录对应的分片分 配方式,根据所述分片分配方式为所述从节点分配对应的分片。

在一实施例中,所述平衡量估计值等于所有服务器的主节点和从节点的 分片数量差的平方和。

在一实施例中,所述方法还包括:

检测所述每个服务器的权重是否发生改变,若发生改变,则根据改变前 后的权重获得当前每个服务器主节点的分片迁移信息;

根据计算出的当前每个服务器主节点的分片迁移信息向对应服务器主节 点发送迁入或迁出指令,以使对应服务器主节点迁入或迁出对应数量的分片。

在一实施例中,所述方法还包括:

在所述向对应服务器主节点发送迁入或迁出指令之后,获得所有服务器 的主节点和从节点间相同分片的数量和,并将所述数量和作为互斥量进行保 存;

计算每个服务器的主节点和从节点的分片数量差,并根据所述分片数量 差和所述互斥量获得每个服务器从节点的分片迁移信息;

根据每个服务器从节点的分片迁移信息向对应从节点发送迁入或迁出指 令,以使所述对应从节点迁入或迁出对应的分片。

在一实施例中,所述根据改变前后的权重获得当前每个服务器主节点的 分片迁移信息,包括:

根据改变前后的权重获得当前每个服务器主节点的分片迁移值;

对所述分片迁移值的整数部分按照由小到大的顺序进行排序,并基于排 序后的整数部分和预设迁移方式获得主节点分片的第一迁移信息,所述预设 迁移方式包括首尾迁移方式或倒序迁移方式;

对所述分片迁移值的小数部分按照由小到大的顺序进行排序,并基于排 序后的小数部分和所述预设迁移方式获得主节点分片的第二迁移信息;

根据所述主节点分片的第一迁移信息和所述主节点分片的第二迁移信息 获得每个服务器主节点的分片迁移信息。

在一实施例中,所述根据所述分片数量差和所述互斥量获得每个服务器 从节点的分片迁移信息,包括:

对所有服务器的所述分片数量差进行排序,根据排序结果和首尾迁移方 式获得从节点分片的第一迁移信息;

针对根据所述从节点分片的第一迁移信息进行迁移后的服务器,若仍存 在分片数量差,则按照当前分片数量差由小到大的顺序进行排序,并根据互 斥量和顺序迁移方式获得从节点分片的第二迁移信息;

根据所述从节点分片的第一迁移信息和第二迁移信息获得每个服务器从 节点的分片迁移信息。

根据本公开实施例的第二方面,提供一种分片调度装置,所述装置包括:

获得模块,被配置为获得当前分布式服务器系统中每个服务器的权重;

分配通知模块,被配置为根据所述获得模块获得的所述权重为每个服务 器分配对应的分片数量,并将对应的分片数量通知对应的服务器,以使所述 服务器保持对应的分片数量。

在一实施例中,所述分片调度装置所在的分布式服务器系统中的每个服 务器均包含主节点和从节点;所述每个服务器通过自己的主节点保存对应数 量的分片,通过从节点备份其他服务器主节点保存的分片。

在一实施例中,当所述每个服务器包含三个节点时,第一个节点为所述 主节点,第二个节点为所述从节点,第三个节点为所述第二个节点的从节点。

在一实施例中,所述装置还包括:

从节点分片分配模块,被配置为基于预设原则为所述从节点分配分片, 以使所述从节点保存对应的分片;所述预设原则包括与当前服务器主节点分 配到的分片保持互斥的原则以及与当前服务器主节点分配到的分片数量接近 的原则。

在一实施例中,所述从节点分片分配模块包括:

计算子模块,被配置为基于所述预设原则获得所述从节点的所有分片分 配方式,并计算所有分片分配方式对应的平衡量估计值;

记录分配子模块,被配置为从所有的平衡量估计值中找到最小平衡量估 计值,并记录对应的分片分配方式,根据所述分片分配方式为所述从节点分 配对应的分片。

在一实施例中,所述平衡量估计值等于所有服务器的主节点和从节点的 分片数量差的平方和。

在一实施例中,所述装置还包括:

检测获得模块,被配置为检测所述每个服务器的权重是否发生改变,若 发生改变,则根据改变前后的权重获得当前每个服务器主节点的分片迁移信 息;

第一发送模块,被配置为根据计算出的当前每个服务器主节点的分片迁 移信息向对应服务器主节点发送迁入或迁出指令,以使对应服务器主节点迁 入或迁出对应数量的分片。

在一实施例中,所述装置还包括:

获得保存模块,被配置为在所述第一发送模块向对应服务器主节点发送 迁入或迁出指令之后,获得所有服务器的主节点和从节点间相同分片的数量 和,并将所述数量和作为互斥量进行保存;

迁移信息获得模块,被配置为计算每个服务器的主节点和从节点的分片 数量差,并根据所述分片数量差和所述互斥量获得每个服务器从节点的分片 迁移信息;

第二发送模块,被配置为根据每个服务器从节点的分片迁移信息向对应 从节点发送迁入或迁出指令,以使所述对应从节点迁入或迁出对应的分片。

在一实施例中,所述检测获得模块包括:

迁移值获得子模块,被配置为根据改变前后的权重获得当前每个服务器 主节点的分片迁移值;

第一迁移信息获得子模块,被配置为对所述分片迁移值的整数部分按照 由小到大的顺序进行排序,并基于排序后的整数部分和预设迁移方式获得主 节点分片的第一迁移信息,所述预设迁移方式包括首尾迁移方式或倒序迁移 方式;

第二迁移信息获得子模块,被配置为对所述分片迁移值的小数部分按照 由小到大的顺序进行排序,并基于排序后的小数部分和所述预设迁移方式获 得主节点分片的第二迁移信息;

迁移信息获得子模块,被配置为根据所述主节点分片的第一迁移信息和 所述主节点分片的第二迁移信息获得每个服务器主节点的分片迁移信息。

在一实施例中,所述迁移信息获得模块包括:

第一迁移信息获得子模块,被配置为对所有服务器的所述分片数量差进 行排序,根据排序结果和首尾迁移方式获得从节点分片的第一迁移信息;

第二迁移信息获得子模块,被配置为针对根据所述从节点分片的第一迁 移信息进行迁移后的服务器,若仍存在分片数量差,则按照当前分片数量差 由小到大的顺序进行排序,并根据互斥量和顺序迁移方式获得从节点分片的 第二迁移信息;

迁移信息获得子模块,被配置为根据所述从节点分片的第一迁移信息和 第二迁移信息获得每个服务器从节点的分片迁移信息。

根据本公开实施例的第三方面,提供一种分布式服务器系统,所述系统 包括控制器和多个服务器,其中:

所述控制器包括上述分片调度装置;

所述多个服务器,被配置为对应保持所述控制器分配的分片数量。

根据本公开实施例的第四方面,提供一种分片调度装置,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

获得当前分布式服务器系统中每个服务器的权重;

根据所述权重为每个服务器分配对应的分片数量,并将对应的分片数量 通知对应的服务器,以使所述服务器保持对应的分片数量。

本公开的实施例提供的技术方案可以包括以下有益效果:通过获得每个 服务器的权重,并根据权重为每个服务器分配对应的分片数量,使得服务器 可以保持对应的分片数量,从而达到灵活满足线上负载能力的目的。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性 的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发 明的实施例,并与说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种分布式服务器系统的架构图。

图2是根据一示例性实施例示出的一种分片调度方法的流程图。

图3是根据一示例性实施例示出的一种服务器的主从节点间的关系示意 图。

图4是根据一示例性实施例示出的一种从节点的分片调度方法的流程图。

图5a是根据一示例性实施例示出的一种主节点的分片调度方法的流程 图。

图5b是根据一示例性实施例示出的一种获得服务器主节点的分片迁移 信息的流程图。

图6a是根据一示例性实施例示出的一种获得主节点的分片迁移信息的 过程图一。

图6b是根据一示例性实施例示出的一种获得主节点的分片迁移信息的 过程图二。

图6c是根据一示例性实施例示出的一种获得主节点的分片迁移信息的 过程图三。

图6d是根据一示例性实施例示出的一种获得主节点的分片迁移信息的 过程图四。

图7a是根据一示例性实施例示出的另一种获得主节点的分片迁移信息 的过程图一。

图7b是根据一示例性实施例示出的另一种获得主节点的分片迁移信息 的过程图二。

图8a是根据一示例性实施例示出的另一种从节点的分片调度方法的流 程图。

图8b是根据一示例性实施例示出的一种获得从节点的分片迁移信息的 流程图。

图9a是根据一示例性实施例示出的一种获得从节点的分片迁移信息的 过程图一。

图9b是根据一示例性实施例示出的一种获得从节点的分片迁移信息的 过程图二。

图9c是根据一示例性实施例示出的一种获得从节点的分片迁移信息的 过程图三。

图10是根据一示例性实施例示出的一种分片调度装置的框图。

图11a是根据一示例性实施例示出的另一种分片调度装置的框图。

图11b是根据一示例性实施例示出的另一种分片调度装置的框图。

图11c是根据一示例性实施例示出的另一种分片调度装置的框图。

图11d是根据一示例性实施例示出的另一种分片调度装置的框图。

图11e是根据一示例性实施例示出的另一种分片调度装置的框图。

图11f是根据一示例性实施例示出的另一种分片调度装置的框图。

图12是根据一示例性实施例示出的一种适用于分片调度装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的 描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的 要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所 有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一 些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种分布式服务器系统的架构图,如 图1所示,该分布式服务器系统包括控制器11和多个服务器12,其中:

控制器被配置为获得每个服务器的权重,并根据获得的权重为每个服务 器分配对应的分片数量;多个服务器被配置为对应保持控制器分配的分片数 量。

图2是根据一示例性实施例示出的一种分片调度方法的流程图,该分片 调度方法可应用在如图1所示架构的分布式服务器系统中的控制器上,如图 2所示,该分片调度方法包括:

在步骤S201中,获得当前分布式服务器系统中每个服务器的权重。

上述服务器是指位于不同地区的服务器,该实施例中的控制器可通过监 控不同地区的消息量或不同地区服务器的承载量等方式来获得每个服务器的 权重。

在步骤S202中,根据权重为每个服务器分配对应的分片数量,并将对 应的分片数量通知对应的服务器,以使服务器保持对应的分片数量。

在该实施例中,根据权重为每个服务器分配对应的分片数量,可以达到 灵活满足线上负载能力的目的。

上述分片调度方法实施例,通过获得每个服务器的权重,并根据权重为 每个服务器分配对应的分片数量,使得服务器可以保持对应的分片数量,从 而达到灵活满足线上负载能力的目的。

在本公开如图1所示系统中的所有服务器均包含主节点和从节点,每个 服务器通过自己的主节点保存对应数量的分片,通过从节点备份其他服务器 主节点保存的分片。

由图3可见,本公开实施例中的所有服务器的结构相同,相对于传统的 一主一备两台服务器架构,本公开实施例中可以节省一台备用服务器,且本 公开中的所有服务器均为主服务器,形成主主服务器对等结构,而主服务器 逻辑上的从服务器随机散列分布在其它服务器上,也即所有服务器之间互为 主备关系。这样,若当前服务器宕机,则可以从其他服务器的从节点中找到 备份分片。

为了对数据进行多重备份,该实施例中的每个服务器节点可以包含多个 节点,当包含n个节点时,可以对分片进行n-1次备份,例如,可以如图3 所示,具有三个节点。当有三个节点时,可以对分片进行双重备份。

需要说明的是,上述主节点和从节点是相对关系,以图3所示的每个服 务器包含三个节点为例,可以将第一个节点作为主节点,第二个节点作为从 节点,而第三个节点可以将第二个节点作为自己的逻辑主节点,也即自己是 第二个节点的逻辑从节点,从节点从属于主节点。

通过图3所示结构的服务器可以实现分片的双重备份,这样,可以在多 个服务器宕机后,仍能通过其他机器的从节点找到对应的分片信息。

在本公开实施例中,控制器在为从节点分配分片时需要基于以下原则: 第一、与当前服务器主节点分配到的分片保持互斥的原则,例如,假设主节 点分配到的分片为分片1-3,则当前服务器的从节点不可以分配到分片1-3, 也即可以分配到其他服务器主节点的分片;第二,尽量保持与主节点具有相 同数量的分片,由于主节点的分片数量是控制器基于当前服务器的权重分配 的,则表明当前服务器具有相应的承载能力,因此,可以根据当前服务器的 承载能力确定从节点的分片数量,也即尽量保持从节点分片数量接近主节点 的分片数量。当控制器为从节点分配好分片后,从节点被配置为接收并保存 控制器分配的分片,以达到备份的目的。

图4是根据一示例性实施例示出的一种从节点的分片调度方法的流程图, 如图4所示,从节点的分片调度方法包括:

在步骤S401中,基于上述预设原则获得从节点的所有分片分配方式, 并计算所有分片分配方式对应的平衡量估计值。

在该实施例中,平衡量估计值等于所有服务器的主节点和从节点的分片 数量差的平方和,假设,平衡量估计值V=A^2+B^2+C^2……,其中,A代 表服务器1的主节点和从节点的分片数量差,B代表代表服务器2的主节点 和从节点的分片数量差,以此类推。

假设,A+B=C,则(A+B)^2=C^2;由此可以推出:A^2+B^2<C^2, 所以尽量把主节点和从节点的分片数量差“平摊”到不同的服务器。

由于V=A^2+B^2+C^2……,V值越小,主节点和从节点就越平衡。基 于这个结论,可以采用递归、回溯与贪心的算法,枚举出所有可能的分片分 配方式,并计算所有分片分配方式对应的平衡量估计值,然后找到最小平衡 量估计值。

在步骤S402中,从所有的平衡量估计值中找到最小平衡量估计值,并 记录对应的分片分配方式,根据分片分配方式为从节点分配对应的分片。

由于需要进行大量的递归计算,为了减少递归深度,优化时间复杂度, 可以进行“剪枝”操作,在该实施例中,可以借助第二类斯特林函数(stirling) 完成分配方式计算。

另外,为了提高计算速度,可以通过调用多个线程进行并行计算。例如, 有128分片,ABC三个服务器,每个分片都递归地往服务器里面放,以A 服务器为起点,A服务器有分片1与没有分片1两种情况,于是得出递归的 第一层共有128*2=256种分支,于是可以通过调用256个线程进行分支上的 递归“并行计算”,求出最小V值。

在获得最小平衡量估计值时,记录与最小平衡量估计值对应的分片分配 方式,并可据此为服务器从节点分配分片。

由此可见,通过上述实施例,可以为服务器从节点分配分片,并且使每 个服务器主节点和从节点的分片数量尽可能地一致。

在本公开实施例中,可能由于各种原因引起服务器的权重发生变化,这 就需要对不同服务器的主节点分片进行迁移,图5a是根据一示例性实施例示 出的一种主节点的分片调度方法流程图,如图5a所示,该主节点的分片调度 方法包括:

在步骤S501中,检测每个服务器的权重是否发生改变,若发生改变, 则执行S502,若未发生改变,则继续检测每个服务器的权重是否发生改变。

在该实施例中,有以下情况可以引起服务器的权重发生改变:

第一种情况,因部分地区的消息量发生变化,引起服务器权重发生改变;

第二种情况,因注册新的服务器或解注册旧的服务器,引起服务器权重 发生改变。

在步骤S502中,根据改变前后的权重获得当前每个服务器主节点的分 片迁移信息。

在步骤S503中,根据计算出的当前每个服务器主节点的分片迁移信息 向对应服务器主节点发送迁入或迁出指令,以使对应服务器主节点迁入或迁 出对应数量的分片。

服务器主节点在接收到对应的迁入或迁出指令后,根据对应指令迁入或 迁出对应数量的分片。

如图5b所示,上述步骤S502可以包括以下步骤:

在步骤S5021中,根据改变前后的权重获得当前每个服务器主节点的分 片迁移值。

在步骤S5022中,对分片迁移值的整数部分按照由小到大的顺序进行排 序,并基于排序后的整数部分和预设迁移方式获得主节点分片的第一迁移信 息,预设迁移方式包括首尾迁移方式或顺序迁移方式。

在步骤S5023中,对分片迁移值的小数部分按照由小到大的顺序进行排 序,并基于排序后的小数部分和与整数部分同样的迁移方式获得主节点分片 的第二迁移信息。

在步骤S5024中,根据主节点分片的第一迁移信息和主节点分片的第二 迁移信息获得每个服务器主节点的分片迁移信息。

下面以引起服务器的权重发生改变的两种情况为例,对图5b进行详细说 明:

针对第一种情况,控制器通过上述步骤S5021-5023获得当前每个服务器 主节点的分片迁移信息的过程可以为:

根据改变前后的权重计算出每个服务器主节点的分片迁移值,对该分片 迁移值的整数部分按照由小到大的顺序进行排序,基于排序后的整数部分和 首尾迁移方式获得主节点分片的第一迁移信息,然后,对小数部分按照由小 到大的顺序进行排序,并基于排序后的小数部分和首尾迁移方式获得主节点 分片的第二迁移信息,由此可以获得每个服务器主节点的分片迁移量和分片 迁移路径。

假设,计算出的每个服务器主节点的分片迁移值如图6a所示,从图6a 可以看出,服务器1主节点的分片迁出值分别为5.5,服务器2主节点的分 片迁入值分别为2.4,服务器3主节点的分片迁入值分别为5.2,服务器4主 节点的分片迁出值为2.1,并对整数部分按照由小到大的顺序进行排序,然 后基于排序后的整数部分和首尾迁移方式,获得主节点分片的第一迁移信息 为:由服务器1的主节点向服务器3的主节点迁入5个分片,由服务器4的 主节点向服务器2的主节点迁入2个分片;然后对小数部分按照由小到大的 顺序进行排序,排序后的结果如图6b所示;之后根据图6b排序结果和首尾 迁移方式,获得主节点分片的第二迁移信息为:由服务器1的主节点向服务 器2的主节点迁入1个分片,由服务器4的主节点向服务器3的主节点迁入 1个分片,如图6c所示;控制器在获得上述第一迁移信息和第二迁移信息后, 向对应的服务器主节点发送迁移指令,服务器主节点在接收到上述迁移指令 后迁出或迁入对应的分片,使得最终迁入值和迁出值互相抵消,如图6d所示; 通过图6a-图6d可以获得服务器1主节点的分片迁出量为6;服务器2主节 点的分片迁入量为3;服务器3主节点的分片迁入量为6;服务器4主节点的 分片迁出量为3,迁移路径可参见图6a和图6c。

需要说明的是,在获得上述第一迁移信息和第二迁移信息的过程中使用 了首尾迁移方式,首尾迁移方式来源于首尾凹凸迁移算法,下面示例性地介 绍下首尾凹凸迁移算法的核心思想:

如图6a所示,可以将迁出值画在水平线上方(即迁出值代表凸出部分), 迁入值画在水平线下方(即迁入值代表凹进部分),水平线代表数值为0, 其中,凸出部分和凹进部分的大小与对应的迁出值和迁入值大小对应,在对 迁出值和迁入值排序过程中,可以将迁出值看作正数,迁入值看作负数;然 后对整数部分按照由小到大的顺序进行排序,排序的目的是为了更好地展现 迁移需求,对排序后的整数部分采用首尾迁移,即从具有最大迁出值的服务 器(如图6a中的服务器1)主节点迁出整数个分片,并将迁出的分片迁入具 有最大迁入值的服务器(如图6a中的服务器3)主节点,依次类推,同样地, 对小数部分也是按照上述原理进行迁移的,通过该算法,可以保证服务器节 点间的相互迁移量尽可能地少。

针对第二种情况,控制器根据改变前后的权重计算出当前每个服务器主 节点的分片迁移信息的过程可以为:

当新注册的服务器为一个时,根据改变前后的权重计算出当前每个服务 器主节点的分片迁移值,对该分片迁移值的整数部分按照由小到大的顺序进 行排序,基于排序后的整数部分和倒序迁移方式获得主节点分片的第一迁移 信息,然后,对小数部分按照由小到大的顺序进行排序,并基于排序后的小 数部分和倒序迁移方式获得主节点分片的第二迁移信息,由此可以获得每个 服务器主节点的分片迁移量和分片迁移路径。

假设,控制器计算出的包括新注册服务器在内的每个服务器主节点的分 片迁移值如图7a所示,从图7a可以看出,服务器1-服务器4主节点的分片 迁出值分别为3.4、2.9、5.1和1.6,新注册的服务器主节点的分片迁入值为 13;对整数部分按照由小到大的顺序进行排序后的结果如图7a所示,根据排 序结果和倒序迁移方式(即按照由大到小的顺序进行迁移的方式),获得主 节点分片的第一迁移信息为:由服务器3的主节点向新注册服务器的主节点 迁入5个分片,由服务器1的主节点向新注册服务器的主节点迁入3个分片, 由服务器2的主节点向新注册服务器的主节点迁入2个分片,由服务器4的 主节点向新注册服务器的主节点迁入1个分片(若此时服务器按照该迁移信 息进行迁移,则新注册的服务器主节点已有11个分片,还差两个分片);然 后,对小数部分按照由小到大的顺序进行排序的结果如图7b所示,然后根据 排序结果和倒序迁移方式,获得主节点分片的第二迁移信息为:由服务器2 的主节点向新注册服务器的主节点迁入1个分片,由服务器4的主节点向新 注册服务器的主节点迁入1个分片,如图7b所示;控制器在获得上述第一迁 移信息和第二迁移信息后,向对应的服务器主节点发送迁移指令,服务器主 节点在接收到上述迁移指令后迁出或迁入对应的分片,从而完成主节点分片 的迁移,通过上述过程可以获得服务器1主节点的分片迁出量为3;服务器2 主节点的分片迁出量为3;服务器3主节点的分片迁出量为5;服务器4主节 点的分片迁出量为2,新注册服务器主节点的分片迁入量为13;且服务器1-4 主节点的分片迁出路径均为从自己所在的服务器迁出至新注册服务器,新注 册服务器主节点的分片迁入路径为从服务器1-4迁入至自己所在的服务器。

需要说明的是,在获得上述第一迁移信息和第二迁移信息的过程中首先 对分片迁移值的整数部分和小数部分按照由小到大的顺序进行排序,然后对 排序结果进行倒序迁移的目的是为了首先迁移数值较大的分片,以使得服务 器节点间的相互迁移量尽可能地少。

由此可见,控制器通过上述实施例,获得主节点的分片迁移信息后,可 以向对应的服务器主节点发送迁移指令,从而使服务器可以根据迁移指令迁 移对应数量的分片,以达到保持控制器根据新的权重分配的分片数量的目的。

在本公开实施例中,在服务器主节点间进行分片迁移后,有可能出现同 一服务器中的主节点和从节点具有相同的分片的情况,而基于主从节点分片 互斥的原则,同一服务器中的主从节点不可以具有相同的分片,因此,需要 对从节点的分片进行迁移。

图8a是根据一示例性实施例示出的另一种从节点的分片调度方法的流 程图,如图8a所示,该方法包括:

在步骤S801中,获得所有服务器的主节点和从节点间相同分片的数量 和,并将数量和作为互斥量进行保存。

在该实施例中,计算所有服务器的主节点和从节点间相同分片的数量和, 例如,共有3个服务器,第一个服务器的主从节点都具有分片2、3,第一个 服务器的主从节点都具有分片4,第三个服务器的主从节点都具有分片7,则 互斥量为4。

在步骤S802中,计算每个服务器的主节点和从节点的分片数量差,并 根据分片数量差和互斥量获得每个服务器从节点的分片迁移信息。

在该实施例中,首先利用图6a中采用的首尾迁移方式根据分片数量差获 得从节点分片的第一迁移信息,然后采用首尾迁移方式根据互斥量获得从节 点分片的第二迁移信息。

在步骤S803中,根据每个服务器从节点的分片迁移信息向对应从节点 发送迁入或迁出指令,以使对应从节点迁入或迁出对应的分片。

服务器在接收控制器发送的迁入或迁出指令后,可以根据对应的指令迁 入或迁出对应的分片,从而消除互斥的分片,并使主节点和从节点的分片数 量尽可能地一致。

如图8b所示,上述步骤S802可以包括以下步骤:

在步骤S8021中,对所有服务器主从节点的分片数量差进行排序,根据 排序结果和首尾迁移方式获得从节点分片的第一迁移信息。

该实施例中的,主从节点的分片数量差为从节点的分片数量减去从节点 的分片数量;例如,服务器1的从节点的分片数量为8,从节点的分片数量 为6,则服务器1主从节点的分片数量差为2;又例如,服务器2的从节点的 分片数量为8,从节点的分片数量为10,则服务器2主从节点的分片数量差 为-2。

在步骤S8022中,针对根据从节点分片的第一迁移信息进行迁移后的服 务器,若仍存在分片数量差,则按照当前分片数量差由小到大的顺序进行排 序,并根据互斥量和顺序迁移方式获得从节点分片的第二迁移信息。

在步骤S8023中,根据从节点分片的第一迁移信息和第二迁移信息获得 每个服务器从节点的分片迁移信息。

假设,计算出的每个服务器主从节点的分片数量差如图9a所示,并对分 片数量差进行排序,并根据图9a所示的排序结果和首尾迁移方式获得的从节 点分片的第一迁移信息为:由服务器1向服务器2和服务器3分片迁入1个 分片,如图9b所示;然后判断根据第一迁移信息进行迁移后的服务器主从节 点是否仍存在分片数量差,若仍存在分片数量差,则按照当前分片数量差由 小到大的顺序进行排序,并根据排序结果和互斥量顺序迁移方式获得的从节 点分片的第一迁移信息为:将4个互斥分片迁入服务器3,1个互斥分片迁入 服务器2,如图9c所示;需要说明的是,选择互斥分片时也要遵守主从节点 分片互斥的原则。

由此可见,通过该实施例,可以清除服务器的主从节点间互斥的分片, 并使主从节点的分片数量尽可能地一致。

图10是根据一示例性实施例示出的一种分片调度装置的框图,如图10 所示,该分片调度装置包括获得模块21和分配通知模块22,其中:

获得模块21被配置为获得当前分布式服务器系统中每个服务器的权重; 分配通知模块22被配置为根据获得模块21获得的权重为每个服务器分配对 应的分片数量,并将对应的分片数量通知对应的服务器,以使服务器保持对 应的分片数量。

其中,分片调度装置所在的分布式服务器系统中的每个服务器均包含主 节点和从节点;每个服务器通过自己的主节点保存对应数量的分片,通过从 节点备份其他服务器主节点保存的分片。

另外,当每个服务器包含三个节点时,第一个节点为主节点,第二个节 点为从节点,第三个节点为第二个节点的从节点。

上述分片调度装置实施例,通过获得模块获得每个服务器的权重,并通 过分配通知模块根据权重为每个服务器分配对应的分片数量,使得服务器可 以保持对应的分片数量,从而达到灵活满足线上负载能力的目的。

图11a是根据一示例性实施例示出的另一种分片调度装置的框图,该装 置还可包括:

从节点分片分配模块23,被配置为基于预设原则为从节点分配分片,以 使从节点保存对应的分片;预设原则包括与当前服务器主节点分配到的分片 保持互斥的原则以及与当前服务器主节点分配到的分片数量接近的原则。

图11b是根据一示例性实施例示出的另一种分片调度装置的框图,如图 11b所示,在上述图11a所示实施例的基础上,从节点分片分配模块23可包 括计算子模块231和记录分配子模块232,其中:

计算子模块231被配置为基于预设原则获得从节点的所有分片分配方式, 并计算所有分片分配方式对应的平衡量估计值;记录分配子模块232被配置 为从所有的平衡量估计值中找到最小平衡量估计值,并记录对应的分片分配 方式,根据分片分配方式为从节点分配对应的分片。

在该实施例中,上述平衡量估计值等于所有服务器的主节点和从节点的 分片数量差的平方和。

图11c是根据一示例性实施例示出的另一种分片调度装置的框图,如图 11a所示,在上述图11a所示实施例的基础上,该装置还可包括检测获得模 块24和第一发送模块25,其中:

检测获得模块24被配置为检测每个服务器的权重是否发生改变,若发生 改变,则根据改变前后的权重获得当前每个服务器主节点的分片迁移信息; 第一发送模块25被配置为根据计算出的当前每个服务器主节点的分片迁移 信息向对应服务器主节点发送迁入或迁出指令,以使对应服务器主节点迁入 或迁出对应数量的分片。

图11d是根据一示例性实施例示出的另一种分片调度装置的框图,如图 11d所示,在上述图11c所示实施例的基础上,该装置还可包括获得保存模 块26、迁移信息获得模块27和第二发送模块28,其中:

获得保存模块26被配置为在第一发送模块25向对应服务器主节点发送 迁入或迁出指令之后,获得所有服务器的主节点和从节点间相同分片的数量 和,并将数量和作为互斥量进行保存;迁移信息获得模块27被配置为计算每 个服务器的主节点和从节点的分片数量差,并根据分片数量差和互斥量获得 每个服务器从节点的分片迁移信息;第二发送模块28被配置为根据每个服务 器从节点的分片迁移信息向对应从节点发送迁入或迁出指令,以使对应从节 点迁入或迁出对应的分片。

图11e是根据一示例性实施例示出的另一种分片调度装置的框图,如图 11e所示,在上述图11c所示实施例的基础上,检测获得模块24可包括迁移 值获得子模块241、第一迁移信息获得子模块242、第二迁移信息获得子模块 243和迁移信息获得子模块244,其中:

迁移值获得子模块241被配置为根据改变前后的权重获得当前每个服务 器主节点的分片迁移值;第一迁移信息获得子模块242被配置为对分片迁移 值的整数部分按照由小到大的顺序进行排序,并基于排序后的整数部分和预 设迁移方式获得主节点分片的第一迁移信息,预设迁移方式包括首尾迁移方 式或倒序迁移方式;第二迁移信息获得子模块243被配置为对分片迁移值的 小数部分按照由小到大的顺序进行排序,并基于排序后的小数部分和预设迁 移方式获得主节点分片的第二迁移信息;迁移信息获得子模块244被配置为 根据主节点分片的第一迁移信息和主节点分片的第二迁移信息获得每个服务 器主节点的分片迁移信息。

图11f是根据一示例性实施例示出的另一种分片调度装置的框图,如图 11f所示,在上述图11d所示实施例的基础上,迁移信息获得模块27可包括 第一迁移信息获得子模块271、第二迁移信息获得子模块272和迁移信息获 得子模块273,其中:

第一迁移信息获得子模块271,被配置为对所有服务器的分片数量差进 行排序,根据排序结果和首尾迁移方式获得从节点分片的第一迁移信息;第 二迁移信息获得子模块272,被配置为针对根据从节点分片的第一迁移信息 进行迁移后的服务器,若仍存在分片数量差,则按照当前分片数量差由小到 大的顺序进行排序,并根据互斥量和顺序迁移方式获得从节点分片的第二迁 移信息;迁移信息获得子模块273,被配置为根据从节点分片的第一迁移信 息和第二迁移信息获得每个服务器从节点的分片迁移信息。

关于上述实施例中的装置,其中各个模块执行操作的具体方式和达到的 效果已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说 明。

另外,本公开实施例还提供了一种分布式服务器系统,如图1所示,其 中,控制器中可包括图10-11f所示结构和功能的模块,此处不赘述,服务器 的结构和功能可参见图3,此处不赘述。

上述分片调度系统实施例,通过控制器获得每个服务器的权重,并通过 分配通知模块根据权重为每个服务器分配对应的分片数量,使得服务器可以 保持对应的分片数量,从而达到灵活满足线上负载能力的目的。

图12是根据一示例性实施例示出的一种适用于分片分配装置的框图。例 如,装置1200可以是移动电话,计算机,数字广播终端,消息收发设备,游 戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

参照图12,装置1200可以包括以下一个或多个组件:处理组件1202, 存储器1204,电源组件1206,多媒体组件1208,音频组件1210,输入/输出 (I/O)的接口1212,传感器组件1214,以及通信组件1216。

处理组件1202通常控制装置1200的整体操作,诸如与显示,电话呼叫, 数据通信,相机操作和记录操作相关联的操作。处理元件1202可以包括一个 或多个处理器1220来执行指令,以完成上述的方法的全部或部分步骤。此外, 处理组件1202可以包括一个或多个模块,便于处理组件1202和其他组件之 间的交互。例如,处理部件1202可以包括多媒体模块,以方便多媒体组件 1208和处理组件1202之间的交互。

存储器1204被配置为存储各种类型的数据以支持在设备1200的操作。 这些数据的示例包括用于在装置1200上操作的任何应用程序或方法的指令, 联系人数据,电话簿数据,消息,图片,视频等。存储器1204可以由任何类 型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储 器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只 读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM), 磁存储器,快闪存储器,磁盘或光盘。

电力组件1206为装置1200的各种组件提供电力。电力组件1206可以包 括电源管理系统,一个或多个电源,及其他与为装置1200生成、管理和分配 电力相关联的组件。

多媒体组件1208包括在所述装置1200和用户之间的提供一个输出接口 的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。 如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入 信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上 的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测 与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组 件1208包括一个前置摄像头和/或后置摄像头。当设备1200处于操作模式, 如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒 体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具 有焦距和光学变焦能力。

音频组件1210被配置为输出和/或输入音频信号。例如,音频组件1210 包括一个麦克风(MIC),当装置1200处于操作模式,如呼叫模式、记录模 式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信 号可以被进一步存储在存储器1204或经由通信组件1216发送。在一些实施 例中,音频组件1210还包括一个扬声器,用于输出音频信号。

I/O接口1212为处理组件1202和外围接口模块之间提供接口,上述外 围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页 按钮、音量按钮、启动按钮和锁定按钮。

传感器组件1214包括一个或多个传感器,用于为装置1200提供各个方 面的状态评估。例如,传感器组件1214可以检测到设备1200的打开/关闭状 态,组件的相对定位,例如所述组件为装置1200的显示器和小键盘,传感器 组件1214还可以检测装置1200或装置1200一个组件的位置改变,用户与装 置1200接触的存在或不存在,装置1200方位或加速/减速和装置1200的温 度变化。传感器组件1214可以包括接近传感器,被配置用来在没有任何的物 理接触时检测附近物体的存在。传感器组件1214还可以包括光传感器,如 CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该 传感器组件1214还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力 传感器或温度传感器。

通信组件1216被配置为便于装置1200和其他设备之间有线或无线方式 的通信。装置1200可以接入基于通信标准的无线网络,如WiFi,2G或3G, 或它们的组合。在一个示例性实施例中,通信部件1216经由广播信道接收来 自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中, 所述通信部件1216还包括近场通信(NFC)模块,以促进短程通信。例如, 在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术, 超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在示例性实施例中,装置1200可以被一个或多个应用专用集成电路 (ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编 程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微 处理器或其他电子元件实现,用于执行上述方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储 介质,例如包括指令的存储器1204,上述指令可由装置1200的处理器1220 执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、 随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本 公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性 变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公 开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被 视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确 结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所 附的权利要求来限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号