一种基于频率的分发数据请求方法及装置的制作方法

文档序号:7886724阅读:379来源:国知局
专利名称:一种基于频率的分发数据请求方法及装置的制作方法
技术领域
本发明涉及数据分发领域,尤其涉及一种基于频率的分发数据请求方法及装置。
背景技术
随着Web2.0网络平台的兴起,Web2.0更注重用户的交互作用,用户既是网站内容的浏览者,也是网站内容的制造者,因而随着交互类型的web业务越来越多,会产生大量的数据请求,所带给数据服务器的压力也越来越大。目前,针对大量的数据请求,成熟的数据服务解决方案是采用负载均衡的技术。所谓负载均衡,是指将负载(工作任务)进行平衡、分摊到多个数据服务器上执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。虽然建立在现有网络结构之上的负载均衡技术通过网络将请求平均分配给服务器集群上可以解决一部分压力,但同时也会牺牲一部分性能。比如,现有业务对数据的请求并不平均,对一部分数据的数据请求频繁,而对另一部分数据的数据请求可能间隔时间很长,随着数据请求的增多,如果将不同数据不同频率的数据请求通过负载均衡的技术分发至同一个数据库,那么频繁地寻找请求频率较高的部分数据将会耗费更长的时间,并且数据服务速度和吞吐的提升效果也不会理想。

发明内容
为了解决上述问题,本发明的实施例的一种目的是提供一种能够根据业务数据请求的需求高效率低成本地转发数据请求的方法,从而解决了现有数据不平均请求速度导致服务器性能较低的问题。因此,为了实现上述目的,本发明提供一种基于频率的分发数据请求的方法,包括以下步骤:步骤Al,获得数据请求的标识,根据该数据请求的标识获得请求频率,其中该请求频率的值为在请求队列长度中的位置;步骤A2,根据所获得的该数据请求的请求频率,将该数据请求发至相应的服务器上。根据本发明的一实施例,所述请求队列为0_2~n的环形队列,其中n为正整数。优选地,n为32。根据本发明的一实施例,所述步骤Al进一步包括:A11:根据该数据请求的标识计算该数据请求的Hash值,按照所计算出的Hash值将该数据请求配置在请求队列中;A12:修正该数据请求在该请求队列中的位置,基于该位置获得该数据请求的请求频率。根据本发明的一实施例,所述步骤A12包括:A121:在该请求队列中查找是否还存在与该数据请求相同的标识,若存在,转到步骤A122中,否则将该数据请求初始化至该请求队列的队尾;A122:查到一次与该数据请求相同的标识,则就将该数据请求在该请求队列中的当前位置向前置换一次,直到在该请求队列中查找完所有的与该数据请求相同的标识,然后获得该数据请求在请求队列中的最终位置。
根据本发明的一实施例,所述步骤A13中向前置换的方式为向前间隔一个或多个位置进行互换。根据本发明的一实施例,所述步骤A2中还包括根据该数据请求的请求频率查找相应服务器的步骤A21,该步骤A21具体为:根据该数据请求的请求频率,以该数据请求在请求队列中的位置为起始,在请求队列中向前查找服务器的标识,其中不同性能的服务器根据服务器的标识的hash值和服务器的性能配置在请求队列中;将找到的第一个服务器作为转发该数据请求的相应服务器。本发明还提供一种相应的基于频率的分发数据请求的装置,所述装置包括:请求频率获取模块,用于获得数据请求的标识并根据该数据请求的标识获得请求频率,其中该请求频率的值为在请求队列长度中的位置;分发模块,用于根据所获得的该数据请求的请求频率将该数据请求发至相应的服务器上。根据本发明的一实施例,所述请求频率获取模块还包括:位置配置单元,用于根据该数据请求的标识计算该数据请求的Hash值,按照所计算出的Hash值将该数据请求配置在请求队列中;位置修正单元,用于修正该数据请求在该请求队列中的位置,基于该位置获得该数据请求的请求频率。根据本发明的一实施例,所述位置修正单元包括:查找单元,用于在该请求队列中查找是否还存在与该数据请求相同的标识,若存在,则在置换单元对该数据请求进行位置置换,否则将该数据请求初始化至该请求队列的队尾;置换单元,用于查到一次与该数据请求相同的标识,则就将该数据请求在该请求队列中的当前位置向前置换一次,直到在该请求队列中查找完所有的与该数据请求相同的标识,然后获得该数据请求在请求队列中的最终位置。根据本发明的一实施例,所述分发模块还包括:服务器查找单元,用于根据该数据请求的请求频率,以该数据请求在请求队列中的位置为起始,在请求队列中向前查找服务器的标识,其中不同性能的服务器根据服务器的标识的hash值和服务器的性能配置在请求队列中;转发单元,用于将找到的第一个服务器作为转发该数据请求的相应服务器进行该数据请求的转发。本发明通过对数据请求按照请求频率进行标记,将频繁的数据请求转发至速度和性能高的服务器或者缓存,比现有“负载均衡”技术,不仅有较高的效率和较低的成本,而且是现有业务数据需求特点的最合适的解决方案之一。


