CN109729108B - 一种防止缓存击穿的方法、相关服务器及*** - Google Patents
一种防止缓存击穿的方法、相关服务器及*** Download PDFInfo
- Publication number
- CN109729108B CN109729108B CN201711024741.3A CN201711024741A CN109729108B CN 109729108 B CN109729108 B CN 109729108B CN 201711024741 A CN201711024741 A CN 201711024741A CN 109729108 B CN109729108 B CN 109729108B
- Authority
- CN
- China
- Prior art keywords
- cache
- cache server
- keyword
- server
- keywords
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种防止缓存击穿的方法、相关服务器以及***,通过监控服务器监控缓存服务器集群中的缓存服务器的访问流量参数,该访问流量参数能够反应缓存服务器的负载情况,监控服务器动态地将负载较大的缓存服务器中关键字对应的值迁移到其他缓存服务器中,从而最大程度利用整个缓存服务器集群的整体负载能力,以避免在使用缓存时由于单台缓存服务器的瞬间负载较大导致引发缓存击穿的问题。
Description
技术领域
本申请涉及数据缓存技术领域,特别涉及一种防止缓存击穿的方法、相关服务器及***。
背景技术
缓存是网站服务端经常用到的一种技术,在读多写少的业务场景中,通过使用缓存可以有效地支撑高并发地访问量,对后端地数据库等数据源做到很好的保护。当网站使用缓存时,通常都是先检查缓存中是否存在数据,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果。目前市面上有很多缓存产品,比如Redis、Memcached等,不论使用哪种缓存产品,基本都会遇到缓存击穿的问题,因此,如何有效地防止出现缓存击穿是必须要解决的难题。
发明内容
为了解决使用缓存时容易出现缓存击穿,大量请求流向数据库,导致数据库雪崩的问题,本申请实施例提供了一种防止缓存击穿的方法、应用服务器、监控服务器以及***,通过监控服务器监控缓存服务器集群中的缓存服务器的访问流量参数,该访问流量参数能够反应缓存服务器的负载情况,动态地将负载较大的缓存服务器中关键字对应的值迁移到其他缓存服务器中,从而最大程度利用整个缓存服务器集群的整体负载能力,避免在使用缓存时由于单台缓存服务器的瞬间负载较大导致引发缓存击穿的问题。
在本申请第一方面提供了一种防止缓存击穿的方法,该方法应用于监控服务器中,包括:
监控缓存服务器集群中的缓存服务器对应的访问流量参数,所述访问流量参数包括每秒查询率和/或每秒网络传输流量;
确定所述访问流量参数超过对应的预设阈值的第一缓存服务器;
从所述第一缓存服务器中选择至少一个关键字作为待迁移关键字;
对所述待迁移关键字进行映射,按照映射后的关键字将所述待迁移关键字对应的值从所述第一缓存服务器中迁移至所述缓存服务器集群中的第二缓存服务器。
在本申请第二方面提供了一种监控服务器,包括:
监控模块,用于监控缓存服务器集群中的缓存服务器对应的访问流量参数,所述访问流量参数包括每秒查询率和/或每秒网络传输流量;
确定模块,用于确定所述访问流量参数超过对应的预设阈值的第一缓存服务器;
选择模块,用于从所述第一缓存服务器中选择至少一个关键字作为待迁移关键字;
迁移模块,用于对所述待迁移关键字进行映射,按照映射后的关键字将所述待迁移关键字对应的值从所述第一缓存服务器中迁移至所述缓存服务器集群中的第二缓存服务器。
在本申请第三方面提供了一种防止缓存击穿的方法,应用于应用服务器中,该方法包括:
接收数据请求,确定与所述数据请求相关的关键字;
查看关键字映射关系表中是否存在与所述关键字对应的映射后的关键字;所述关键字映射关系表是监控服务器推送的,用于表征被迁移的关键字与映射后的关键字之间的映射关系;
若存在,根据所述映射后的关键字访问本地缓存,若本地缓存中不存在所述映射后的关键字对应的值,则根据所述映射后的关键字访问缓存服务器集群中的缓存服务器,将访问到的值反馈给客户端。
在本申请第四方面提供了一种应用服务器,包括:
确定模块,用于接收数据请求,确定与所述数据请求相关的关键字;
查看模块,用于查看关键字映射关系表中是否存在与所述关键字对应的映射后的关键字;所述关键字映射关系表是监控服务器推送的,用于表征被迁移的关键字与映射后的关键字之间的映射关系;若存在,触发访问模块;
访问模块,用于根据所述映射后的关键字访问本地缓存,若本地缓存中不存在所述映射后的关键字对应的值,则根据所述映射后的关键字访问缓存服务器集群中的缓存服务器,将访问到的值反馈给客户端。
在本申请第五方面提供了一种防止缓存击穿的***,该***包括:
本申请第二方面提供的监控服务器、本申请第四方面提供的应用服务器和缓存服务器集群;
其中,所述缓存服务器集群中的缓存服务器,用于采用键值对的结构存储数据。
在本申请第六方面提供了一种监控服务器,包括:
处理器、存储器、网络接口和总线***;
所述总线***,用于将所述监控服务器的各个硬件组件耦合在一起;
所述网络接口,用于实现所述监控服务器与至少一个其它服务器之间的通信连接;
所述存储器,用于存储程序指令;
所述处理器,用于读取所述存储器中存储的指令和/或数据,执行以下操作:
监控缓存服务器集群中的缓存服务器对应的访问流量参数,所述访问流量参数包括每秒查询率和/或每秒网络传输流量;
确定所述访问流量参数超过对应的预设阈值的第一缓存服务器;
从所述第一缓存服务器中选择至少一个关键字作为待迁移关键字;
对所述待迁移关键字进行映射,按照映射后的关键字将所述待迁移关键字对应的值从所述第一缓存服务器中迁移至所述缓存服务器集群中的第二缓存服务器。
在本申请第七方面提供了一种应用服务器,包括:
处理器、存储器、网络接口和总线***;
所述总线***,用于将所述应用服务器的各个硬件组件耦合在一起;
所述网络接口,用于实现所述应用服务器与至少一个其它服务器之间的通信连接;
所述存储器,用于存储程序指令;
所述处理器,用于读取所述存储器中存储的指令和/或数据,执行以下操作:
接收数据请求,确定与所述数据请求相关的关键字;
查看关键字映射关系表中是否存在与所述关键字对应的映射后的关键字;所述关键字映射关系表是监控服务器推送的,用于表征被迁移的关键字与映射后的关键字之间的映射关系;
若存在,根据所述映射后的关键字访问本地缓存,若本地缓存中不存在所述映射后的关键字对应的值,则根据所述映射后的关键字访问缓存服务器集群中的缓存服务器,将访问到的值反馈给客户端。
与现有技术相比,本申请具有以下优点:
本申请利用监控服务器监控整个缓存服务器集群中的每台缓存服务器对应的访问流量参数,该访问流量参数能够反映缓存服务器的实际负载情况;确定所述访问流量参数超过对应的预设阈值的第一缓存服务器,从第一缓存服务器中选择至少一个关键字作为待迁移关键字;即,本申请根据访问流量参数选择出负载较高的缓存服务器,针对负载较高的缓存服务器选择出一些关键字,将这些关键字对应的值迁移出去,以达到将负载较高的缓存服务器的访问压力分散到负载较低的缓存服务器的目的;接着,对待迁移关键字进行映射,按照映射后的关键字将待迁移关键字对应的值从第一缓存服务器中迁移至缓存服务器集群中的第二缓存服务器。本申请通过关键字映射方式,将负载较高的缓存服务器中的部分关键字对应的值迁移到负载较低的缓存服务器中,从而最大程度利用整个缓存服务器集群的整体负载能力,避免在使用缓存时由于单台缓存服务器的瞬间负载较大导致引发缓存击穿的问题。
当然,实施本申请提出的任一方法并不一定需要同时达到以上所有优点。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请在实际应用中的场景示例图;
图2是本申请实施例提供的一种防止缓存击穿的***的结构图;
图3是本申请实施例提供的一种防止缓存击穿的方法的流程图;
图4是本申请实施例提供的另一种防止缓存击穿的方法的流程图;
图5是本申请实施例提供的一种监控服务器的结构图;
图6是本申请实施例提供的一种应用服务器的结构图;
图7是本申请实施例提供的一种监控服务器的硬件结构图;
图8是本申请实施例提供的一种应用服务器的硬件结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解本申请提供的技术方案,下面先对本申请技术方案的研究背景进行简单说明。
发明人在研究中发现分布式缓存在网络服务端应用时,常常会遇到缓存击穿,导致大量请求流入数据库(DB),造成数据库雪崩的现象。尤其是在电商网站中使用分布式缓存很容易出现缓存击穿,例如,在电商网站中常常发布产品促销活动,以吸引用户购买。产品促销活动往往有促销活动时间,因此,大量用户会在促销活动开始的同一时间点通过手机APP登陆活动页面,则该活动页面的访问流量在这一时间点会突然比较大,应用服务器针对该活动页面的数据请求,需要从缓存服务器集群中远程获取一个关键字(key)或者多个key各自对应的值(value),如果,这些key散列指向同一台缓存服务器,那么,这个活动页面的总访问流量都会压到这一台缓存服务器中,导致整个分布式服务器中只有这一台缓存服务器被调用,其他机器起不到作用,而瞬间增大的访问流量,即访问流量高峰时期这台缓存服务器会被瞬间击穿,大量请求流向DB,导致整个业务集群崩溃。
另外,发明人在研究过程中还发现,如果该活动页面的“单个key”或者“散列到同一台缓存服务器的多个key”对应的value过大,则可能会导致缓存服务器在工作时触发网络传输流量限流,从而大量请求流向DB,导致整个业务集群崩溃。
而且,由于突发流量具有不确定性,不可预知性,因此,采用通常的扩容或者人工调整key的方式无法动态地、实时性地解决不同场景下的突发流量导致缓存击穿的问题。
基于上述研究发现,本申请提供了防止缓存击穿的方法、相关服务器以及***,为了便于本领域技术人员对本申请提供的技术方案的理解,下面先结合应用场景,对本申请在实际中的应用情况进行介绍。
参见图1,为本申请在实际应用中的场景示例图,如图1所示,该场景包括:监控服务器100、缓存服务器集群200、应用服务器300、客户端400;本申请第一方面提供的一种防止缓存击穿的方法可以以应用程序的形式应用于监控服务器100中;本申请第三方面提供的一种防止缓存击穿的方法也可以以应用程序的形式应用于应用服务器300中;缓存服务器集群200是指以分布式结构部署的缓存服务器;从硬件角度来讲,缓存服务器集群可以是在一台物理机器上采用分布式结构部署的多台虚拟缓存服务器;也可以是利用多台物理机器采用分布式结构部署的多台物理缓存服务器;当然,在利用多台物理机器部署时,也可以针对其中一台或者多台物理机器部署虚拟缓存服务器。从硬件角度来讲,监控服务器100可以是计算机、处理器等具有数据处理能力和网络传输能力的硬件设备;应用服务器300是能够与装载有应用程序(APP)或者浏览器等客户端提供业务数据支持的硬件设备,如计算机、处理器等,例如,应用服务器300可以是淘宝APP的服务器。在实际硬件部署时,该监控服务器100可以采用集群服务器来实现,以应对数据量较大的业务场景,当然也可以采用单机方式来部署。而应用服务器300也可以采用集群服务器来实现,以应用于数据量较大的业务场景,当然,若数据量较小时,也可以仅以单机方式来部署应用服务器。本申请在实现时对监控服务器、应用服务器的具体机器个数不作限定,图1仅为一种场景示例,方便理解本申请的原理而已。
本申请在实现时,监控服务器100监控缓存服务器集群200中的每台缓存服务器,根据每台缓存服务器的访问流量参数,从中确定访问流量参数超过对应的预设阈值的缓存服务器作为第一缓存服务器,认为第一缓存服务器的负载超高,容易出现缓存击穿;因此,从第一缓存服务器中选择一些key作为待迁移关键字,通过关键字映射方式将这些待迁移关键字对应的value迁移至负载较低的第二缓存服务器中;例如,监控服务器100确定出缓存服务器2001为第一缓存服务器,因此,将该第一缓存服务器中key1对应的value1迁移至第二缓存服务器2002,具体的,将key1进行关键字映射成为key11,则将第一缓存服务器中key1对应的value1,以key11-value1的键值对缓存在第二缓存服务器2002。这样,监控服务器100通过监控、键值对迁移等操作就缓解了第一缓存服务器1001的负载压力,避免第一缓存服务器2001被缓存击穿;监控服务器在完成映射之后,将key1与key11之间的映射关系表推送给应用服务器300,这样,应用服务器300在接收到客户端400发送的数据请求时,若该数据请求需要请求key1对应的value1,则应用服务器300根据key1与key11之间的映射关系表,利用key11访问缓存服务器2002得到对应的value1,将该value1作为key1的访问结果反馈给客户端400。其中,客户端400可以以应用程序APP,也可以是浏览器等形式装载在终端中实现其功能。
可见,本申请在实际应用中,通过监控服务器根据缓存服务器集群中的缓存服务器的访问流量参数衡量缓存服务器的负载情况,动态地将负载较高的缓存服务器中key-value对,通过key映射方式分散到负载较低的缓存服务器中,从而避免单台缓存服务器由于访问流量瞬间增大导致缓存击穿的问题。
为了适应于以上应用场景,本申请实施例提供了一种防止缓存击穿的***,下面结合图2对该***进行解释说明。
参见图2,图2为本申请实施例提供的一种防止缓存击穿的***,该***包括:
监控服务器201、应用服务器202和缓存服务器集群203。
其中,监控服务器201,用于监控缓存服务器集群中的缓存服务器对应的访问流量参数,所述访问流量参数包括每秒查询率和/或每秒网络传输流量;确定所述访问流量参数超过对应的预设阈值的第一缓存服务器;从所述第一缓存服务器中选择至少一个关键字作为待迁移关键字;对所述待迁移关键字进行映射,按照映射后的关键字将所述待迁移关键字对应的值从所述第一缓存服务器中迁移至所述缓存服务器集群中的第二缓存服务器;可选的,关于监控服务器201的数据处理过程可以参加下文图3所示方法实施例的描述。
另外,所述监控服务器还可以用于向应用服务器推送关键字映射关系表,所述关键字映射关系表用于记录所述待迁移关键字与映射后的关键字之间映射关系。
应用服务器202,用于接收数据请求,确定与所述数据请求相关的关键字;查看关键字映射关系表中是否存在与所述关键字对应的映射后的关键字;所述关键字映射关系表是监控服务器推送的,用于表征被迁移的关键字与映射后的关键字之间的映射关系;若存在,根据所述映射后的关键字访问本地缓存,若本地缓存中不存在所述映射后的关键字对应的值,则根据所述映射后的关键字访问缓存服务器集群中的缓存服务器,将访问到的值反馈给客户端。可选的,关于应用服务器202的数据处理过程可以参加下文图4所示方法实施例的描述。
缓存服务器集群203中的缓存服务器,用于按照键值对(key-value)的结构形式缓存数据。可选的,该缓存服务器集群203可以采用memcached构架来部署,也可以采用redis构架来部署。
其中,key-value是一种非关系型数据模型,缓存服务器集群将数据按照键值对的形式进行组织、索引和存储,key-value存储非常实用不涉及过多数据关系,业务关系的业务数据,能够有效减少读写磁盘的次数,具有更好的读写性能。
利用本申请实施例提供的一种防止缓存击穿的***,通过监控服务器监控缓存服务器集群,根据缓存服务器集群中的缓存服务器的访问流量参数,衡量缓存服务器的负载情况,动态地将负载较高的缓存服务器中key-value对,通过key映射方式分散到负载较低的缓存服务器中,从而避免单台缓存服务器由于访问流量瞬间增大导致缓存击穿的问题;并且通过关键字映射关系表的方式通知应用服务器缓存的动态变化情况,从而保证业务的连续性和实时性。
下面结合图3,对本申请实施例提供的一种防止缓存击穿的方法进行解释说明。
参见图3,图3为本申请实施例提供的一种防止缓存击穿的方法的流程图,该方法可以以应用程序的形式应用于监控服务器中,该方法可以包括以下步骤:
301,监控服务器监控缓存服务器集群中的缓存服务器对应的访问流量参数,所述访问流量参数包括每秒查询率和/或每秒网络传输流量;
在具体实现时,监控服务器与缓存服务器集群中每台缓存服务器进行网络通信,以得到每台缓存服务器各自对应的访问流量参数。
在一种可选的实现方式中,每台缓存服务器将自身的访问流量参数主动上报给监控服务器。例如,每台缓存服务器可以按照预设周期,周期性地将自身的每秒查询率和/或每秒网络传输流量主动上报给监控服务器。其中,预设周期可以是秒级、分钟级的时间量,例如,预设周期为1秒或者1分钟。这种方式能够有效节省网络资源,监控服务器只需要按照周期接收访问流量参数即可。
在另一种可选的实现方式中,监控服务器主动向缓存服务器集群中每台缓存服务器发送访问流量参数查询请求,则每台缓存服务器接收到该流量参数查询请求之后,响应该请求,向监控服务器反馈对应的访问流量参数。监控服务器可以采用群发方式向缓存服务器集群中每台缓存服务器发送该访问流量参数查询请求。另外,监控服务器可以根据业务需求,在一定时间段内对缓存服务器集群进行监控,通过主动发送请求的方式获取访问流量参数,可见,这种方式增强了监控服务器对整个分布式服务器的缓存情况的控制能力,监控服务器可以根据业务情况,仅在业务需要时主动获取缓存服务器的访问流量参数。
其中,一台缓存服务器对应的访问流量参数是根据该台缓存服务器中每个key对应的访问流量参数而确定的。具体的,一台缓存服务器对应的每秒查询率(qps)为该台缓存服务器中每个key对应的每秒查询率(qps)的和值;一台缓存服务器对应的每秒网络传输流量为该台缓存服务器中所有key各自对应的每秒网络传输流量的和值,其中,每个key对应的每秒网络传输流量为每个key对应的qps与value所占存储空间大小的乘积,该每秒网络传输流量也被称为每秒网络传输大小。可见,通过每台缓存服务器对应的访问流量参数能够衡量该缓存服务器的访问压力,即负载压力。
302,确定所述访问流量参数超过对应的预设阈值的第一缓存服务器;
由于缓存服务器集群在工作时,若某台缓存服务器的瞬间访问压力过大,则该台缓存服务器就被缓存击穿,导致大量的请求瞬间引入DB,就会导致DB雪崩。因此,在本申请实施例中,监控服务器通过步骤302及时发现可能会发生缓存击穿的缓存服务器。
在具体实现时,针对不同的访问流量参数预先设置有对应的预设阈值,这里的预设阈值是针对单台缓存服务器而言的,下面针对每秒查询率和每秒网络传输流量各自对应的预设阈值分别进行解释说明。
具体的,与每秒查询率对应的预设阈值是根据单台缓存服务器的每秒查询率上限值而确定的,而单台缓存服务器的每秒查询率上限值是根据单台服务器的软硬件元件所决定的每秒查询率的理论最高值;为了在合适的时机及时有效地发现即将会出现缓存击穿的缓存服务器,对该预设阈值的设置就非常重要,本申请实施例提出了一种实现方式,具体的,与每秒查询率对应的预设阈值为单台缓存服务器的每秒查询率上限值与超限比例的乘积,可选的,该超限比例取值为0.5至1之间的数值,例如,该超限比例取值为0.8;当然,该超限比例取值也可以为小于0.5的数值。
具体的,与每秒网络传输流量对应的预设阈值是根据单台缓存服务器的每秒网络传输流量上限值而确定的,而单台缓存服务器的每秒网络传输流量上限值是根据单台服务器的软硬件元件性能所决定的每秒网络传输流量的理论最高值;为了在合适的时机及时有效地发现即将会出现缓存击穿的缓存服务器,对该预设阈值的设置就非常重要,本申请实施例提出了一种实现方式,与每秒网络传输流量对应的预设阈值为单台缓存服务器的每秒网络传输流量上限值与超限比例的乘积,可选的,该超限比例取值为0.5至1之间的数值,例如,该超限比例取值为0.8;当然,该超限比例取值也可以为小于0.5的数值。
在具体实现时,监控服务器从所述缓存服务器集群中可能会确定出一个第一缓存服务器,也可能会确定出至少两个第一缓存服务器;则,监控服务器针对每个第一缓存服务器均实施以下步骤103和104,从而将负载压力较大的第一缓存服务器中的压力分散至负载压力较小的第二缓存服务器中。
303,从所述第一缓存服务器中选择至少一个关键字作为待迁移关键字;
在具体实现时,监控服务器针对第一缓存服务器,从其缓存中选择一个关键字,或者选择至少两个关键字作为待迁移关键字,从而将所选择的关键字对应的value迁移至第二缓存服务器中,以缓解该第一缓存服务器的负载压力。
在实现时,本申请实施例针对步骤103提供了以下两种可选的实现方式,下面对两种可选的实现方式进行解释说明。
一种可选的实现方式,包括:
监控服务器针对所述第一缓存服务器中的关键字,按照关键字对应的访问流量参数由大到小的顺序对关键字进行排序;
监控服务器选择排序靠前的前M个关键字作为待迁移关键字;其中,M为大于或者等于1的正整数。
在该可选的实现方式中,若访问流量参数为qps,则针对第一缓存服务器中缓存的key,按照每个key对应的qps由大到小的顺序进行排序;若访问流量参数为每秒网络传输流量,则针对第一缓存服务器中缓存的key,按照每个key对应的每秒网络传输流量由大到小的顺序进行排序;然后,选择排序排名靠前的M个key作为待迁移key,然后把这些待迁移key对应的value迁移至第二缓存服务器中。
利用该实现方式,优先选择出一些对第一缓存服务器而言负载压力较大的key,能够快速有效地缓解第一缓存服务器的负载压力,避免第一缓存服务器在后续工作时被缓存击穿。
另一种可选的实现方式,包括:
针对所述第一缓存服务器中的关键字,按照关键字对应的访问流量参数由小到大的顺序对关键字进行排序;
选择排序靠前的前N个关键字作为待迁移关键字;其中,N为大于或者等于1的正整数。
利用该实现方式,优先选择一些对第一缓存服务器而言负载压力较小的key,这样选择的目的是为了防止将这些key对应的value迁移至第二缓存服务器之后,对第二缓存服务器造成多大压力,这样,既能起到缓解第一缓存服务器的负载压力的作用,又能起到不会明显影响第二缓存服务器工作性能的目的。
监控服务器针对每个第一缓存服务器,选择待迁移的key,然后执行步骤304执行迁移操作。
304,对所述待迁移关键字进行映射,按照映射后的关键字将所述待迁移关键字对应的值从所述第一缓存服务器中迁移至所述缓存服务器集群中的第二缓存服务器。
在具体实现时,监控服务器针对一个第一缓存服务器,若仅选择出一个待迁移key,则将该一个待迁移key对应的value迁移至一个第二缓存服务器中;监控服务器针对一个第一缓存服务器,若选择出至少两个待迁移key,则将该至少两个待迁移key各自对应的value可以迁移至一个第二缓存服务器中,也可以分别迁移至至少两个第二缓存服务器中。
由于监控服务器可以根据每秒查询率从缓存服务器集群中确定第一缓存服务器,也可以根据每秒网络传输流量来确定第一缓存服务器,当然,还可以综合性地根据每秒查询率和每秒网络传输流量来确定第一缓存服务器;针对以上几种确定第一缓存服务器的方式,对应的,监控服务器需要根据对应的访问流量参数来确定第二缓存服务器。
基于此,本申请实施例针对如何确定第二缓存服务器提供了几种可选的实现方式,下面对这几种可选的实现方式分别进行解释说明。
针对监控服务器根据每秒查询率确定第一缓存服务器的情况,一种可选的实现方式,包括:
按照每秒查询率由小到大的顺序对所述缓存服务器集群中每秒查询率不超过预设的每秒查询率阈值的缓存服务器进行排序;
选择排序靠前的至少一个缓存服务器作为第二缓存服务器。
针对监控服务器根据每秒网络传输流量确定第一缓存服务器的情况,一种可选的实现方式,包括:
按照每秒网络传输流量由小到大的顺序对所述缓存服务器集群中每秒网络传输流量不超过预设的每秒网络传输流量阈值的缓存服务器进行排序;
选择排序靠前的至少一个缓存服务器作为第二缓存服务器。
还有一种情况是,所述访问流量参数包括每秒查询率和每秒网络传输流量;
则步骤302具体为:
将每秒查询率超过预设的每秒查询率阈值,且每秒网络传输流量超过预设的每秒网络传输流量阈值的缓存服务器作为第一缓存服务器;
则还可以通过以下方式确定第二缓存服务器:
按照每秒查询率与每秒网络传输流量乘积由小到大的顺序,对所述缓存服务器集群中除去所述第一缓存服务器之外的其他缓存服务器进行排序;
选择排序靠前的至少一个缓存服务器作为第二缓存服务器。
在以上几种可选的实现方式中,监控服务器从缓存服务器集群中排除已确定的第一缓存服务器,按照访问流量参数由小到大的顺序对剩余的缓存服务器进行排序,从剩余的缓存服务器中选择排名靠前的一个缓存服务器作为第二缓存服务器,优选的,选择排序第一的缓存服务器作为第二缓存服务器。或者,监控服务器针对从第一缓存服务器中选择出的多个待迁移的key,选择排名靠前的至少两个缓存服务器作为第二缓存服务器。基于这种选择方式选择的第二缓存服务器其负载压力相对较小,能够分担第一缓存服务器的访问压力。
在具体实现时,除了以上几种实现方式之外,本申请实施例还提出了另一种可选的实现方式,该方式包括:
根据缓存服务器集群中的缓存服务器的工作性能,选择工作性能较好的缓存服务器作为第二缓存服务器。其中,缓存服务器的工作性能包括:CPU使用率,存储空间利用率,剩余存储空间大小等等。
例如,按照缓存服务器的CPU使用率由小到大的顺序对缓存服务器集群中除去第一缓存服务器之外的其他缓存服务器进行排序,选择排序靠前的至少一个缓存服务器作为第二缓存服务器。
接下来,对步骤304中关于对所述待迁移关键字进行映射的实现方式进行解释说明。
在具体实现时,监控服务器可以按照映射规则对所述待迁移关键字进行映射,所述映射规则是在待迁移关键字的尾部增加一个能够散列到第二缓存服务器的一个字符。
这里需要说明的是,本申请的实现对映射规则的具体形式可以不作限制,只要映射规则能够保证将第一缓存服务器中的key进行映射后得到key’,根据该key’能够将key对应的value重新散列至指定的第二缓存服务器中即可。但考虑到在一些缓存服务器集群中会采用散列规则,例如,散列规则为按照key的最后一个字符对缓存服务器集群中缓存服务器的总数进行取模作为散列函数,基于此,为了更好地兼容这些缓存服务器集群,本申请实施例提出了一种可选的映射规则为在key的尾部增加一个能够使得映射后的key被散列至第二缓存服务器的一个字符。
监控服务器将第一缓存服务器中的部分key对应的value,按照映射后的key散列至第二缓存服务器中,从而缓解第一缓存服务器的访问压力,从而最大程度利用整个缓存服务器集群的整体负载能力,避免在使用缓存时由于单台缓存服务器的瞬间负载较大导致引发缓存击穿的问题。
为了保证业务***实时同步缓存服务器集群的动态变化情况,保证业务***正常工作,监控服务器还可以向应用服务器通知关于动态调整缓存的调整情况,则在上述方法的基础上,还可以增加如下步骤:
监控服务器向应用服务器推送关键字映射关系表,所述关键字映射关系表用于记录所述待迁移关键字与映射后的关键字之间映射关系。
在具体实现时,监控服务器在完成key映射之后,即可生成关键字映射关系表,从而将该关键字映射关系表推送至业务***中的各个应用服务器中,使得应用服务器及时了解key-value的迁移情况,以保证服务器集群对业务***中应用服务器提供正常的业务数据支持。
以上是对本申请实施例提供的应用于监控服务器中的防止缓存击穿的方法进行解释说明。
下面对本申请实施例提供的另一种防止缓存击穿的方法进行解释说明。
参见图4,图4为本申请实施例提供的另一种防止缓存击穿的方法的流程图,该方法可以以应用程序的形式应用于应用服务器中,该应用服务器可以是web应用服务器,也可以是APP应用服务器,该应用服务器与监控服务器和缓存服务器集群分别进行通信,如图4所示,该方法包括以下步骤:
401,应用服务器接收数据请求,确定与所述数据请求相关的关键字;
在具体实现时,客户端向应用服务器发送数据请求,该数据请求中包含页面url和业务相关参数,例如业务标识、页面坑位标识等等;应用服务器根据该数据请求中携带的信息能够确定出与该数据请求相关的关键字(key)。
应用服务器在同一时间会不同客户端发送的大量的相同的数据请求,但应用服务器针对每个数据请求均需要确定与其相关的关键字。
例如,在电商网站中常常发布产品促销活动,以吸引用户购买。产品促销活动往往有促销活动时间,因此,大量用户会在促销活动开始的同一时间点通过个人终端,利用浏览器登陆活动页面,则应用服务器会接收到不同用户的个人终端通过浏览器发送的与该活动页面相关的数据请求,则应用服务器针对每个数据请求均能够确定出于其相关的key。后续,应用服务器根据key访问对应的value,从而将访问得到的value反馈给客户端。
在本申请实施例中,应用服务器确定key之后,并非是直接根据该key直接从本地缓存中访问对应的value,而是先根据关键字映射关系表查找是否存在与该key对应的映射后的key’,即,需要先判断一下,在缓存服务器集群中该key对应的value是否已经从源缓存服务器中被迁移至另一缓存服务器中。则应用服务器在执行步骤201之后,需要执行步骤202。
402,应用服务器查看关键字映射关系表中是否存在与所述关键字对应的映射后的关键字;所述关键字映射关系表是监控服务器推送的,用于表征被迁移的关键字与映射后的关键字之间的映射关系;
其中,关键字映射关系表是监控服务器根据对key具体实施的映射操作,生成的包含value被迁移的key和映射后的key’之间的映射关系的关系表,关于监控服务器如何进行映射,以及如何生成该关系表的实现,可以参见上述图3所示方法实施例中的相关描述,此处不再赘述。
需要说明的是,应用服务器接收到该关键字映射关系表之后,将该关键字映射关系表进行存储,以在处理数据请求时使用。
若查看结果为否,则表明与数据请求相关的该key未被映射,该key对应的value未被迁移,则该应用服务器直接根据该key从本地缓存中访问对应的value,若本地缓存中没有,则应用服务器再与缓存服务器集群中的缓存服务器进行通信,即则再从缓存服务器集群中访问该key对应的value,将访问得到的value反馈至客户端。
若查看结果为是,则表明与数据请求相关的该key已被映射,该key对应的value已被迁移,则该应用服务器执行步骤403。
403,若存在,应用服务器根据所述映射后的关键字访问本地缓存,若本地缓存中不存在所述映射后的关键字对应的值,则根据所述映射后的关键字访问缓存服务器集群中的缓存服务器,将访问到的值反馈给客户端。
在具体实现时,由于客户端实际要访问的是key,但该key已被映射为key’,并且监控服务器按照映射后的key’已经将key对应的value已经由源缓存服务器迁移至另一缓存服务器中。即,按照该key对应的value必须通过key’才能够访问到。因此,应用服务器将该key重新赋值为key’,这样,利用该key’先访问本地缓存,若本地缓存中存在该key’对应的value,则将访问到的value反馈至客户端。若本地缓存中不存在该key’对应的value,则应用服务器访问缓存服务器集群,从缓存有该key’对应的value的那一台缓存服务器中访问得到对应的value,将访问得到的value反馈至客户端。
利用本申请实施例提供的方法,应用服务器通过关键字映射方式,能够快速发现value被迁移的key,进而根据映射后的key快速访问得到对应的value,按照这种关键字映射的方式能够实时地访问到分布式服务器中为了防止缓存击穿而被迁移的key-value,既不改变客户端的数据访问逻辑,也不影响分布式服务器中的存储逻辑,从而能够最大程度利用整个缓存服务器集群的整体负载能力,避免在使用缓存时由于单台缓存服务器的瞬间负载较大导致引发缓存击穿的问题。
在实际应用中,单个key的瞬间高并发请求容易造成缓存击穿,例如,在电商网站中,常常出现的限时促销活动,在该限时促销活动中,大量用户同时登陆网站的活动页面就容易产生瞬间高并发的数据请求,这就会导致存储该数据请求相关的key的value的缓存服务器容易被瞬间击穿,为了缓解这一问题,本申请实施例还提供了一种可选的解决方式,具体的,应用服务器在利用映射后的关键字访问缓存服务器集群时,还可以判断与该映射后的关键字对应的访问流量参数是否超过预设阈值,即,判断该关键字对应的value是否为热点数据,如果为热点数据,则将该关键字对应的value优先缓存在本地缓存中;具体方案在实现时,是在图3所示方法的基础上,还可以增加如下步骤:
应用服务器判断所述映射后的关键字对应的访问流量参数是否超过对应的预设阈值,所述访问流量参数包括每秒查询率和/或每秒网络传输流量;
若是,则将从所述缓存服务器集群中获取的与所述映射后的关键字对应的值缓存在本地缓存中。
其中,所述预设阈值包括:
与关键字的每秒查询率对应的第一预设阈值,所述第一预设阈值是根据所述缓存服务器集群中单台缓存服务器的每秒查询率上限值和业务***中应用服务器总个数所确定的;
与关键字的每秒网络传输流量对应的第二预设阈值,所述第二预设阈值是根据所述缓存服务器集群中单台缓存服务器每秒网络传输流量上限值与业务***中应用服务器总个数所确定的。
其中,单台缓存服务器的每秒查询率上限值是根据单台服务器的软硬件元件所决定的每秒查询率的理论最高值;单台缓存服务器的每秒网络传输流量上限值是根据单台服务器的软硬件元件所决定的每秒网络传输流量的理论最高值;为了在合适的时机及时有效地发现即将会导致缓存击穿的热点key,关于该热点key的数据请求,即将突破单台缓存服务器的处理能力,即将导致缓存击穿。下面通过举例方式对预设阈值的设定情况进行解释说明。
例如,第一预设阈值可以取值为单台缓存服务器的每秒查询率上限值S1与超限比例T1的乘积与业务***中应用服务器总个数G之间的比值S1*T1/G,可选的,该超限比例T1取值为0.5至1之间的数值,例如,该超限比例取值为0.8;当然,该超限比例取值也可以为小于0.5的数值。
例如,第二预设阈值可以取值为单台缓存服务器每秒网络传输流量上限值S2与超限比例T2的乘积与业务***中应用服务器总个数G之间的比值S2*T2/G,可选的,该超限比例T取值为0.5至1之间的数值,例如,该超限比例取值为0.8;当然,该超限比例取值也可以为小于0.5的数值。
通过这种方式,应用服务器在响应客户端的数据请求的同时,能够及时发现会导致缓存击穿的热点key,进而优先将热点key缓存在本地缓存中,从而通过及时发现热点key存入本地缓存,这样,在后续接收到关于热点key的数据请求时,可以直接从本地缓存中读取value反馈给客户端,可以将热点key瞬间高并发请求拦截到本地缓存,即,由应用服务器主动分担缓存服务器的访问压力,从而规避了单个key高并发请求击穿缓存的风险。
与图3所示方法相对应的,本申请实施例还提供了一种监控服务器,下面结合图5对该监控服务器进行解释说明。
参见图5,图5为本申请实施例提供的一种监控服务器的结构图,该监控服务器包括:
监控模块501,用于监控缓存服务器集群中的缓存服务器对应的访问流量参数,所述访问流量参数包括每秒查询率和/或每秒网络传输流量;
确定模块502,用于确定所述访问流量参数超过对应的预设阈值的第一缓存服务器;
选择模块503,用于从所述第一缓存服务器中选择至少一个关键字作为待迁移关键字;
迁移模块504,用于对所述待迁移关键字进行映射,按照映射后的关键字将所述待迁移关键字对应的值从所述第一缓存服务器中迁移至所述缓存服务器集群中的第二缓存服务器。
这里需要说明的是,该监控服务器中的各个功能模块的具体实现可以参照上文图3所示方法实施例的描述,此处不再赘述。
与图4所示方法相对应的,本申请实施例还提供了一种应用服务器,下面结合图6对该应用服务器进行解释说明。
参见图6,图6为本申请实施例提供的一种应用服务器的结构图,该应用服务器包括:
确定模块601,用于接收数据请求,确定与所述数据请求相关的关键字;
查看模块602,用于查看关键字映射关系表中是否存在与所述关键字对应的映射后的关键字;所述关键字映射关系表是监控服务器推送的,用于表征被迁移的关键字与映射后的关键字之间的映射关系;若存在,触发访问模块;
访问模块603,用于根据所述映射后的关键字访问本地缓存,若本地缓存中不存在所述映射后的关键字对应的值,则根据所述映射后的关键字访问缓存服务器集群中的缓存服务器,将访问到的值反馈给客户端。
这里需要说明的是,该应用服务器中的各个功能模块的具体实现可以参照上文图4所示方法实施例的描述,此处不再赘述。
图7为本申请实施例提供的一种监控服务器700的硬件结构图,在本实施例中,监控服务器700具体可以包括:处理器701、存储器702、网络接口703和总线***704。
所述总线***704,用于将监控服务器700的各个硬件组件耦合在一起。
所述网络接口703,用于实现监控服务器700与至少一个其它服务器之间的通信连接,可以使用互联网,广域网,本地网,城域网等方式实现通信连接。
所述存储器702,用于存储程序指令和/或数据。
所述处理器701,用于读取存储器702中存储的指令,执行以下操作:
监控缓存服务器集群中的缓存服务器对应的访问流量参数,所述访问流量参数包括每秒查询率和/或每秒网络传输流量;
确定所述访问流量参数超过对应的预设阈值的第一缓存服务器;
从所述第一缓存服务器中选择至少一个关键字作为待迁移关键字;
对所述待迁移关键字进行映射,按照映射后的关键字将所述待迁移关键字对应的值从所述第一缓存服务器中迁移至所述缓存服务器集群中的第二缓存服务器。
需要说明的是,该处理器701执行的各个步骤的具体实现可以参见上文图3所示方法实施例中的各个步骤,此处不再赘述。
图8为本申请实施例提供的一种应用服务器800的硬件结构图,在本实施例中,应用服务器800具体可以包括:处理器801、存储器802、网络接口803和总线***804。
所述总线***804,用于将所述应用服务器的各个硬件组件耦合在一起;
所述网络接口803,用于实现所述应用服务器与至少一个其它服务器之间的通信连接;
所述存储器802,用于存储程序指令;
所述处理器801,用于读取所述存储器中存储的指令,执行以下操作:
接收数据请求,确定与所述数据请求相关的关键字;
查看关键字映射关系表中是否存在与所述关键字对应的映射后的关键字;所述关键字映射关系表是监控服务器推送的,用于表征被迁移的关键字与映射后的关键字之间的映射关系;
若存在,根据所述映射后的关键字访问本地缓存,若本地缓存中不存在所述映射后的关键字对应的值,则根据所述映射后的关键字访问缓存服务器集群中的缓存服务器,将访问到的值反馈给客户端。
需要说明的是,该处理器801执行的各个步骤的具体实现可以参见上文图4所示方法实施例中的各个步骤,此处不再赘述。
还需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种防止缓存击穿的方法、相关服务器以及***进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (17)
1.一种防止缓存击穿的方法,其特征在于,包括:
监控缓存服务器集群中的缓存服务器对应的访问流量参数,所述访问流量参数包括每秒查询率和/或每秒网络传输流量;
确定所述访问流量参数超过对应的预设阈值的第一缓存服务器;
从所述第一缓存服务器中选择至少一个关键字作为待迁移关键字;
对所述待迁移关键字进行映射,按照映射后的关键字将所述待迁移关键字对应的值从所述第一缓存服务器中迁移至所述缓存服务器集群中的第二缓存服务器;并向应用服务器推送关键字映射关系表,所述关键字映射关系表用于记录所述待迁移关键字与映射后的关键字之间映射关系。
2.根据权利要求1所述方法,其特征在于,所述访问流量参数包括每秒查询率;
则所述方法还包括:通过以下方式确定所述第二缓存服务器:
按照每秒查询率由小到大的顺序对所述缓存服务器集群中每秒查询率不超过预设的每秒查询率阈值的缓存服务器进行排序;
选择排序靠前的至少一个缓存服务器作为第二缓存服务器。
3.根据权利要求1所述方法,其特征在于,所述访问流量参数包括每秒网络传输流量;
则所述方法还包括:通过以下方式确定所述第二缓存服务器:
按照每秒网络传输流量由小到大的顺序对所述缓存服务器集群中每秒网络传输流量不超过预设的每秒网络传输流量阈值的缓存服务器进行排序;
选择排序靠前的至少一个缓存服务器作为第二缓存服务器。
4.根据权利要求1所述方法,其特征在于,所述访问流量参数包括每秒查询率和每秒网络传输流量;
则所述确定所述访问流量参数超过对应的预设阈值的第一缓存服务器,具体为:
确定每秒查询率超过预设的每秒查询率阈值,且每秒网络传输流量超过预设的每秒网络传输流量阈值的第一缓存服务器;
则所述方法还包括:通过以下方式确定所述第二缓存服务器:
按照每秒查询率与每秒网络传输流量的乘积由小到大的顺序,对所述缓存服务器集群中除去所述第一缓存服务器之外的其他缓存服务器进行排序;
选择排序靠前的至少一个缓存服务器作为第二缓存服务器。
5.根据权利要求2至4任一项所述方法,其特征在于,所述选择排序靠前的至少一个缓存服务器作为第二缓存服务器,包括:
选择排序第一的缓存服务器作为第二缓存服务器。
6.根据权利要求1所述方法,其特征在于,所述从所述第一缓存服务器中选择至少一个关键字作为待迁移关键字,包括:
针对所述第一缓存服务器中的关键字,按照关键字对应的访问流量参数由大到小的顺序对关键字进行排序;
选择排序靠前的前M个关键字作为待迁移关键字;其中,M为大于或者等于1的正整数。
7.根据权利要求1所述方法,其特征在于,所述从所述第一缓存服务器中选择至少一个关键字作为待迁移关键字,包括:
针对所述第一缓存服务器中的关键字,按照关键字对应的访问流量参数由小到大的顺序对关键字进行排序;
选择排序靠前的前N个关键字作为待迁移关键字;其中,N为大于或者等于1的正整数。
8.根据权利要求1所述方法,其特征在于,
缓存服务器对应的每秒查询率为缓存服务器中所有的关键字各自对应的每秒查询率的和值;
缓存服务器对应的每秒网络传输流量为缓存服务器中所有关键字对应的每秒网络传输流量的和值;其中,每个关键字对应的每秒网络传输流量为关键字对应的每秒查询率与关键字对应的值所占存储空间大小的乘积。
9.根据权利要求1所述方法,其特征在于,所述对所述待迁移关键字进行映射,包括:
按照映射规则对所述待迁移关键字进行映射,所述映射规则是在待迁移关键字的尾部增加一个能够散列到第二缓存服务器的一个字符。
10.一种监控服务器,其特征在于,包括:
监控模块,用于监控缓存服务器集群中的缓存服务器对应的访问流量参数,所述访问流量参数包括每秒查询率和/或每秒网络传输流量;
确定模块,用于确定所述访问流量参数超过对应的预设阈值的第一缓存服务器;
选择模块,用于从所述第一缓存服务器中选择至少一个关键字作为待迁移关键字;
迁移模块,用于对所述待迁移关键字进行映射,按照映射后的关键字将所述待迁移关键字对应的值从所述第一缓存服务器中迁移至所述缓存服务器集群中的第二缓存服务器;并向应用服务器推送关键字映射关系表,所述关键字映射关系表用于记录所述待迁移关键字与映射后的关键字之间映射关系。
11.一种防止缓存击穿的方法,其特征在于,包括:
接收数据请求,确定与所述数据请求相关的关键字;
查看关键字映射关系表中是否存在与所述关键字对应的映射后的关键字;所述关键字映射关系表是监控服务器推送的,用于表征被迁移的关键字与映射后的关键字之间的映射关系;
若存在,根据所述映射后的关键字访问本地缓存,若本地缓存中不存在所述映射后的关键字对应的值,则根据所述映射后的关键字访问缓存服务器集群中的缓存服务器,将访问到的值反馈给客户端。
12.根据权利要求11所述方法,其特征在于,在根据所述映射后的关键字访问缓存服务器集群中的缓存服务器时,所述方法还包括:
判断所述映射后的关键字对应的访问流量参数是否超过对应的预设阈值,所述访问流量参数包括每秒查询率和/或每秒网络传输流量;
若是,则将从所述缓存服务器中访问到的与所述映射后的关键字对应的值缓存在本地缓存中。
13.根据权利要求12所述方法,其特征在于,所述预设阈值包括:
与关键字的每秒查询率对应的第一预设阈值,所述第一预设阈值是根据所述缓存服务器集群中的缓存服务器的每秒查询率上限值和业务***中应用服务器总个数所确定的;
与关键字的每秒网络传输流量对应的第二预设阈值,所述第二预设阈值是根据所述缓存服务器集群中的缓存服务器每秒网络传输流量上限值与业务***中应用服务器总个数所确定的。
14.一种应用服务器,其特征在于,包括:
确定模块,用于接收数据请求,确定与所述数据请求相关的关键字;
查看模块,用于查看关键字映射关系表中是否存在与所述关键字对应的映射后的关键字;所述关键字映射关系表是监控服务器推送的,用于表征被迁移的关键字与映射后的关键字之间的映射关系;若存在,触发访问模块;
访问模块,用于根据所述映射后的关键字访问本地缓存,若本地缓存中不存在所述映射后的关键字对应的值,则根据所述映射后的关键字访问缓存服务器集群中的缓存服务器,将访问到的值反馈给客户端。
15.一种防止缓存击穿的***,其特征在于,包括:
上述权利要求10 所述的监控服务器、上述权利要求14 所述的应用服务器和缓存服务器集群;
其中,所述缓存服务器集群中的缓存服务器,用于采用键值对的结构存储数据。
16.一种监控服务器,其特征在于,包括:
处理器、存储器、网络接口和总线***;
所述总线***,用于将所述监控服务器的各个硬件组件耦合在一起;
所述网络接口,用于实现所述监控服务器与至少一个其它服务器之间的通信连接;
所述存储器,用于存储程序指令;
所述处理器,用于读取所述存储器中存储的指令和/或数据,执行以下操作:
监控缓存服务器集群中的缓存服务器对应的访问流量参数,所述访问流量参数包括每秒查询率和/或每秒网络传输流量;
确定所述访问流量参数超过对应的预设阈值的第一缓存服务器;
从所述第一缓存服务器中选择至少一个关键字作为待迁移关键字;
对所述待迁移关键字进行映射,按照映射后的关键字将所述待迁移关键字对应的值从所述第一缓存服务器中迁移至所述缓存服务器集群中的第二缓存服务器;并向应用服务器推送关键字映射关系表,所述关键字映射关系表用于记录所述待迁移关键字与映射后的关键字之间映射关系。
17.一种应用服务器,其特征在于,包括:
处理器、存储器、网络接口和总线***;
所述总线***,用于将所述应用服务器的各个硬件组件耦合在一起;
所述网络接口,用于实现所述应用服务器与至少一个其它服务器之间的通信连接;
所述存储器,用于存储程序指令;
所述处理器,用于读取所述存储器中存储的指令和/或数据,执行以下操作:
接收数据请求,确定与所述数据请求相关的关键字;
查看关键字映射关系表中是否存在与所述关键字对应的映射后的关键字;所述关键字映射关系表是监控服务器推送的,用于表征被迁移的关键字与映射后的关键字之间的映射关系;
若存在,根据所述映射后的关键字访问本地缓存,若本地缓存中不存在所述映射后的关键字对应的值,则根据所述映射后的关键字访问缓存服务器集群中的缓存服务器,将访问到的值反馈给客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711024741.3A CN109729108B (zh) | 2017-10-27 | 2017-10-27 | 一种防止缓存击穿的方法、相关服务器及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711024741.3A CN109729108B (zh) | 2017-10-27 | 2017-10-27 | 一种防止缓存击穿的方法、相关服务器及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109729108A CN109729108A (zh) | 2019-05-07 |
CN109729108B true CN109729108B (zh) | 2022-01-14 |
Family
ID=66290831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711024741.3A Active CN109729108B (zh) | 2017-10-27 | 2017-10-27 | 一种防止缓存击穿的方法、相关服务器及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109729108B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110222034A (zh) * | 2019-06-04 | 2019-09-10 | 北京奇艺世纪科技有限公司 | 一种数据库维护方法及装置 |
CN113141264B (zh) * | 2020-01-16 | 2023-12-08 | 北京京东振世信息技术有限公司 | 高并发访问处理方法、装置以及存储介质 |
CN111367672A (zh) * | 2020-03-05 | 2020-07-03 | 北京奇艺世纪科技有限公司 | 数据缓存方法、装置、电子设备及计算机存储介质 |
CN111586438B (zh) * | 2020-04-27 | 2021-08-17 | 安徽文香科技有限公司 | 一种业务数据的处理方法、装置及*** |
CN111885184A (zh) * | 2020-07-29 | 2020-11-03 | 深圳壹账通智能科技有限公司 | 高并发场景下热点访问关键字处理方法和装置 |
CN113760974A (zh) * | 2020-09-08 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 动态缓存的方法、装置和*** |
CN112307069A (zh) * | 2020-11-12 | 2021-02-02 | 京东数字科技控股股份有限公司 | 数据查询方法、***、设备及存储介质 |
CN113765978A (zh) * | 2020-11-17 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 热点请求探测***、方法、装置、服务器及介质 |
CN114116796A (zh) * | 2021-11-02 | 2022-03-01 | 浪潮云信息技术股份公司 | 一种预防缓存踩踏的分布式缓存*** |
CN114422434A (zh) * | 2021-12-08 | 2022-04-29 | 联动优势电子商务有限公司 | 一种热键存储方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102244685A (zh) * | 2011-08-11 | 2011-11-16 | 中国科学院软件研究所 | 一种支持负载均衡的分布式缓存动态伸缩方法及*** |
CN106357426A (zh) * | 2016-08-26 | 2017-01-25 | 东北大学 | 一种基于工业云的大规模分布式智能数据采集***及方法 |
CN107145386A (zh) * | 2017-04-28 | 2017-09-08 | 广东欧珀移动通信有限公司 | 数据迁移方法、终端设备及计算机可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10419370B2 (en) * | 2015-07-04 | 2019-09-17 | Avago Technologies International Sales Pte. Limited | Hierarchical packet buffer system |
US10956273B2 (en) * | 2016-03-28 | 2021-03-23 | International Business Machines Corporation | Application aware export to object storage of low-reference data in deduplication repositories |
-
2017
- 2017-10-27 CN CN201711024741.3A patent/CN109729108B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102244685A (zh) * | 2011-08-11 | 2011-11-16 | 中国科学院软件研究所 | 一种支持负载均衡的分布式缓存动态伸缩方法及*** |
CN106357426A (zh) * | 2016-08-26 | 2017-01-25 | 东北大学 | 一种基于工业云的大规模分布式智能数据采集***及方法 |
CN107145386A (zh) * | 2017-04-28 | 2017-09-08 | 广东欧珀移动通信有限公司 | 数据迁移方法、终端设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109729108A (zh) | 2019-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109729108B (zh) | 一种防止缓存击穿的方法、相关服务器及*** | |
CN109660607B (zh) | 一种业务请求分发方法、接收方法、装置及服务器集群 | |
CN110109953B (zh) | 一种数据查询方法、装置及设备 | |
CN107943594B (zh) | 数据获取方法和装置 | |
CN100473008C (zh) | 单点对多节点并发下载***和方法 | |
US9229989B1 (en) | Using resource load times in ranking search results | |
AU2018201459A1 (en) | System and method for improving access to search results | |
CN106302595B (zh) | 一种对服务器进行健康检查的方法及设备 | |
CN110166523B (zh) | 内容更新方法、装置、设备和计算机可读存储介质 | |
US8892684B2 (en) | Dynamic selection of resources for compression in a content delivery network | |
CN104243425A (zh) | 一种在内容分发网络中进行内容管理的方法、装置及*** | |
CN109120709A (zh) | 一种缓存方法、装置、设备及介质 | |
CN105450579A (zh) | 网络资源预加载方法、客户端及中间件服务器 | |
CN112015820A (zh) | 分布式图数据库实现的方法、***、电子装置和存储介质 | |
US20200065306A1 (en) | Bloom filter partitioning | |
JP2023164813A (ja) | 強化されたオンラインプライバシ | |
CN112199175B (zh) | 一种任务队列生成方法、装置及设备 | |
CN107665235B (zh) | 缓存处理方法、装置、计算机设备和存储介质 | |
CN110765086A (zh) | 一种小文件的目录读取方法、***、电子设备及存储介质 | |
US11042357B2 (en) | Server and method for ranking data sources | |
WO2020094064A1 (zh) | 性能优化方法、装置、设备及计算机可读存储介质 | |
CN107181773A (zh) | 分布式存储***的数据存储及数据管理方法、设备 | |
CN107483565B (zh) | 一种服务后台识别方法、代理服务器及计算机存储介质 | |
CN105450513A (zh) | 归档邮件附件的方法和云存储服务器 | |
CN113641928A (zh) | 一种网页请求方法、***及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221117 Address after: Room 507, floor 5, building 3, No. 969, Wenyi West Road, Wuchang Street, Yuhang District, Hangzhou City, Zhejiang Province Patentee after: ZHEJIANG TMALL TECHNOLOGY Co.,Ltd. Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK Patentee before: ALIBABA GROUP HOLDING Ltd. |