分布式存储系统的负载监控方法及设备技术方案

技术编号:14745791 阅读:86 留言:0更新日期:2017-03-01 22:07
本申请提供一种分布式存储系统的负载监控方法及设备,本申请通过确定分布式存储系统中每台服务器上所有负载压力超标的线程池,对每个负载压力超标的线程池进行报警或负载均衡,能够根据服务器的线程池状态即单台服务器的负载超出服务能力,来进行报警或自动地在服务器之间均衡分配负载,不依赖于用户请求模式,能正确的处理不同用户同时达到的请求,也不依赖于服务器的服务能力,在分布式存储系统的集群内部服务器的服务能力不一致的情况下也能正确执行的报警或负载均衡,从而防止出现热点,提高分布式存储系统服务质量。

【技术实现步骤摘要】

本申请涉及计算机领域,尤其涉及一种分布式存储系统的负载监控方法及设备
技术介绍
分布式存储系统是一种使用集群提供存储服务的分布式系统,用户使用键码(Key)作为索引对相应的键值(Value)进行读写等操作。对于一个键码(Key),用户可以对其进行写入键值(Value)、读取对应的键值(Value)或者删除对应的键值(Value)等不同类型的操作,每个操作称为一个请求。分布式存储系统中的线程池是一种拥有一定数目线程的服务单元,请求先加入线程池的队列中进行等待,线程池中的线程会在空闲的时候依次从队列中取出请求进行处理。分区(Partition)是分布式存储系统调度的基本单元,键码(Key)通过分区(Partition)的开始键码(BeginKey)和结束键码(EndKey)来唯一的确定隶属的分区(Partition),不同的分区(Partition)之间不存在重叠。分布式存储系统中的服务器(Server)是提供服务的基本单元,每个服务器(Server)上拥有若干个分区(Partition),不同键码(Key)的请求根据所属的分区(Partition)的不同从而被不同的服务器(Server)所处理,服务器(Server)内部使用线程池作为实际处理单元来处理不同的请求。用户的键码(Key)是分成分区(Partition)然后按照顺序存储在分布式文件系统中,由于单个分区只能隶属于一台服务器(Server),因此,单个分区范围内的用户请求增多的时候,会导致服务器的负载增大,用户的延时(Latency)增高等,而且还会对这台服务器上的其他分区造成影响。因此,为了保证充分利用集群内部的所有服务器的服务能力,需要一种负载监控的方案来分散热点,提高服务质量。目前解决请求热点的手段是分区的分裂和迁移。其中,分裂是将分区(Partition)按照不同的键码范围(Keys)分成多个分区(Partition),分裂之后的分区(Partition)会随机分散到其他的服务器(Server)上;迁移是将分区(Partition)从一台服务器(Server)移动到另外一台服务器(Server)上。已有的解决请求热点的手段大致有如下三种:1.当单个分区(Partition)的大小超过一定的限制之后,将Partition分成平均分裂成若干个分区(Partition)。但是,按照单个分区(Partition)的大小切分的方案中并不能准确的反映分区(Partition)的处理能力,用户的请求模式不一致,导致分区(Partition)大小对其的影响也不一样,有时候在很小的分区(Partition)大小的情况下也会因为用户请求集中在很小范围内的原因导致热点的出现。2.当单个分区(Partition)的请求的每秒查询率(QPS)大于某个阈值之后,将分区(Partition)按照用户请求的范围进行分裂划分。但是,按照请求的的每秒查询率(QPS)作为阈值来划分需要测定不同服务器(Server)的处理能力,因此在不同的服务器(Server)上需要配置不同的值,而且在服务器(Server)上还运行有其他的程序情况下有时候并不能达到理论的处理能力。3.获取请求执行的一些参数,比如IO操作时间,Cache命中次数等,然后配置一定的规则,当满足预设的条件的时候执行分裂。根据参数配置一定的规则来进行分裂的方案虽然具有很强的灵活性,但是,也正是因为这个原因,在不同的场景下配置的规则也不尽相同,而且需要根据用户的请求模式更新规则,不够自动化。
技术实现思路
本申请的一个目的是提供一种用于分布式存储系统的负载监控方法及设备,能够解决分布式存储系统的出现热点的问题。根据本申请的一个方面,提供了一种分布式存储系统的负载监控方法,该方法包括:确定分布式存储系统中每台服务器上所有负载压力超标的线程池;对每个负载压力超标的线程池进行报警或负载均衡。进一步的,上述方法中,确定分布式存储系统中每台服务器上所有负载压力超标的线程池,包括:获取每台服务器上的每个线程池的队列中一个请求的等待时间与逗留时间的比值,所述逗留时间为每个线程池的队列中一个请求的等待时间与实际处理时间之和;当所述等待时间与逗留时间的比值超过预设超标阈值时,确定该请求所在的服务器上的线程池的负载压力超标。进一步的,上述方法中,所述预设超标阈值根据线程池的请求到达率的预设阈值确定,其中,所述线程池的请求到达率为请求到达线程池的队列的速率与该线程池的单位时间的服务能力的比值,当线程池的请求到达率超过线程池的请求到达率的预设阈值时,对应的等待时间与逗留时间的比值开始急剧上升,所述预设超标阈值超过所述开始急剧上升时等待时间与逗留时间的比值。进一步的,上述方法中,对每个负载压力超标的线程池进行负载均衡,包括:将经过每个负载压力超标的线程池的请求按照分区进行统计,统计出该线程池中隶属于不同分区的请求的个数,并将分区按请求的个数降序排列;判断请求个数最多的分区的请求数量是否超过该线程池的所有分区的请求的总数的一半,若是,对该请求个数最多的分区进行分裂操作。进一步的,上述方法中,对该请求个数最多的分区进行分裂操作,包括:将该分区分成若干个子分区,将子分区分散到其它服务器上,其中,每个子分区对应该分区的键码范围内的一个子键码范围,每个子分区隶属的请求个数基本相等。进一步的,上述方法中,判断请求个数最多的分区的请求数量是否超过该线程池的所有分区的请求的总数的一半之后,还包括:若否,在所述降序排列的分区中从第一分区开始依次选择一个或多个分区,直至未选择的剩余的分区所隶属的请求的总数小于该线程池的所有分区的请求的总数的一半;对选择的分区进行迁移操作。进一步的,上述方法中,将选择的分区进行迁移操作,包括:将每个选择的分区迁移到没有负载压力超标的线程池的服务器上。进一步的,上述方法中,将每个选择的分区迁移到没有负载压力超标的线程池的服务器上,包括:查找符合条件的没有负载压力超标的线程池的服务器,若查找到,将该选择的分区迁移到该查找到的服务器上。进一步的,上述方法中,所述符合条件的没有负载压力超标的线程池的服务器包括:若将某个选择的分区迁移到某个没有负载压力超标的线程池的服务器的对应线程池上后,当该迁移到的目标服务器的每个对应线程池的线程平均使用率均没有超过预设使用率阈值,则该服务器为符合条件的没有负载压力超标的线程池的服务器。进一步的,上述方法中,每个线程池的线程平均使用率通过如下公式(λ1+λ)*B/n获取,其中,λ1表示在迁移前服务器上的某个线程池中的请求到达线程池的队列的速率;λ表示待迁移到的目标服务器在迁移前其上的某个对应线程池中的请求到达线程池的队列的速率;B表示待迁移到的目标服务器的某个对应线程池中的每个线程对一个请求的实际处理时间;n表示待迁移到的目标服务器的某个对应线程池中的线程个数。根据本申请的另一个方面,还提供一种分布式存储系统的负载均衡设备,该设备包括:负载监控装置,用于确定分布式存储系统中每台服务器上所有负载压力超标的线程池;报警或负载均衡装置,用于对每个负载压力超标的线程池进行报警或负载均衡。进一步的,上述设备中,所述负载监控装置,用于获取每台服务器上的每个线程池的队列中一本文档来自技高网
...
分布式存储系统的负载监控方法及设备

