本申请涉及通信技术领域,尤其涉及一种访问控制方法、装置以及系统。
背景技术:
向终端提供在线业务服务(如信息查询、游戏等等业务服务)的业务系统集群一般由多个业务服务器以及存储集群组成,其中,存储集群包括至少一个数据库。其中,该多个业务服务器协同向外提供业务服务,在业务服务器接收到访问请求之后,需要从存储集群的数据库中查询该访问请求所请求访问的相关数据,并由业务服务器查询到的相关数据返回给发送该访问请求的终端。
然而,如果短时间内该业务系统集群中出现大量并发的业务访问,就会使得业务服务器向存储集群的数据库发送的数据查询请求的总数量显著增多,导致数据库所需处理的数据查询业务的压力过大,从而出现无法及时向业务服务器反馈查询数据的情况,进而导致业务服务集群处理业务访问的耗时较长,甚至出现由于业务访问超时而导致业务访问失败的情况。
技术实现要素:
有鉴于此,本申请提供了一种访问控制方法、装置以及系统,以有效降低存储集群中数据库的数据查询压力,并提高业务服务集群处理业务访问的速度,减少业务访问超时以及业务访问失败的情况,提高业务服务集群的业务访问性能。
为实现上述目的,一方面,本申请提供了一种访问控制系统,包括:
请求转发设备,至少一台业务服务器以及存储集群,所述存储集群包括至少一台数据库;
其中,所述请求转发设备,用于获取终端发送的访问请求,所述访问请求用于请求数据访问,且所述访问请求携带用于标识所述访问请求所请求访问的业务数据的访问参数;依据预设的访问参数与业务服务器的映射关系,确定与所述访问参数对应的业务服务器,其中,每种访问参数仅与一台业务服务器存在映射关系;并将所述访问请求转发给所述访问参数对应的业务服务器;
所述业务服务器,用于在接收到所述访问请求之后,检测内存中是否存储有所述访问请求所请求访问的业务数据;在所述内存中存储有所述业务数据时,从所述内存中读取所述业务数据;在所述内存中未存储有所述业务数据时,根据所述访问请求,从所述存储集群的数据库中读取所述业务数据,并在所述内存中存储所述业务数据;将从内存中或者所述存储集群的数据库中读取到的所述业务数据返回给所述终端。
可选的,所述请求转发设备在依据预设的访问参数与业务服务器的映射关系,确定与所述访问参数对应的业务服务器时,具体用于:利用一致性哈希算法,计算所述访问请求携带的所述访问参数的哈希值;依据预设的哈希值区间与业务服务器之间的映射关系,确定所述访问参数的哈希值所属的目标哈希值区间对应的业务服务器。
可选的,所述请求转发设备为负载均衡器;
所述负载均衡设备在获取终端发送的访问请求时,具体用于,接收终端发送的访问请求。
可选的,所述访问控制系统还包括:负载均衡器,用于接收终端发送的访问请求;
所述请求转发设备在获取终端发送的访问请求时,具体用于,接收所述负载均衡器转发的所述访问请求。
可选的,所述请求转发设备还用于:
当检测到所述至少一台业务服务器中存在出现故障的故障业务服务器时,确定与所述故障业务服务器具有映射关系的至少一个故障哈希值区间;从未出现故障的业务服务器中选取出一台目标业务服务器,建立所述至少一个故障哈希值区间与所述目标业务服务器之间的映射关系,并删除所述故障业务服务器与所述至少一个故障哈希值区间之间的映射关系。
可选的,所述请求转发设备在所述从未出现故障的业务服务器中选取出一台目标业务服务器时,具体用于,当所述访问控制系统中出现新增的且尚未关联有哈希值区间的新增业务服务器时,将所述新增业务服务器作为选取出的目标业务服务器。
另一方面,本申请还提供了一种访问控制方法,包括:
获取终端发送的访问请求,所述访问请求用于请求数据访问,且所述访问请求携带用于标识所述访问请求所请求访问的业务数据的访问参数;
依据预设的访问参数与业务服务器的映射关系,确定与所述访问参数对应的业务服务器,其中,每种访问参数仅与一台业务服务器存在映射关系;
将所述访问请求转发给所述访问参数对应的业务服务器,以便于所述业务服务器在所述业务服务器的内存中存储有所述业务数据时,从所述内存中读取所述业务数据;并在所述内存中未存储有所述业务数据时,从数据库中读取所述业务数据,并在所述内存中存储所述业务数据。
可选的,所述获取终端发送的访问请求,包括:
接收终端发送的访问请求;
或者,接收负载均衡器转发的所述访问请求,其中,所述访问请求由所述终端发送给所述负载均衡器。
可选的,所述依据预设的访问参数与业务服务器的映射关系,确定与所述访问参数对应的业务服务器,包括:
利用一致性哈希算法,计算所述访问请求携带的所述访问参数的哈希值;
依据预设的哈希值区间与业务服务器之间的映射关系,确定所述访问参数的哈希值所属的目标哈希值区间对应的业务服务器。
另一方面,本申请还提供了一种访问控制装置,包括:
请求获取单元,用于获取终端发送的访问请求,所述访问请求用于请求数据访问,且所述访问请求携带用于标识所述访问请求所请求访问的业务数据的访问参数;
服务器确定单元,用于依据预设的访问参数与业务服务器的映射关系,确定与所述访问参数对应的业务服务器,其中,每种访问参数仅与一台业务服务器存在映射关系;
请求定向转发单元,用于将所述访问请求转发给所述访问参数对应的业务服务器,以便于所述业务服务器在所述业务服务器的内存中存储有所述业务数据时,从所述内存中读取所述业务数据;并在所述业务服务器的内存中未存储有所述业务数据时,从数据库中读取所述业务数据,在所述内存中存储所述业务数据。
经由上述的技术方案可知,业务服务器的内存中可以缓存该业务服务器从数据库中读取到的业务数据,这样,在业务服务器接收到访问请求之后,如果业务服务器的内存中存储有该访问请求所请求读取的业务数据,则可以直接从内存中读取该业务数据,从而无需再从数据库中读取该业务数据,既降低了对数据库的数据读取压力,又可以提高业务数据的读取效率,从而提高了业务服务集群的业务处理效率。
同时,请求转发设备获取到终端发送的访问请求之后,依据预置的访问参数与业务服务器的映射关系,将该访问请求转发给与该访问请求携带的访问参数对应的业务服务器,这样,携带有相同访问参数的访问请求均会被定向到相同的业务服务器,而访问参数用于标识访问请求所请求访问的业务数据,也就是说访问相同业务数据的访问请求被定向到相同的业务服务器,而由于每种访问参数仅与一台业务服务器存在映射关系,因此,不同业务服务器所负责处理的访问请求所请求访问的业务数据并不相同,从而避免了不同的业务服务器的内存中存储相同业务数据的情况,避免了业务服务集群中不同业务服务器之间出现数据存储冗余,减少了业务服务器所需存储的数据量;而且,也避免了不同业务服务器多次从数据库中读取相同的业务数据,而导致数据库的数据查询业务过大的情况,有利于降低数据库的数据查询压力。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本申请的一种业务服务集群的组成架构示意图;
图2示出了本申请的一种业务服务器的组成结构示意图;
图3示出了本申请一种访问控制方法一个实施例的流程示意图;
图4示出了本申请一种访问控制方法又一个实施例的流程示意图;
图5示出了本申请一种访问控制装置一个实施例的组成结构示意图。
具体实施方式
本申请的方案,可以降低业务服务集群中的业务服务器对于存储集群中的数据库的数据查询以及读取等数据访问压力,并提高业务服务集群处理用于请求业务访问的访问请求的处理效率,提高业务访问的性能。
为了便于理解,先对本申请实施例的业务服务集群的组成架构进行介绍。如图1,其示出了业务服务集群的一种组成架构的示意图。
图1所示的业务服务集群可以包括:
负载均衡器101;
负载均衡器101相连的至少一个业务服务器102;
与业务服务器相连的存储集群,该存储集群包括至少一个数据库103。
其中,负载均衡器与业务服务器之间,以及业务服务器与数据库之间均可以通过无线网络、有线网络等多种方式中的一种实现相连。
需要说明的是,该数据库可以普通的数据库,也可以为内存数据库,还可以为其他任意形式的数据库,在此不加以限制。
其中,终端104可以向业务服务集群发送用于请求业务访问的访问请求。可以理解的是,根据业务服务集群所提供的业务不同,访问请求所请求的业务访问也会有所差异,如,以个人信息查询业务为例,终端发送的访问请求可以为用于查询某个用户的用户信息的查询请求。当然,本申请对于访问请求所请求访问的业务类型不进行限制。
相应的,负载均衡器101,用于在接收到访问请求之后,将该访问请求转发给业务服务集群中的业务服务器102。如,根据负载均衡原则,从至少一个业务服务器中选取出当前需要处理该访问请求的业务服务器,并将访问请求转发给选取出的业务服务器。
该业务服务器102,用于根据访问请求向数据库102发送数据查询请求;接收数据库返回的业务数据,并将数据库返回的业务数据发送给终端104。其中,本申请实施例中将该访问请求所请求访问的数据称为业务数据,但是可以理解的是,该业务数据并不对数据的内容以及类型做限制。
在本申请实施例中,为了减少数据库的数据查询压力,在业务服务器接收到数据库返回的业务数据之后,还可以将该业务数据与该访问请求相对应的存储到该业务服务器的内存中。如,将该数据与该访问请求作为关联数据一并存储到该业务服务器的内存中。相应的,在当前时刻之后,如果业务服务器再接收到该访问请求时,则可以直接从该业务服务器的内存中取出该业务数据,并将从内存取出的业务数据,发送给发出该访问请求的终端,从而减少了业务服务器向数据库发送数据查询请求的次数,减少了由于数据库的数据查询压力过大而导致数据反馈延迟的情况,进而有利于提高业务服务集群处理访问请求的处理效率。
同时,由于业务服务器从自身的内存中读取该访问请求所需的业务数据的速度较快,有利于快速响应终端的业务访问请求,从而提高了业务服务集群的业务处理效率。
进一步的,考虑到如果负载均衡器每次接收到访问请求之后,都随机将访问请求转发给一个业务服务器,就可能会导致不同时刻接收到的相同访问请求会被转发到不同的业务服务器,这样,就会导致多台甚至每一台业务服务器的内存中均需要保存该相同访问请求所需的业务数据,从而导致业务服务集群中多台业务服务器之间出现数据冗余存储,也导致业务服务器的内存中存储的数据量过大。
为了降低业务服务器的内存中所存储的数据量,降低业务服务集群中不同业务服务器之间的数据存储冗余,负载均衡器可以建立用于请求不同业务数据的访问参数与业务服务器之间的对应关系,其中,访问参数可以表征访问请求所请求访问的业务数据,携带有相同访问参数的访问请求所请求访问的业务数据相同。相应的,负载均衡器在接收到访问请求之后,根据该访问请求所携带的访问参数,确定与该访问参数相匹配的目标业务服务器,并将该访问请求转换给该目标业务服务器。
可见,通过该种方式,请求访问相同业务数据的访问请求均可以被定向到同一个业务服务器,从而避免了不同的业务服务器的内存中存储相同业务数据的情况,避免了业务服务集群中不同业务服务器之间存储数据出现冗余,实现了将存储集群中数据库内所存储的数据分散到多个业务服务器进行缓存(即,实现了存储集群中数据的分片存储),减少了业务服务器所需存储的数据量。
同时,由于请求访问相同业务数据的访问请求均可以被定向到同一个业务服务器,因此,只要一台业务服务器从数据库中查询到该业务数据之后,其他业务服务器则不会再次从数据库中查询该业务数据,从而进一步减少了对数据库的数据查询的业务量,减少了数据库的数据查询压力,进而在业务服务器需要从数据库中查询数据时,可以提高数据查询效率,使得业务服务器可以快速响应终端的访问请求。
其中,建立用于请求不同业务数据的访问参数与业务服务器之间的对应关系的具体实现方式可以有多种,具体可以参见后续图3以及图4实施例中的相关介绍。
需要说明的是,由负载均衡器将访问相同业务数据的访问请求定向到一个业务服务器仅仅是一种实现方式。在实际应用中,负载均衡器在接收到访问请求之后,也可以将访问请求发送给指定的转发服务器,该转发服务器可以为独立于负载均衡器以及业务服务器之外的服务器,在该请求转发服务器根据预置的访问参数与业务服务器的对应关系,并由该转发服务器基于该对应关系,实现将访问相同业务数据的相同该访问请求转发给相同的业务服务器,,具体可以参见后续图4实施例的相关介绍。
当然,负载均衡器以及转发服务器实现将访问相同业务数据的访问请求定向到相同的业务服务器可以运行路由监控程序实现。当将该路由监控程序安装并运行在负载均衡器中,则可以由该负载均衡器实现将访问相同业务数据的访问请求定向到相同的业务服务器,当将该路由监控程序安装并运行在该转发服务器中,则可以由该转发服务器实现将访问相同业务数据的访问请求定向到相同的业务服务器;当将该路由监控程序安装并运行在业务服务器前端的其他用于实现请求转发的请求转发设备中,则可以该请求转发设备将访问相同业务数据的访问请求定向到相同的业务服务器。
在本申请实施例中,该业务服务器可以与现有的业务服务器集群中的业务服务器相似。如图2,其示出了本申请实施例的业务服务器的一种组成结构示意图。在图2中,该业务服务器200可以包括:处理器201、存储器202、通信接口203和通信总线204。
处理器201、存储器202、通信接口203均通过通信总线204完成相互间的通信。
通信接口203可以为通信模块的接口,用于接收访问请求,该访问请求可以是由负载均衡器转发的。
在本申请实施例中,该处理器201,可以为中央处理器(centralprocessingunit,cpu),特定应用集成电路(application-specificintegratedcircuit,asic),数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件等。
该处理器201可以调用存储器202中存储的程序,具体的,可以处理器可以执行以下图3以及图4中业务服务器侧所执行的操作。
存储器202中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令,在本申请实施例中,该存储器中至少存储有用于处理器执行访问控制方法所需的程序。
当然,图2所示的业务服务器的结构并不构成对本申请实施例中业务服务器的限定,在实际应用中业务服务器可以包括比图2所示的更多或更少的部件,或者组合某些部件。
在本申请实施例中,负载均衡器的组成形式与图2中业务服务器的组成结构相似,具体组成结构可以参见图2所示。
下面结合本申请的以上共性,对本申请实施例的访问控制方法进行详细介绍。
参见图3,其示出了本申请一种访问控制方法一个实施例的流程示意图,本实施例的方法可以包括:
s301,负载均衡器接收终端向业务服务集群发送的访问请求。
其中,所述访问请求用于请求数据访问。
该访问请求携带有用于标识请求访问的业务数据的访问参数。基于该访问请求中的访问参数可以定位该访问请求所请求访问的业务数据。如,仍以个人信息查询业务为例,该访问请求可以携带有待查询个人信息的用户姓名,则用户姓名用于表征请求访问的个人信息的访问参数,例如,访问请求为查询“张三”的个人信息,则“张三”可以为访问参数。当然,该访问参数还可以包括表征访问类型的参数,如,查询“张三”个人信息的访问请求所对应的业务访问类型为个人信息查询业务。
可以理解的是,该访问请求中除了用于表征所请求查询的业务数据的访问参数之外,还可以携带有发送该访问请求的发送方的标识,业务服务集群的网络地址,终端的ip地址等等信息,在此不加以限制。
s302,负载均衡器利用一致性哈希算法,计算该访问请求中的访问参数的哈希值。
其中,利用一致性哈希算法计算该访问参数的哈希值的过程,与目前利用一致性哈希算法计算数据的哈希值的过程相似,在此不再赘述。
需要说明的是,该步骤仅仅是以利用一致性哈希算法来计算该访问参数的哈希值为例进行介绍,但是可以理解的是,通过其他哈希算法来计算该访问参数的哈希值也同样适用于本实施例。
s303,负载均衡器依据预设的哈希值区间与业务服务器之间的映射关系,确定该访问参数的哈希值所属的目标哈希值区间对应的业务服务器。
其中,哈希值区间包括至少一个哈希值,如,哈希值区间可以为哈希值从1到10的区间。其中,每个哈希值区间与唯一的一个业务服务器具有映射关系,基于哈希值区间与业务服务器的映射关系,可以将属于同一个哈希值区间内的哈希值映射到同一个业务服务器。
为了便于区分,将该访问请求的访问参数对应的哈希值所属的哈希值区间称为目标哈希值区间。
可以理解的是,当访问请求中访问参数相同时,采用相同的哈希算法,计算出的该访问请求中的访问参数对应的哈希值也相同,这样,根据哈希值区间与业务服务器的映射关系,可以将具有相同访问参数的访问请求映射到同一个业务服务器,从而实现了将访问相同业务数据的访问请求定向到相同的业务服务器,这样,对于相同的业务数据,后续只需要在一个业务服务器的内存中存储该业务数据,从而避免业务服务集群中不同业务服务器的数据存储冗余,可以减少业务服务器的数据存储量。同时,也可以避免不同的业务服务器多次向数据库请求相同的业务数据,也可以减少数据库的数据处理量,降低数据处理压力,进而有利于数据库及时响应业务服务器的数据查询请求。
可以理解的是,在采用一致性哈希算法计算访问参数的哈希值的情况下,该哈希值区间与业务服务器之间的映射关系也是基于一致性哈希算法构建出的,从而使得哈希值区间映射到表征多个业务服务器的哈希空间中,构成一致性哈希环。
在一种实现方式中,当负载均衡器检测到业务服务集群中存在业务服务器故障时,可以从未出现故障的业务服务器中选取出一个目标业务服务器,并确定与该出现故障的故障业务服务器具有映射关系的故障哈希值区间,建立该故障哈希值区间与选取出的目标业务服务器之间的映射关系,并删除该故障业务服务器与该故障哈希值区间之间的映射关系,从而保证了访问请求可以稳定的,唯一定向到一个业务服务器。
特别的,当所述有任务服务集群中出现新增的业务服务器,且尚未为该新增的业务服务器配置关联的哈希值区间时,则可以将该新增的业务服务器作为选取出的目标业务服务器。
其中,负载均衡器检测业务服务器出现故障的方式可以有多种,如,负载均衡器检测到同一个业务服务器处理访问请求失败的次数超过预设预置,则确定该业务服务器属于出现故障的故障业务服务器。
为了便于区分,本申请实施例将出现故障的业务服务器称为故障业务服务器,并将与该故障业务服务器具有映射关系的哈希值区间称为故障哈希值区间。
可以理解的是,在业务服务器集群中不存在出现故障的业务服务器的情况下,如果在业务服务集群中新增了业务服务器之后,该负载均衡器同样可以调整哈希值区间所包含的哈希值,并重新建立哈希值区间与不同业务服务器之间的映射关系,也使得每个业务服务器均与至少一个哈希值区间建立有映射关系,且每一个哈希值区间仅仅与一个业务服务器具有映射关系。
需要说明的是,步骤s302和s303仅仅是以建立访问参数的哈希值与业务服务器之间的映射关系为例,来介绍将访问请求固定的定向到一个业务服务器的过程,但是可以理解的是,建立用于请求不同业务数据的访问参数与业务服务器之间的映射关系的方式可以多种,只要保证一种访问参数仅与一台业务服务器存在映射关系即可,对于其他实现方式也同样适用于本申请,在此不加以限制。
s304,负载均衡器将该访问请求发送给该目标哈希值区间对应的业务服务器。
需要说明的是,在本申请实施例,为了使得不同业务服务器之间可以不重复存储相同的业务数据,则需要负载均衡器计算访问请求中访问参数的哈希值,并基于哈希值确定需要将访问请求转发给哪台业务服务器。但是可以理解的是,在不需要考虑不同业务服务器之间的数据冗余的情况下,负载均衡器也可以不执行以上步骤s302和s303,而直接随机或者依据不同业务服务器处理访问请求的数量,从业务服务集群中选取一个业务服务器来处理该访问请求。
s305,业务服务器查询该业务服务器的内存中是否存储有该访问请求所请求访问的业务数据,如果是,则执行步骤s310;如果否,则执行步骤s306。
其中,如果业务服务器的内存中存储有该访问请求所请求访问的业务数据,则说明该业务服务器在当前时刻之前处理过请求该业务数据的访问请求,并从数据库获取到该业务数据,在该种情况下,业务服务器无需再从数据库获取该业务数据,而可以直接从该业务服务器的内存中读取出相应的业务数据。反之,如果业务服务器的内存中未存储该业务数据,则说明业务服务器在当前时刻之前尚未处理过请求该业务数据的访问请求,从而需要从数据库查询并读取该业务数据。
其中,业务服务器从内存中查询是否存储有该访问请求所请求访问的业务数据的方式可以有多种,如,可以是根据该访问请求所携带的访问参数,检测内存中是否存在与该访问参数相匹配的业务数据。当然,业务服务器从内存中查询是否存在该访问请求所请求访问的业务数据的具体过程可以与目前业务服务器从数据库中查询该访问请求所请求的业务数据的过程相似,至于具体采用哪种方式,本申请不作限制。
s306,业务服务器根据该访问请求向存储集群的数据库发送数据查询请求。
其中,该数据查询请求用于请求读取该访问请求所请求读取的业务数据。
如,业务服务器可以提取该访问请求中的访问参数,并将发送携带有该访问参数的数据查询请求,以指示数据库根据该访问参数进行数据查询。
又如,该数据查询请求可以为一个读请求,读请求携带有待读取的数据标识,其中,该数据标识可以为该访问参数或者根据该访问参数生成的标识。
当然,业务服务器还可以通过其他方式生成数据查询请求,在此不加以限制。
s307,数据库响应于该数据查询请求,读取该数据查询请求所请求查询的业务数据,并将读取到的业务数据返回给业务服务器。
其中,数据库响应于数据查询请求进行数据查询以及读取的过程可以有多种实现方式,本申请对数据库查询该业务数据的具体过程不作限制。
其中,步骤s306以及步骤s307为业务服务器根据该访问请求从数据库中读取该访问请求所请求访问的业务数据的一种实现方式,在实际应用中,业务服务器接收到该访问请求之后,基于该访问请求从数据库中查询该业务数据的方式可以有其他可能情况,对于其他情况同样适用于本申请,在此不加以限制。
s308,业务服务器将该业务数据存储到内存中。
可选的,为了提高数据查询的便捷性,可以为:将业务数据与该访问请求的访问请求相关联的存储到内存中。如,在业务服务器将该业务数据存储到内存的同时,还可以存储该业务数据与该访问请求的对应关系,以便后续可以便捷查询出该访问请求所请求访问的该业务数据。如,在一种方式中,业务服务器在将该业务数据存储到内存的同时,可以存储该业务数据与该访问请求中的访问参数的对应关系,这样,后续如果接收到携带该访问参数的访问请求,则可以直接从内存中读取该业务数据。
s309,将该业务数据发送给终端。
需要说明的是,该步骤s308和步骤s309的顺序并不限于图3所示,在实际应用中,业务服务器也可以是在将该业务数据存储到内存的同时,将该业务数据发送给终端。
s310,业务服务器从该业务服务器的内存中读取出该业务数据。
s311,业务服务器将从内存中读取出的业务数据发送给终端。
在内存中存储有该访问请求所请求访问的业务数据的情况下,业务服务器可以直接从自身的内存中读取出该业务数据,从而大大访问请求的处理效率,有利于快速响应用户的访问请求,减少了访问请求的处理延迟。
可以理解的是,图3实施例是以负载均衡器选取业务服务器来处理访问请求为例进行说明。但是可以理解的是,负载均衡器所执行的步骤s302和s303也可以由指定的一台服务器来完成,为了与负载均衡器与业务服务器进行区分,该指定服务器可以称为转发服务器。如,参见图4,其示出了本申请一种访问控制方法又一个实施例的流程示意图,本实施例的方法可以包括:
s401,负载均衡器接收终端向业务服务集群发送的访问请求。
s402,负载均衡器将该访问请求转发给指定的转发服务器。
s403,该转发服务器利用一致性哈希算法,计算该访问请求中的访问参数的哈希值。
其中,该转发服务器不同于该服务均衡器以及业务服务器。
s404,该转发服务器依据预设的哈希值区间与业务服务器之间的映射关系,确定该访问参数的哈希值所属的目标哈希值区间对应的业务服务器。
其中,转发服务器计算该访问参数的哈希值,以及确定该哈希值所述的目标哈希值区间对应的业务服务器的过程与前面图3实施例中负载均衡器计算该哈希值以及确定该目标哈希值区间对应的业务服务器的过程相似,具体可以参见前面实施例的相关介绍,在此不再赘述。
可选的,当该转发服务器检测到业务服务集群中存在业务服务器故障时,可以从未出现故障的业务服务器中选取出一个业务服务器,并确定与该出现故障的故障业务服务器具有映射关系的故障哈希值区间,建立该故障哈希值区间与选取出的业务服务器之间的映射关系,并删除该故障业务服务器与该故障哈希值区间之间的映射关系。
需要说明的是,步骤s402和s403仅仅是以建立访问参数的哈希值与业务服务器之间的映射关系为例进行介绍,但是可以理解的是,建立用于请求不同业务数据的访问参数与业务服务器之间的映射关系的方式可以有多种,对于其他实现方式也同样适用于本申请,在此不加以限制。
s405,转发服务器将访问请求发送确定出的该业务服务器。
s406,业务服务器查询该业务服务器的内存中是否存储有该访问请求所请求访问的业务数据,如果是,则执行步骤s411;如果否,则执行步骤s407。
s407,业务服务器根据该访问请求,向存储集群的数据库发送数据查询请求。
其中,该数据查询请求用于请求读取该访问请求所请求读取的业务数据。
s408,数据库响应于该数据查询请求,读取该数据查询请求所请求查询的业务数据,并将读取到的业务数据返回给业务服务器。
s409,业务服务器将该业务数据存储到内存中。
可选的,在第二业务服务器将该业务数据存储到内存的同时,还可以存储该业务数据与该访问请求的对应关系。如,在一种方式中,第二业务服务器在将该业务数据存储到内存的同时,可以存储该业务数据与该访问请求中的访问参数的对应关系。
s410,业务服务器将数据库返回的业务数据发送给终端。
s411,业务服务器从该第二业务服务器的内存中读取出该业务数据。
s412,业务服务器将从内存中读取出的业务数据发送给终端。
其中,该步骤s406至412的实现过程可以参见前面实施例的相关介绍,在此不再赘述。
需要说明的是,在本申请实施例中可以将用于实现将访问相同业务数据的访问请求定向到同一台业务服务器的设备称为请求转发设备,如,在图3实施例中,该请求转发设备为负载均衡器;而在图4的实施例中,该请求转发设备为该指定的转发服务器。
下面对本发明实施例提供的一种访问控制装置进行介绍。
如图5,其示出了本申请一种访问控制装置一个实施例的组成结构示意图,本实施例的装置可以包括:
请求获取单元501,用于获取终端发送的访问请求,所述访问请求用于请求数据访问,且所述访问请求携带用于标识所述访问请求所请求访问的业务数据的访问参数;
服务器确定单元502,用于依据预设的访问参数与业务服务器的映射关系,确定与所述访问参数对应的业务服务器,其中,每种访问参数仅与一台业务服务器存在映射关系;
请求定向转发单元503,用于将所述访问请求转发给所述访问参数对应的业务服务器,以便于所述业务服务器在所述业务服务器的内存中存储有所述业务数据时,从所述内存中读取所述业务数据;并在所述业务服务器的内存中未存储有所述业务数据时,从数据库中读取所述业务数据,在所述内存中存储所述业务数据。
在一种实现方式中,所述请求获取单元,包括:
请求接收单元,用于接收终端发送的访问请求;
在又一种实现方式中,所述请求获取单元包括:
转发获取单元,用于接收负载均衡器转发的所述访问请求,其中,所述访问请求由所述终端发送给所述负载均衡器。
在一种可能的实现方式中,所述服务器确定单元,包括:
哈希值计算单元,用于利用一致性哈希算法,计算所述访问请求携带的所述访问参数的哈希值;
服务器确定子单元,用于依据预设的哈希值区间与业务服务器之间的映射关系,确定所述访问参数的哈希值所属的目标哈希值区间对应的业务服务器。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。