具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图1为本发明实现负载均衡的方法第一实施例的流程图,如图1所示,该实现负载均衡的方法包括以下步骤:
步骤101、接收数据访问请求,所述数据访问请求包括待访问数据的地址和长度。
步骤102、根据所述待访问数据的地址和长度,在存储设备对应的逻辑单元中确定访问区域。
应用服务器与存储系统之间采用多路径连接时,存储设备对应的逻辑单元被划分为不同区域,具体可以为:多路径软件可以预先将存储设备对应的逻辑单元(Logical Unit Number,简称:LUN)的空间按照设定大小划分为各个不同的区域。
多路径软件将管理的LUN的空间划分成若干区域后加以跟踪,从接收到的数据访问请求例如:输入输出(IO)请求中可以获取待访问数据的地址和长度;根据所述待访问数据的地址和长度,在所述逻辑单元划分的各个区域中,可以查找所述数据访问请求对应的访问区域。
步骤103、若所述访问区域为热点区域,则为所述数据访问请求分配高速路径。
多路径软件对LUN划分的各个不同区域的访问次数进行统计,可以得到访问访问最为频繁的多个热点区域,具体方法是:在预定时间内,对所述逻辑单元中的不同区域的访问次数进行统计,根据所述访问次数和/或访问次数的平均值确定所述逻辑单元中的不同区域是否为热点区域。
多路径软件在向各个路径分发数据访问请求时,为访问热点区域的数据访问请求分配性能较好的路径,以提升热点区域对应的应用的性能。本发明实施例中的高速路径可以为带宽较大的路径,也可以为当前的处理能力较强的路径。低速路径是相对于高速路径的概念,可以为带宽低于高速路径的路径,也可以为当前处理能力低于高速路径的路径。而对于访问区域可能为非热点区域的数据访问请求可以按照具体的处理需要分配路径,下面介绍几种为访问区域为非热点区域的数据访问请求分配路径的示例:
示例一、若所述数据访问请求对应的访问区域为非热点区域,则将所述数据访问请求分配到低速路径。此时,将访问区域为热点区域和非热点区域的IO请求的传输路径分开。
示例二、若所述数据访问请求对应的访问区域为非热点区域,且访问区域为热点区域的数据访问请求已全部分配到高速路径,则将访问区域为非热点区域的数据访问请求分配到所述高速路径。此时,优先将访问区域为热点区域的数据访问请求分配到高速路径,将访问区域为非热点区域的数据访问请求在访问区域为热点区域的数据访问请求分配完后,也可以分配到高速路径上
本实施例为访问热点区域的数据访问请求分配性能较好的高速路径,系统带宽分配方式灵活,可以提高对访问热点区域的数据访问请求的处理速度,提高了系统对数据访问请求的处理性能,从而提高了系统服务质量。
图2为本发明实现负载均衡的方法第二实施例的流程图,如图2所示,在本发明实现负载均衡的方法第一实施例的基础上,以数据访问请求为IO请求为例,该实现负载均衡的方法包括以下步骤:
步骤201、多路径软件将存储设备对应的LUN的空间按照设定大小划分为各个区域。
步骤202、多路径软件接收应用服务器发送的IO请求。
步骤203、多路径软件从IO请求中提取该IO请求需要访问的地址和长度。
步骤204、多路径软件根据该IO请求需要访问的地址和长度,在LUN划分的各个区域中查找并确定该IO请求对应的访问区域。
步骤205、多路径软件根据访问区域是否是热点区域,为该IO请求分配传输路径。
步骤206、多路径软件更新本次IO请求对应的访问区域的访问次数,并且更新访问区域是否为热点区域的判定。
多路径软件将管理的LUN的空间划分成若干区域加以跟踪,从接收到的IO请求中获取该IO请求的访问区域,对这些区域的访问次数加以统计,得到访问最为频繁的热点区域;在分发IO请求时,为访问热点区域的IO请求分配性能较好的高速路径,以提升访问热点区域的应用的性能。其中,图3为本发明实现负载均衡的方法第二实施例中热点区域的示意图,如图3所示,假设系统的应用服务器中有两个应用,应用A和应用B,其中应用A的IO负载较高,为20MB/秒;应用B的IO负载较低,为10MB/秒。应用A对LUN的访问集中在区域“1”、“2”、“4”,应用B对LUN的访问集中在区域“3”、“5”、“6”,多路径软件通过对IO请求访问区域的统计得出:区域“1”、“2”、“4”的访问次数是区域“3”、“5”、“6”的两倍。因此,将区域“1”、“2”、“4”判断为热点区域,将访问区域“1”、“2”、“4”的应用A的IO请求分配到性能好的高速路径,如图3中的路径1,将访问区域“3”、“5”、“6”的应用B的IO请求分配到性能稍差的低速路径,如图3中的路径2。上述举例是一种理想化情况,刚好在优化了高负载应用的同时也使系统总带宽达到最大值。实际情况下有可能在保证高负载应用的同时牺牲非高负载应用的性能,系统总带宽可能略低于最大值。
图4为本发明实现负载均衡的方法第二实施例中热点区域统计方法的示意图,如图4所示,将LUN以4k为单位划分为多个区域,对下发的IO请求进行统计,其中,阴影部分为IO请求访问的区域。假设IO请求的长度为2k,虽然仅访问第二个区域的一半,但统计时,第二个区域的访问次数增加1次。假设IO请求的长度为8k,访问第一个区域的一半、第二个区域、第三个区域的一半,统计时,第一、第二、第三个区域的访问次数各增加1次。根据统计结果可以得到访问最为频繁的若干个热点区域。热点区域的判定方法和个数可根据实际需求来设置,如:最近1小时内访问次数最多的100(或200等)个区域,或1个月内累计访问次数最多的100(或200等)个区域,或访问次数超过平均值(或超过50%或80%等)的所有区域等。
图5为本发明实现负载均衡的方法第二实施例中热点区域和访问次数的示意图,如图5所示,阴影部分的LUN空间划分的区域4k、200k、240k的访问次数分别为“1000”、“800”、“900”,访问较为频繁,4k、200k、240k为热点区域。而LUN空间划分的区域100k和1000k的访问次数分别为“100”、“200”,访问相对较少,100k和1000k为非热点区域。其中,可以设置访问次数大于某个值时为热点区域,或者设置访问次数排名在前几名的为热点区域等。
图6为本发明实现负载均衡的方法第二实施例中路径分配的示意图,如图6所示,假设路径1的性能比路径2好,此时将路径1称为高速路径,路径2称为低速路径。多路径软件分发IO请求时,为访问热点区域的IO请求分配性能较好的高速路径,如对应图5的热点区域,将访问区域4k、200k、240k的IO请求分配到路径1,将访问区域100k和1000k的IO请求分配到路径2。
但是,访问非热点区域IO请求并不一定只能分配性能较低的低速路径,只是优先级较访问热点区域IO低,从而避免出现当大部分IO请求都访问非热点区域时造成的资源浪费。其中,路径1和路径2的路径性能的参数可以是手工配置的例如:用户事前知道路径的性能;也可以根据实际统计各路径对IO请求的处理时间得到的;也可以根据当前路径空闲程度动态得到,具体方法不做限制。
图7为本发明实现负载均衡的方法第二实施例处理效果的示意图,如图7所示,阴影部分的IO请求“0”、“2”“4”、“6”、“8”为访问热点区域的IO请求,空白部分的IO请求“1”、“3”、“5”、“7”、“9”为访问非热点区域IO请求,两种IO请求各5个间隔下发;假设每个IO请求为1MB,路径1的带宽为1MB/秒,路径2的带宽为2MB/秒,此时路径1处理IO请求的性能低于路径2,即路径1为低速路径,路径2为高速路径,IO请求的下发顺序为从“0”到“9”依次下发。从图7中可以看出,采用轮训方式进行负载均衡时,将IO请求“0”、“2”、“4”、“6”、“8”分配到路径1,将IO请求“1”、“3”、“5”、“7”、“9”分配到路径2,此时将访问热点区域的IO请求分配到低速路径上,处理时间长,带宽利用率低,不利于快速处理访问热点区域的IO请求。采用最短队列长度方式进行负载均衡时,将IO请求“0”、“3”、“6”、“9”分配到路径1,将IO请求“1”、“2”、“4”、“5”、“7”、“8”分配到路径2,处理的总时间虽然较短,但不利于快速处理访问热点区域的IO请求。采用的实现负载均衡的方法为:优先将访问热点区域的IO请求“0”、“2”“4”、“6”、“8”分配到路径1,将访问非热点区域的IO请求“1”、“2”、“4”、“5”、“7”,在访问热点区域的IO请求分配完成之后,还可以将访问非热点区域的IO请求“9”分配到路径2。与轮询方式、最短队列长度方式的对比,采用本实施例中的实现负载均衡的方法时,对访问热点区域IO请求的总处理时间可以最短,系统总带宽的大小则可以在采用轮询方式和最短队列长度方式的负载均衡方法之间。
由于在实际应用中很多情况下各个应用的负载是不平均的,比如网站服务:据统计,Internet上超过80%的用户重复访问20%的信息资源。再例如:视频点播业务中,热门视频对应的数据所在的磁盘区域是被访问得最多的也是最繁忙的,相对冷门的视频则访问总量小。造成一部分应用的IO负载较重,同时另一部分应用的IO负载较轻。一个应用访问的数据一般都是固定的,例如:视频点播业务中的某一部视频,或网站业务的某一个页面等。如果某个应用访问的数据随时间或其他因素而改变,则可以将其看成若干个应用的组合。因此LUN空间上各个区域的访问次数,可以反映出上层应用的IO负载情况:IO负载高的应用的数据对应的LUN空间区域的访问次数高;IO负载低的应用的数据对应的LUN空间区域的访问次数低。多路径软件统计LUN空间上各个区域的访问次数,得到最为繁忙的若干热点区域,在分发IO请求时为访问热点区域的IO请求分配性能较好的高速路径,提升了访问热点区域的IO请求的带宽,从而提高了高IO负载应用的性能。本实施例在系统总带宽一定的情况下,为访问热点区域的IO请求灵活分配性能较好的高速路径,可以为高IO负载的应用分配更多的带宽,从而提升高IO负载的应用的性能,提高了服务质量。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图8为本发明实现负载均衡的装置第一实施例的结构示意图,如图8所示,该实现负载均衡的装置包括:接收模块40、确定模块41和第一分配模块42。其中,接收模块40,用于接收数据访问请求,所述数据访问请求包括待访问数据的地址和长度。确定模块41,用于根据所述待访问数据的地址和长度,在存储设备对应的逻辑单元中确定访问区域。第一分配模块42,用于若所述访问区域为热点区域,则为所述数据访问请求分配高速路径。
具体地,应用服务器与存储系统之间采用多路径连接时,实现负载均衡的装置可以预先将存储设备对应的LUN的空间按照设定大小划分为各个区域加以跟踪,接收模块40接收数据访问请求后,确定模块41根据数据访问请求中待访问数据的地址和长度,可以在存储设备对应的逻辑单元中确定访问区域,第一分配模块42可以将访问热点区域的数据访问请求分配到高速路径。实现负载均衡的装置可以通过软件的方式实现,例如上述实施例中的多路径软件。具体方法可以参照本发明实现负载均衡的方法第一实施例的相关描述。
本实施例确定模块根据接收到的数据访问请求确定访问区域后,第一分配模块为访问热点区域的数据访问请求分配性能较好的高速路径,可以提高对访问热点区域的数据访问请求的处理速度,从而提高系统对数据访问请求的处理性能,提高了系统的服务质量。
图9为本发明实现负载均衡的装置第二实施例的结构示意图,如图9所示,在本发明实现负载均衡的装置第一实施例的基础上,该实现负载均衡的装置还包括第二分配模块43,用于若所述访问区域为非热点区域,则将所述数据访问请求分配到低速路径。
进一步地,该实现负载均衡的装置还可以包括:划分模块46,用于将所述存储设备对应的逻辑单元划分为不同区域。
再进一步地,该实现负载均衡的装置还可以包括:统计模块47,用于在预定时间内,对所述逻辑单元中的不同区域的访问次数进行统计,根据访问次数和/或访问次数的平均值确定所述逻辑单元中的不同区域是否为热点区域。
具体地,划分模块46将LUN的空间划分成若干区域后,接收模块40可以接收应用服务器发送的数据访问请求,确定模块41从接收模块40接收到的数据访问请求中获取该数据访问请求的访问区域。由于统计模块47对这些区域的访问次数和/或访问次数的平均值加以统计,因此可以得到哪些是访问频繁的热点区域,哪些是访问频率较低的非热点区域;在分发数据访问请求时,为访问热点区域的数据访问请求分配性能较好的高速路径。例如:在数据访问请求对应的访问区域为热点区域时,第一分配模块42将数据访问请求分配到高速路径。在数据访问请求对应的访问区域为非热点区域时,第二分配模块43将数据访问请求分配到低速路径。具体方法可以参照本发明实现负载均衡的方法第一、第二实施例的相关描述。
本实施例划分模块将LUN的空间划分成若干区域后,确定模块根据接收到的数据访问请求确定访问区域,第一分配模块为访问热点区域的数据访问请求分配性能较好的高速路径,可以提高对访问热点区域的数据访问请求的处理速度,从而提高系统对数据访问请求的处理性能;第二分配模块可以对访问非热点区域的数据访问请求进行处理,进一步提高系统对数据访问请求的处理性能,提高了系统服务质量。
另外,在网站业务中可以使用多台服务器分担响应用户的访问。网站使用的多台服务器中,可能存在不同型号、不同时期的服务器,导致各服务器处理用户访问的性能各不相同,其中将处理用户访问的速度快、能力强的服务器称为高速服务器,将相对于高速服务器的处理用户访问的速度低、能力弱的服务器称为低速服务器。在预定时间内,对用户访问的内容资源的访问次数进行统计后,可以根据访问次数确定所述内容资源是否为热点内容。如果所述内容资源为热点内容,则将所述访问内容分配到高速服务器,否则将所述访问内容分配到低速服务器。将热点内容分配到高速服务器,可以提高系统对用户访问热门内容时的响应速度,从而提高系统处理访问热点内容的效率,提高了系统服务质量。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。