【技术保护点】
一种分布式存储系统的负载监控方法,其中,该方法包括:确定分布式存储系统中每台服务器上所有负载压力超标的线程池;对每个负载压力超标的线程池进行报警或负载均衡。

【技术特征摘要】
1.一种分布式存储系统的负载监控方法,其中,该方法包括:确定分布式存储系统中每台服务器上所有负载压力超标的线程池;对每个负载压力超标的线程池进行报警或负载均衡。2.如权利要求1所述的方法,其中,确定分布式存储系统中每台服务器上所有负载压力超标的线程池,包括:获取每台服务器上的每个线程池的队列中一个请求的等待时间与逗留时间的比值,所述逗留时间为每个线程池的队列中一个请求的等待时间与实际处理时间之和;当所述等待时间与逗留时间的比值超过预设超标阈值时,确定该请求所在的服务器上的线程池的负载压力超标。3.如权利要求2所述的方法,其中,所述预设超标阈值根据线程池的请求到达率的预设阈值确定,其中,所述线程池的请求到达率为请求到达线程池的队列的速率与该线程池的单位时间的服务能力的比值,当线程池的请求到达率超过线程池的请求到达率的预设阈值时,对应的等待时间与逗留时间的比值开始急剧上升,所述预设超标阈值超过所述开始急剧上升时等待时间与逗留时间的比值。4.如权利要求1至3任一项所述的方法,其中,对每个负载压力超标的线程池进行负载均衡,包括:将经过每个负载压力超标的线程池的请求按照分区进行统计,统计出该线程池中隶属于不同分区的请求的个数,并将分区按请求的个数降序排列;判断请求个数最多的分区的请求数量是否超过该线程池的所有分区的请
\t求的总数的一半,若是,对该请求个数最多的分区进行分裂操作。5.如权利要求4所述的方法,其中,对该请求个数最多的分区进行分裂操作,包括:将该分区分成若干个子分区,将子分区分散到其它服务器上,其中,每个子分区对应该分区的键码范围内的一个子键码范围,每个子分区隶属的请求个数基本相等。6.如权利要求4所述的方法,其中,判断请求个数最多的分区的请求数量是否超过该线程池的所有分区的请求的总数的一半之后,还包括:若否,在所述降序排列的分区中从第一分区开始依次选择一个或多个分区,直至未选择的剩余的分区所隶属的请求的总数小于该线程池的所有分区的请求的总数的一半;对选择的分区进行迁移操作。7.如权利要求6所述的方法,其中,将选择的分区进行迁移操作,包括:将每个选择的分区迁移到没有负载压力超标的线程池的服务器上。8.如权利要求7所述的方法,其中,将每个选择的分区迁移到没有负载压力超标的线程池的服务器上,包括:查找符合条件的没有负载压力超标的线程池的服务器,若查找到,将该选择的分区迁移到该查找到的服务器上。9.如权利要求8所述的方法,其中,所述符合条件的没有负载压力超标的线程池的服务器包括:若将某个选择的分区迁移到某个没有负载压力超标的线程池的服务器的对应线程池上后,当该迁移到的目标服务器的每个对应线程池的线程平均使用率均没有超过预设使用率阈值,则该服务器为符合条件的没有负载压力超标的线程池的服务器。10.如权利要求9所述的方法,其中,每个线程池的线程平均使用率通过如下公式(λ1+λ)*B/n获取,其中,λ1表示在迁移前服务器上的某个线程池中的请求到达线程池的队列的速率;λ表示待迁移到的目标服务器在迁移前其上的某个对应线程池中的请求到达线程池的队列的速率;B表示待迁移到的目标服务器的某个对应线程池中的每个线程对一个请求的实际处理时间;n表示待迁移到的目标服务器的某个对应线程池中的线程个数...

【专利技术属性】
技术研发人员:张潇雨
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1