图1为根据本发明的基于频率的分发数据请求方法的流程图;图2为图1中步骤Al的一种具体实施方式
的流程图;图3为图1中的步骤A12的一种具体实施方式
的流程图;图4为根据本发明的请求队列的一种示例的示意图;图5为根据本发明的置换方式的一种示例的示意图;图6为根据本发明的服务器配置在请求队列中的一种示例的示意图;图7为根据本发明的基于频率的分发数据请求装置的框图。
具体实施例方式下面将详细描述本发明的具体实施例。应当注意,这里描述的实施例只用于举例说明,并不用于限制本发明。在介绍本发明的构思之前,先解释一下在本发明用到的术语,以便于更好地理解本发明的技术方案。本文所涉及的术语“Hash” 一般翻译做“散列”(也有直接音译为“哈希”),其含义是指将任意长度的输入(又叫做预映射,pre-1mage)通过散列算法变换成固定长度的输出,该输出就是Hash值(也即散列值)。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。Hash主要用于信息安全领域中加密算法,它把一些不同长度的信息转化成杂乱的128位的编码,这些编码值叫做Hash值。也可以说,Hash就是找到一种数据内容和数据存放地址之间的映射关系:*若结构中存在和关键字K相等的记录,则必定在f (K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表;*对不同的关键字可能得到同一散列地址,即keyl幸key2,而f (keyl)=f(key2),这种现象称冲突。具有相同函数值的关键字对该散列函数来说称作同义词。综上所述,根据散列函数H(key)和处理冲突的方法将一组关键字映像到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“像”作为记录在表中的存储位置,这种表便称为散列表,这一映象过程称为散列造表或散列,所得的存储位置称散列地址;*若对于关键字集合中的任一关键字,经散列函数映像到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均勻散列函数(Uniform Hash function),这就是使关键字经过散列函数得到一个“随机的地址”,从而减少冲突。 本发明的构思是根据数据的请求频繁度将其分发到不同的数据服务器中,也即,将频繁的数据请求能够分发至性能好的服务器,而将不频繁的数据请求分发至性能一般的服务器,从而最大化利用各服务器,避免了性能不好由于吞吐大量数据而使数据服务速度较低的问题。本发明的构思在具体实现上主要为获取请求数据在指定范围或尺度上的相对频率值,并按照该频率值选择指定的数据服务器。下面结合附图将详细描述本发明。首先,对于具体的某个数据请求,需要获得该数据请求相对其它数据请求的频繁度,即该数据请求在包含多个请求的请求队列中的请求频率,该请求频率值即为在请求队列中的位置。请求频率是基于该数据请求的标识来获得的。在数据业务交换的过程中,对于每个具体的请求一般会根据数据请求的内容为该数据请求分配唯一的请求标识,因而对于具有不同内容的数据请求具有不同的请求标识。当然也会存在为没有为数据请求分配请求标识的情况,这时候也可以通过该数据请求的内容来获得请求频率。因此,如图1所示,本发明的方法包括步骤Al:获得数据请求的标识,根据该数据请求的标识获得请求频率,其中该请求频率的值为在请求队列长度中的位置。根据本发明的一个实施例,如图2所示,步骤Al中根据数据请求的请求标识来获得请求频率的步骤包括:步骤All:根据请求标识计算该数据请求的Hash值,根据所计算出的Hash值将该数据请求配置在请求队列中。在步骤All中,请求队列优选为0_2~n环形队列,其中n为正整数,这里优选为
0-2~32范围的环形队列,如图5所示。在该环形队列的初始化中,按照对不同数据请求的数据标识所计算出的Hash值的大小对该数据请求进行初始化排列。优选地,这里根据所计算出的Hash值对各数据请求进行初始化排列的方式为平均化地配置在请求队列中,虽然在第一次初始化时,根据各个数据请求的Hash值,有的数据请求只请求一次却排在队列的前面,有的数据请求可能会频繁请求却排在队列的尾部,但是随着请求的增多,请求队列中的各数据请求会逐渐地按照请求的频繁度进行先后顺序的排列。步骤A12:修正该数据请求在该请求队列中的位置,基于该位置获得该数据请求的请求频率。由于该请求队列中排列有多个不同的数据请求,而不同的数据请求的请求频繁度也不同,因此,在该请求队列中可能存在多个具有相同标识的数据请求。根据该请求队列中数据请求的标识的出现次数,不断修正数据请求在请求队列中的位置。 根据本发明的一个实施例,如图3所示,步骤A12还具体包括以下步骤:A121:在该请求队列中查找是否还存在与该数据请求相同的标识,若存在,转到步骤A122中,否则将该数据请求初始化至该请求队列的队尾;A122:查到一次与该数据请求相同的标识,则就将该数据请求在该请求队列中的当前位置向前置换一次,直到在该请求队列中查找完所有的与该数据请求相同的标识,然后获得该数据请求在请求队列中的最终位置。很明显,在步骤A121中,如果在该请求队列中没有相同的数据请求的标识,则表明该数据请求为首次请求,其请求频率为最低,因而将该数据的首次请求初始化为请求队列的队尾。相反地,如果该请求队列中存在相同的数据请求标识,根据查找的次数不断地向前置换该数据请求的位置,存在相同的数据请求标识越多,说明该数据请求越频繁,则该数据请求在队列中的位置则越靠前。其中,这里向前置换位置的方式为与向前间隔一个位置进行置换。如图4所示,有N个数据请求在请求队列中,其中存在由前到后排列的A、B、C三个数据请求,由于在队列中再次查到标识C,就将C和A的位置进行置换。当然也可根据精确度的要求,置换的间隔位置可以为多种,只要不超出所计算出的队列的范围即可。置换后获得该数据请求在请求队列中的最终位置,可获知该数据请求在该请求队列中的请求频率,其中该数据请求在该请求队列中的位置越靠前,则该数据请求的请求频率越闻。接下来,根据获得的该数据请求的请求频率,将其分发至相应的服务器中。因此,如图1所示,本发明还包括步骤A2:根据获得该数据请求的请求频率,将该数据请求转发至相应的服务器上。其中在步骤A2中,这里所述的相应的服务器为具有与该数据请求的请求频率相适应性能的服务器,也即,高请求频率的数据请求分发至高性能的服务器,而低请求频率的数据请求分发至低性能的服务器。根据本发明的一个实施例,也可将不同性能的服务器配置在请求队列中,这样就可以直接在请求队列查找数据请求的相应的服务器。例如,根据各服务器标识的Hash值以及根据各服务器性能将各服务器配置在上述环形队列中。例如,如图6所示,低速低容量服务器C配置在环形队列的队尾,高速低容量服务器B配置在中间,而低速高容量服务器A配置在队首,并且对于配置在队列中的服务器而言,其位置距离上个服务器越长,该服务器将承受较其它服务器更多的请求。本实施例所述的配置服务器在队列中的方式不限于此,也可根据各种需求配置服务器在队列中,比如,对于速度要求比较高的数据请求,可以将高速低容量的服务器B放在队首,而低速高容量的服务器A配置在队列中间,以满足请求频繁的数据的访问速度需求。将不同性能的服务器配置在请求队列中后,针对不同的数据请求查找相应的转发服务器。根据本发明的一个实施例,所述步骤A2中还包括根据该数据请求的请求频率查找相应服务器的步骤A21,该步骤A21具体为:根据该数据请求的请求频率,以该数据请求在请求队列中的位置为起始,在请求队列中向前查找服务器的标识,其中不同性能的服务器根据服务器的标识的hash值和服务器的性能配置在请求队列中;将找到的第一个服务器作为转发该数据请求的相应服务器。因而从上述的实施例中可以看出,通过对数据请求按照请求频率进行排列,将频繁的小部分通过速度和性能高的服务器转发或者缓存,比现有的“负载均衡”技术,不仅具有较高的效率和较低的成本,而且是现有业务数据需求特点的最合适的解决方案之一。下面结合一个具体实施例,描述了将一标识为A的数据请求分发至相应的服务器的步骤流程:获得数据请求的请求标识A,计算该请求标识的Hash值;根据所计算出的Hash值,将该数据请求配置在环形队列中;查找在该环形队列中是否还有该数据请求的标识A ;如果没有查找到,则将数据请求初始化至队列最尾部;如果查找到,则将该数据请求的当前位置向前(顺时针)间隔一个位置进行置换,然后继续查找,直至查找完环形队列中存在的所有标识A ;将置换后的该数据请求的最终位置向前(顺时针)查找服务器标识;找到相应的服务器后,转发该数据请求。相应地,如图7所示,本发明还提供一种基于频率的分发数据请求的装置,所述装置包括:请求频率获取模块,用于获得数据请求的标识并根据该数据请求的标识获得请求频率,其中该请求频率的值为在请求队列长度中的位置;分发模块,用于根据所获得的该数据请求的请求频率将该数据请求发至相应的服务器上。根据本发明的一个实施例,所述请求频率获取模块还包括:位置配置单元,用于根据该数据请求的标识计算该数据请求的Hash值,按照所计算出的Hash值将该数据请求配置在请求队列中;
位置修正单元,用于修正该数据请求在该请求队列中的位置,基于该位置获得该数据请求的请求频率。根据本发明的一个实施例,所述位置修正单元包括:查找单元,用于在该请求队列中查找是否还存在与该数据请求相同的标识,若存在,则在置换单元对该数据请求进行位置置换,否则将该数据请求初始化至该请求队列的队尾;置换单元,用于查到一次与该数据请求相同的标识,则就将该数据请求在该请求队列中的当前位置向前置换一次,直到在该请求队列中查找完所有的与该数据请求相同的标识,然后获得该数据请求在请求队列中的最终位置。根据本发明的一个实施例,所述分发模块还包括:服务器查找单元,用于根据该数据请求的请求频率,以该数据请求在请求队列中的位置为起始,在请求队列中向前查找服务器的标识,其中不同性能的服务器根据服务器的标识的hash值和服务器的性能配置在请求队列中;转发单元,用于将找到的第一个服务器作为转发该数据请求的相应服务器进行该数据请求的转发。虽然已参照几个典型实施例描述了本发明,但应当理解,所用的术语是说明和示例性、而非限制性的术语。由于本发明能够以多种形式具体实施而不脱离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。
权利要求
1.一种基于频率的分发数据请求的方法,其特征在于,所述方法包括以下步骤: 步骤Al,获得数据请求的标识,根据该数据请求的标识获得请求频率,其中该请求频率的值为在请求队列长度中的位置; 步骤A2,根据所获得的该数据请求的请求频率,将该数据请求发至相应的服务器上。
2.根据权利要求1所述的方法,其特征在于,所述请求队列为0-2~n的环形队列,其中n为正整数。
3.根据权利要求1或2所述的方法,其特征在于,所述步骤Al进一步包括: All:根据该数据请求的标识计算该数据请求的Hash值,按照所计算出的Hash值将该数据请求配置在请求队列中; A12:修正该数据请求在该请求队列中的位置,基于该位置获得该数据请求的请求频率。
4.根据权利要求3所述的方法,其特征在于,所述步骤A12包括: A121:在该请求队列中查找是否还存在与该数据请求相同的标识,若存在,转到步骤A122中,否则将该数据请求初始化至该请求队列的队尾; A122:查到一次与该数据请求相同的标识,则就将该数据请求在该请求队列中的当前位置向前置换一次,直到在该请求队列中查找完所有的与该数据请求相同的标识,然后获得该数据请求在请求队列中的最终位置。
5.根据权利要求4所述的方法,其特征在于,所述步骤A13中向前置换的方式为向前间隔一个或多个位置进行互换。
6.根据权利要求2所述的方法,其特征在于,所述步骤A2中还包括根据该数据请求的请求频率查找相应服务器的步骤A21,该步骤A21具体为: 根据该数据请求的请求频率,以该数据请求在请求队列中的位置为起始,在请求队列中向前查找服务器的标识,其中不同性能的服务器根据服务器的标识的hash值和服务器的性能配置在请求队列中; 将找到的第一个服务器作为转发该数据请求的相应服务器。
7.一种基于频率的分发数据请求的装置,其特征在于,所述装置包括: 请求频率获取模块,用于获得数据请求的标识并根据该数据请求的标识获得请求频率,其中该请求频率的值为在请求队列长度中的位置; 分发模块,用于根据所获得的该数据请求的请求频率将该数据请求发至相应的服务器上。
8.根据权利要求7所述的装置,其特征在于,所述请求频率获取模块还包括: 位置配置单元,用于根据该数据请求的标识计算该数据请求的Hash值,按照所计算出的Hash值将该数据请求配置在请求队列中; 位置修正单元,用于修正该数据请求在该请求队列中的位置,基于该位置获得该数据请求的请求频率。
9.根据权利要求8所述的装置,其特征在于,所述位置修正单元包括: 查找单元,用于在该请求队列中查找是否还存在与该数据请求相同的标识,若存在,则在置换单元对该数 据请求进行位置置换,否则将该数据请求初始化至该请求队列的队尾;置换单元,用于查到一次与该数据请求相同的标识,则就将该数据请求在该请求队列中的当前位置向前置换一次,直到在该请求队列中查找完所有的与该数据请求相同的标识,然后获得该数据请求在请求队列中的最终位置。
10.根据权利要求7所述的装置,其特征在于,所述分发模块还包括: 服务器查找单元,用于根据该数据请求的请求频率,以该数据请求在请求队列中的位置为起始,在请求队列中向前查找服务器的标识,其中不同性能的服务器根据服务器的标识的hash值和服务器的性能配置在请求队列中; 转发单元,用于将找到的第一个服务器作为转发该数据请求的相应服务器进行该数据请求的转发 。
全文摘要
一种基于频率的分发数据请求方法及装置。本发明公开了一种基于频率的分发数据请求的方法,包括以下步骤步骤A1,获得数据请求的标识,根据该数据请求的标识获得请求频率,其中该请求频率的值为在请求队列长度中的位置;步骤A2,根据所获得的该数据请求的请求频率,将该数据请求发至相应的服务器上。本发明能够提升服务器的数据访问速度。
文档编号H04L29/08GK103200208SQ20121000402
公开日2013年7月10日 申请日期2012年1月6日 优先权日2012年1月6日
发明者张楠 申请人:湖南智源信息网络技术开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1