CN109510864A - 一种缓存请求的转发方法、传输方法及相关装置 - Google Patents

一种缓存请求的转发方法、传输方法及相关装置 Download PDF

Info

Publication number
CN109510864A
CN109510864A CN201811145678.3A CN201811145678A CN109510864A CN 109510864 A CN109510864 A CN 109510864A CN 201811145678 A CN201811145678 A CN 201811145678A CN 109510864 A CN109510864 A CN 109510864A
Authority
CN
China
Prior art keywords
cache request
caching
cache
request
state
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.)
Granted
Application number
CN201811145678.3A
Other languages
English (en)
Other versions
CN109510864B (zh
Inventor
黄涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN201811145678.3A priority Critical patent/CN109510864B/zh
Publication of CN109510864A publication Critical patent/CN109510864A/zh
Application granted granted Critical
Publication of CN109510864B publication Critical patent/CN109510864B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0668Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例涉及通信技术领域,公开了一种缓存请求的转发方法、传输方法及相关装置。本发明中,缓存请求的转发方法包括以下步骤:获取客户端传输的第一缓存请求;根据第一缓存请求,确定与第一缓存请求对应的第一缓存实例;根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例。该实现中,代理实例能够根据缓存实例的状态确定缓存请求的处理方式,避免了大量缓存请求击穿缓存实例直接到达数据库,导致缓存系统崩溃的情况。

Description

一种缓存请求的转发方法、传输方法及相关装置
技术领域
本发明实施例涉及通信技术领域,特别涉及一种缓存请求的转发方法、传输方法及相关装置。
背景技术
缓存技术在互联网的应用中被广泛使用,如网站、应用程序(Application,APP)或云计算平台。利用缓存技术,可以有效提升应用的吞吐量,提升应用的响应速度,让有限的资源服务更多客户。以Linux系统为例,Linux系统上面的典型缓存应用,如高速缓存系统memcache,一般会在每台缓存服务器上面启动一个到多个缓存进程,每个进程都是一个单独的缓存实例,各实例之间一般并无关联。目前主流的缓存高可用技术是通过客户端直接连接缓存实例的方式来实现客户端对缓存数据的读取,如图1所示。
然而,发明人发现现有技术中至少存在如下问题:客户端直接连接缓存实例的方式实现起来较为简单,但是可能出现应用的响应变得缓慢的情况,甚至会发生缓存击穿的情况,导致整个缓存系统崩溃。在高可用要求较高的应用中,这种情况是无法忍受的。例如,云计算平台目前使用的缓存系统是memcache,由于架构原因,该缓存系统自身是不支持配置成集群的。在使用中,经常发生一个缓存实例挂了,但是客户端仍然会将缓存请求转发到该缓存实例上,直到缓存请求超时,这会导致整个系统的响应变得很慢。而且,云计算平台的一些服务依赖于会话控制session技术,session技术一般也是缓存在缓存中的,如果缓存是相互独立的,必须要保证相应客户端访问到相应的缓存服务器,这需要在负载均衡层面做扩展,给缓存系统的扩容,故障节点替换都会带来很大麻烦。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明实施方式的目的在于提供一种缓存请求的转发方法、传输方法及相关装置,代理实例能够根据缓存实例的状态确定缓存请求的处理方式,避免了大量缓存请求击穿缓存实例直接到达数据库,导致缓存系统崩溃的情况。
为解决上述技术问题,本发明的实施方式提供了一种缓存请求的转发方法,应用于代理实例,包括以下步骤:获取客户端传输的第一缓存请求;根据第一缓存请求,确定与第一缓存请求对应的第一缓存实例;根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例。
本发明的实施方式还提供了一种缓存请求的传输方法,包括:生成第一缓存请求;将第一缓存请求传输至第一代理实例;其中,代理实例获取客户端传输的第一缓存请求;根据第一缓存请求,确定与第一缓存请求对应的第一缓存实例;根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例。
本发明的实施方式还提供了一种缓存请求的转发装置,包括:获取模块、第一确定模块和第二确定模块;获取模块用于获取客户端传输的第一缓存请求;第一确定模块用于根据第一缓存请求,确定与第一缓存请求对应的第一缓存实例;第二确定模块用于根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例。
本发明的实施方式还提供了一种缓存请求的传输装置,包括:生成模块和传输模块;生成模块用于生成第一缓存请求;传输模块用于将第一缓存请求传输至第一代理实例;其中,第一代理实例获取客户端传输的第一缓存请求;根据第一缓存请求,确定与第一缓存请求对应的第一缓存实例;根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例。
本发明的实施方式还提供了一种缓存系统,包括:客户端、代理实例和缓存实例;缓存实例至少包括第一缓存实例;客户端用于生成第一缓存请求;将第一缓存请求传输至代理实例;代理实例用于获取客户端传输的第一缓存请求;根据第一缓存请求,确定与第一缓存请求对应的第一缓存实例;根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例。
本发明的实施方式还提供了一种服务器,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;以及,与客户端通信连接的通信组件,通信组件在处理器的控制下接收和发送数据;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施方式提及的缓存请求的转发方法。
本发明的实施方式还提供了一种客户端,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;以及,与服务器通信连接的通信组件,通信组件在处理器的控制下接收和发送数据;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施方式提及的缓存请求的传输方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述实施方式提及的任一项的缓存请求的转发方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述实施方式提及的缓存请求的传输方法。
本发明实施方式相对于现有技术而言,在客户端与缓存实例之间增设了代理实例,客户端将缓存请求传输至代理实例,由代理实例根据缓存请求对应的缓存实例的状态确定是否将缓存请求转发至缓存实例,相较于客户端直接将缓存请求传输至缓存实例的方法,充分考虑了缓存实例的状态,避免在缓存实例处于挂机状态时将缓存请求发送至该缓存实例的情况,进而避免了缓存请求击穿缓存实例,直达数据库,导致缓存系统崩溃的情况,提高了缓存系统的稳定性。
另外,根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例,具体包括:若确定第一缓存实例为存活状态,将第一缓存请求传输至第一缓存实例;若确定第一缓存实例为挂机状态,发送请求失败信息至客户端或不响应客户端的缓存请求。该实现中,在缓存实例处于存活状态时才将缓存请求传输至缓存实例,避免了缓存实例处于挂机状态时,缓存请求击穿缓存实例直达数据库的情况。进一步地,在缓存实例处于挂机状态时,返回请求失败信息,避免客户端持续等待缓存实例的响应,导致客户端对用户的操作响应缓慢的情况,提高了客户端的用户的体验。
另外,将第一缓存请求传输至第一缓存实例,具体包括:判断第一缓存实例的获取时间所在的时间段内,是否存在与第一缓存实例对应的其他缓存请求;若确定存在,将其他缓存请求与第一缓存请求进行整合,将整合后的缓存请求传输至第一缓存实例。该实现中,对一个时间段内与同一缓存实例相对应的缓存请求进行批量处理,提升了代理实例的转发效率。
另外,将其他缓存请求与第一缓存请求进行整合,具体包括:判断其他缓存请求与第一缓存请求是否相同;若确定是,确定整合后的缓存请求为第一缓存请求。该实现中,将相同的缓存请求整合为一个缓存请求后再转发至缓存实例,进一步提升了代理实例的转发效率。
另外,根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例之前,确定缓存请求的响应方式的方法还包括:确定第一缓存实例的状态。
另外,确定第一缓存实例的状态,具体包括:发送状态检测指令至第一缓存实例;若确定第一缓存实例对状态检测指令的响应正常,确定第一缓存实例的状态为存活状态;若确定第一缓存实例对状态检测指令的响应异常,确定第一缓存实例的状态为挂机状态。该实现中,代理实例通过状态检测指令感知缓存实例的状态变化,便于代理实例及时了解缓存实例的状态,并根据缓存实例的状态,调整对缓存请求的处理方式。
另外,第一缓存请求中包括请求访问或请求记录的数据的键值;根据第一缓存请求,确定与第一缓存请求对应的第一缓存实例,具体包括:获取请求访问或请求记录的数据的键值;根据请求访问或请求记录的数据的键值,确定第一缓存请求对应的哈希值;根据第一缓存请求对应的哈希值,确定第一缓存请求对应的第一缓存实例。该实现中,由代理实例确定请求访问或请求记录的数据的键值对应的缓存实例,使得客户端仅需要发送请求访问或请求记录的数据的键值至代理实例即可使用缓存资源,不再需要维护请求访问或请求记录的数据的键值、哈希值与缓存实例三者之间的关系,降低了客户端的操作的复杂性。
另外,在获取客户端传输的第一缓存请求之前,缓存请求的转发方法还包括:确定主代理实例发生故障。该实现中,从代理实例在主代理实例发生故障时接管主代理,对缓存请求进行处理,提高了代理实例可用性。
另外,当主代理实例发生故障时,主代理实例由与主代理实例相关联的处于非故障状态的从代理实例中优先级最高的从代理实例接管。
另外,在将缓存请求传输至代理实例之后,缓存请求的传输方法还包括:
若确定接收到代理实例传输的请求失败信息,根据请求访问或请求记录的数据,确定第二缓存请求,将第二缓存请求传输至存储有应用的所有数据的数据库对应的服务器;其中,服务器执行第二缓存请求。该实现中,在无法从缓存实例中获取所需数据时,客户端可以直接从数据库中获取数据,提高了客户端的可用性。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是现有技术中客户端与缓存实例之间的连接关系示意图;
图2是本发明的第一实施方式的缓存请求的转发方法的流程图;
图3是本发明的第二实施方式的缓存请求的转发方法的流程图;
图4是本发明的第三实施方式的缓存请求的传输方法的流程图;
图5是本发明的第四实施方式的缓存请求的传输方法的流程图;
图6是本发明的第五实施方式的缓存请求的转发装置的结构示意图;
图7是本发明的第六实施方式的缓存请求的传输装置的结构示意图;
图8是本发明的第七实施方式的缓存系统的结构示意图;
图9是本发明的第七实施方式的一种具体实现中的缓存系统的结构示意图;
图10是本发明的第八实施方式的服务器的结构示意图;
图11是本发明的第九实施方式的客户端的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
需要说明的是,本领域技术人员可以理解,本发明的实施方式中,代理实例是指能够执行缓存请求的转发方法的服务器,缓存实例是指启动缓存进程的服务器。
本发明的第一实施方式涉及一种缓存请求的转发方法,应用于代理实例。如图2所示,该缓存请求的转发方法包括以下步骤:
步骤101:获取客户端传输的第一缓存请求。
具体地说,客户端已知代理实例监听的虚拟互联网协议(Virtual InternetProtocol,VIP)地址,将第一缓存请求传输至该VIP地址,代理实例即可获得第一缓存请求。
步骤102:根据第一缓存请求,确定与第一缓存请求对应的第一缓存实例。
具体实现中,代理实例获取请求访问或请求记录的数据的键值,根据请求访问或请求记录的数据的键值,确定第一缓存请求对应的哈希值,根据第一缓存请求对应的哈希值,确定第一缓存请求对应的第一缓存实例。
需要说明的是,本领域技术人员可以理解,缓存实例和代理实例可以是同一个服务器,即一个服务器可以同时具备执行缓存请求的转发方法的功能和启动缓存进程的功能,缓存实例和代理实例也可以是不同的服务器。
值得一提的是,由代理实例确定请求访问或请求记录的数据的键值对应的缓存实例,使得客户端仅需要发送请求访问或请求记录的数据的键值至代理实例即可使用缓存资源,不再需要维护请求访问或请求记录的数据的键值、哈希值与缓存实例三者之间的关系,降低了客户端的操作的复杂性。
步骤103:根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例。
以下对代理实例根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例的方法进行具体说明。
具体实现中,代理实例若确定第一缓存实例为存活状态,将第一缓存请求传输至第一缓存实例。代理实例若确定第一缓存实例为挂机状态,发送请求失败信息至客户端或不响应客户端的缓存请求。
具体实现中,代理实例将第一缓存请求传输至第一缓存实例的具体过程如下:代理实例判断第一缓存实例的获取时间所在的时间段内,是否存在与第一缓存实例对应的其他缓存请求;若确定存在,将其他缓存请求与第一缓存请求进行整合,将整合后的缓存请求传输至第一缓存实例。其中,代理实例将其他缓存请求与第一缓存请求进行整合的具体过程为:判断其他缓存请求与第一缓存请求是否相同;若确定是,确定整合后的缓存请求为第一缓存请求。
以下结合实际场景对代理实例将其他缓存请求和第一缓存请求进行整合的过程进行举例说明。由于代理实例可能同时接收到多个客户端的缓存请求,这些缓存请求可能都是转发至同一缓存实例的。比如,代理实例分别接收到三个客户端的缓存请求:get keyxxx,set key xxx 0 0 1,delete key xxx,如果代理实例收到缓存请求就转发,需要转发三次。若使用本实施方式提供的缓存请求的转发方法,代理实例对一个时间段(可自定义,毫秒级)内的缓存请求进行分析,并将对应同一个缓存实例的多个缓存请求进行整合。代理实例在第一时间接收到第一缓存请求(get key xxx),确定第一缓存请求对应第一缓存实例。如果代理实例确定第一时间所在的时间段内存在两个缓存请求(set key xxx 0 0 1,delete key xxx)也是与第一缓存实例对应,但缓存请求并不完全相同,则一次性把三个缓存请求都发给第一缓存实例,提高了代理实例的转发效率。如果代理实例确定第一时间所在的时间段内存在多个缓存请求,多个缓存请求均为get key xxx,代理实例发送第一缓存请求至第一缓存实例。
需要说明的是,本领域技术人员可以理解,代理实例在确定缓存实例为挂机状态后,还可以采取其他措施,本实施方式不限制代理实例在确定缓存实例处于挂机状态后,对缓存请求的具体处理方式。
值得一提的是,代理实例在缓存实例处于存活状态时才将缓存请求传输至缓存实例,避免了缓存实例处于挂机状态时,缓存请求击穿缓存实例直达数据库的情况。
值得一提的是,代理实例在缓存实例处于挂机状态时,返回请求失败信息,避免客户端持续等待缓存实例的响应,导致客户端对用户的操作响应缓慢的情况,提高了客户端的用户的体验。
需要说明的是,本领域技术人员可以理解,代理实例在转发第一缓存请求之前,可以通过发送状态检测指令的方式或其他方式,确定第一缓存实例的状态。
以下对代理实例通过状态检测指令确定第一缓存实例的状态的方法进行说明。代理实例与缓存系统中的所有缓存实例建立连接,并通过该连接发送状态检测指令至第一缓存实例,若确定第一缓存实例对状态检测指令的响应正常,确定第一缓存实例的状态为存活状态,若确定第一缓存实例对状态检测指令的响应异常,确定第一缓存实例的状态为挂机状态。其中,缓存实例为挂机状态的原因可能是缓存实例的进程出现问题,也有可能是缓存实例所在的服务器出现问题,还可能是缓存实例的网络有问题,甚至整个机架或机房出问题。无论是哪种情况,代理实例在确定第一缓存实例对状态检测指令的响应异常后,认为第一缓存实例出现了问题。代理实例在确定缓存实例为挂机状态后,可以继续检测该缓存实例的状态,在确定该缓存实例回复正常后,将访问该缓存实例的缓存请求转发至该缓存实例。
需要说明的是,本领域技术人员可以理解,实际应用中,还可以通过其他方式确定第一缓存实例的状态,此处不一一赘述。
值得一提的是,代理实例通过状态检测指令感知缓存实例的状态变化,便于代理实例及时了解缓存实例的状态,并根据缓存实例的状态,调整对缓存请求的处理方式。
值得一提的是,代理实例可以以守护进程(daemon)形式常驻服务器后台,由于daemon始终与缓存实例保持连接,且该连接为持久连接,缓存实例的状态发生变化时,代理实例能够立即感知到该变化,并根据缓存实例的状态的变化,更改该缓存实例的状态。
以下结合实际情况,对缓存请求的转发方法进行举例说明。假设,用户需要访问的数据的键值为“foo”。用户通过客户端将携带有“foo”的第一缓存请求传输至代理实例。代理实例在接收到第一缓存请求后,读取数据的键值“foo”,并根据读取的数据的键值和预先设置的计算方式,计算键值“foo”对应的哈希值。代理实例根据键值“foo”对应的哈希值,确定是哪个缓存实例记录了用户需要访问的数据。代理实例确定该缓存实例的状态,并在确定该缓存实例为存活状态时,读取该缓存实例的地址,并向该缓存实例发送数据访问请求,以便代理实例从该缓存实例中读取键值为“foo”的数据。
需要说明的是,本领域技术人员可以理解,预先设置的计算方式可以根据需要设置,本实施方式不限制该计算方式的具体规则。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
与现有技术相比,本实施方式中提供的缓存请求的转发方法,在客户端与缓存实例之间增设了代理实例,客户端将缓存请求传输至代理实例,由代理实例根据缓存请求对应的缓存实例的状态确定是否将缓存请求转发至缓存实例,相较于客户端直接将缓存请求传输至缓存实例的方法,充分考虑了缓存实例的状态,避免在缓存实例处于挂机状态时将缓存请求发送至该缓存实例的情况,进而避免了缓存请求击穿缓存实例,直达数据库,导致缓存系统崩溃的情况,提高了缓存系统的稳定性。除此之外,在缓存实例处于挂机状态时,返回请求失败信息,避免客户端持续等待缓存实例的响应,导致客户端对用户的操作响应缓慢的情况,提高了客户端的用户的体验。
本发明的第二实施方式涉及一种缓存请求的转发方法,本实施方式是对第一实施方式的进一步改进,具体改进之处为:在代理实例获取客户端传输的第一缓存请求之前,增加了确定主代理实例发生故障的步骤。
具体的说,如图3所示,在本实施方式中,包含步骤201至步骤204,其中,步骤202、步骤203、步骤204分别与第一实施方式中的步骤101至步骤103大致相同,此处不再赘述。下面主要介绍不同之处:
步骤201:确定主代理实例发生故障。
具体地说,缓存系统中设置有一个主代理实例和N个从代理实例,N为正整数。其中,主代理实例和从代理实例的VIP地址和端口相同。主代理实例正常工作时,由主代理实例执行上述实施方式提及的缓存请求的转发方法。当主代理实例发生故障时,主代理实例由与主代理实例相关联的处于非故障状态的从代理实例中优先级最高的从代理实例接管,该从代理实例替代主代理实例执行上述实施方式提及的缓存请求的转发方法。
以下对代理实例确定主代理实例发生故障的方法进行说明。假设缓存系统中包括一个主代理实例和两个从代理实例(从代理A和从代理B)实例。主代理实例利用开源软件,例如,软件keepalived,通过组播的方式,间隔地发送指示自己的状态的数据包至从代理A和从代理B。如果从代理A和从代理B超过一定时间,仍未接收到主代理实例发送的数据,则认为主代理实例发生故障。缓存系统根据从代理A和从代理B的优先级,确定由哪个从代理实例来取代主代理实例,进行缓存请求的转发。
值得一提的是,缓存系统中设置有从代理实例,从代理实例在确定主代理实例发生故障时,替代主代理对缓存请求进行处理,提高了代理层可用性。
执行步骤202至步骤204。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
与现有技术相比,本实施方式中提供的缓存请求的转发方法,在客户端与缓存实例之间增设了代理实例,客户端将缓存请求传输至代理实例,由代理实例根据缓存请求对应的缓存实例的状态确定是否将缓存请求转发至缓存实例,相较于客户端直接将缓存请求传输至缓存实例的方法,充分考虑了缓存实例的状态,避免在缓存实例处于挂机状态时将缓存请求发送至该缓存实例的情况,进而避免了缓存请求击穿缓存实例,直达数据库,导致缓存系统崩溃的情况,提高了缓存系统的稳定性。除此之外,缓存系统中设置有从代理实例,从代理实例在确定主代理实例发生故障时,替代主代理对缓存请求进行处理,提高了代理层可用性。
本发明第三实施方式涉及一种缓存请求的传输方法,应用于缓存系统的客户端,具体实现中,该客户端可以是各种终端。如图4所示,该缓存请求的传输方法包括以下步骤:
步骤301:生成第一缓存请求。
具体地说,客户端需要访问缓存系统中的数据时,根据需要访问的数据的键值,生成第一缓存请求。客户端需要通过缓存系统记录数据时,根据需要记录的数据和需要记录的数据的键值,生成第一缓存请求。
步骤302:将第一缓存请求传输至第一代理实例。
具体地说,由于缓存系统中的客户端与缓存实例之间增设了代理实例,客户端需要使用缓存资源时,只需要与代理实例建立连接,并将缓存请求传输至代理实例即可。代理实例获取客户端传输的第一缓存请求,根据第一缓存请求,确定与第一缓存请求对应的第一缓存实例,根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例。代理实例确定第一缓存请求的处理方式的方法可以参考本发明的第一实施方式和第二实施方式的相关描述,此处不再赘述。
与现有技术相比,本实施方式中提供的缓存请求的传输方法,客户端需要使用缓存资源时,只需要与代理实例建立连接,并将缓存请求传输至代理实例,不需要进行键值对应的哈希值的计算、缓存实例地址的确定等一系列操作,使得客户端仅需要发送请求访问或请求记录的数据的键值至代理实例即可使用缓存资源,不再需要维护请求访问或请求记录的数据的键值、哈希值与缓存实例三者之间的关系,降低了客户端的操作的复杂性。
本发明的第四实施方式涉及一种缓存请求的传输方法,本实施方式是对第三实施方式进一步改进,具体改进之处为:在将第一缓存请求传输至第一代理实例之后,客户端若确定接收到代理实例传输的请求失败信息,根据请求访问或请求记录的数据,确定第二缓存请求,将第二缓存请求传输至存储有应用的所有数据的数据库对应的服务器;其中,服务器执行第二缓存请求。
具体的说,如图5所示,在本实施方式中,包含步骤401至步骤404,其中,步骤401、步骤402分别与第三实施方式中的步骤301和步骤302大致相同,此处不再赘述。下面主要介绍不同之处:
执行步骤401和步骤402。
步骤403:判断代理实例返回的信息是否为请求失败信息。
具体地说,客户端若确定代理实例不是请求失败信息,结束该缓存请求的传输方法的流程;若确定代理实例返回的信息为请求失败信息,执行步骤404。
步骤404:根据请求访问或请求记录的数据,确定第二缓存请求,将第二缓存请求传输至存储有应用的所有数据的数据库对应的服务器。
例如,客户端需要读取在某个应用的用户表中的用户信息,根据需要读取的用户信息,生成结构化查询语句(即第二缓存请求),并将结构化查询语句(第二缓存请求)传输至存储有应用的所有数据的数据库对应的服务器(以下简称总服务器),总服务器执行结构化查询语句(第二缓存请求)。
需要说明的是,缓存系统可以在总服务器执行完该结构化查询语句后,在其他缓存实例上缓存客户端本次读取的数据,以便客户端后续通过其他缓存实例读取该数据,减少直接访问服务器的缓存请求的数量。
与现有技术相比,本实施方式中提供的缓存请求的传输方法,客户端需要使用缓存资源时,只需要与代理实例建立连接,并将缓存请求传输至代理实例,不需要进行键值对应的哈希值的计算、缓存实例地址的确定等一系列操作,使得客户端仅需要发送请求访问或请求记录的数据的键值至代理实例即可使用缓存资源,不再需要维护请求访问或请求记录的数据的键值、哈希值与缓存实例三者之间的关系,降低了客户端的操作的复杂性。除此之外,在无法从缓存实例中获取所需数据时,客户端可以直接从数据库中获取数据,提高了客户端的可用性。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第五实施方式涉及一种缓存请求的转发装置,如图6所示,包括:获取模块501、第一确定模块502和第二确定模块503。
具体地说,获取模块501用于获取客户端传输的第一缓存请求。第一确定模块502用于根据第一缓存请求,确定与第一缓存请求对应的第一缓存实例。第二确定模块503用于根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例。
不难发现,本实施方式为与第一实施方式相对应的装置实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本发明第六实施方式涉及一种缓存请求的传输装置,如图7所示,包括:生成模块601和传输模块602。生成模块601用于生成第一缓存请求。传输模块602用于将第一缓存请求传输至第一代理实例。其中,第一代理实例获取客户端传输的第一缓存请求;根据第一缓存请求,确定与第一缓存请求对应的第一缓存实例;根据第一缓存实例的状态,确定是否将第一缓存请求传输至第一缓存实例。
不难发现,本实施方式为与第三实施方式相对应的装置实施例,本实施方式可与第三实施方式互相配合实施。第三实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第三实施方式中。
值得一提的是,第五实施方式和第六实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,第五实施方式和第六实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明第五实施方式和第六实施方式中不存在其它的单元。
本发明第七实施方式涉及一种缓存系统,如图8所示,包括:客户端701、代理实例702和缓存实例703,其中,缓存实例703至少包括第一缓存实例704。客户端701用于生成第一缓存请求;将第一缓存请求传输至代理实例。代理实例702用于获取客户端701传输的第一缓存请求;根据第一缓存请求,确定与第一缓存请求对应的第一缓存实例704;根据第一缓存实例704的状态,确定是否将第一缓存请求传输至第一缓存实例。
以下结合实际情况说明缓存系统中客户端、代理实例和缓存实例之间的关系。假如,缓存系统结构如图9所示,缓存系统中有三台服务器,服务器1的IP地址为192.168.100.101,服务器2的IP地址为192.168.100.102,服务器3的IP地址为192.168.100.3。代理实例监听的VIP为192.168.100.104。缓存实例的监听端口为5050,代理实例的监听端口为7878。服务器1上部署有缓存实例1,服务器2上部署有缓存实例2,服务器3上部署有缓存实例3。服务器1上部署有主代理实例,服务器2上部署有从代理实例。
需要说明的是,本领域技术人员可以理解,实际应用中,可以根据需要配置缓存实例的个数、代理实例的个数、代理实例监听端口,以及多个代理实例之间的优先级关系等,本实施方式不限制缓存系统中缓存实例和代理实例的具体配置。
不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本发明第八实施方式涉及一种服务器,如图10所示,包括:至少一个处理器801;以及,与至少一个处理器801通信连接的存储器802;以及,与客户端通信连接的通信组件803,通信组件803在处理器801的控制下接收和发送数据;其中,存储器802存储有可被至少一个处理器801执行的指令,指令被至少一个处理器801执行,以使至少一个处理器801能够执行上述实施方式提及的缓存请求的转发方法。
本发明第九实施方式涉及一种客户端,如图11所示,包括:至少一个处理器901;以及,与至少一个处理器901通信连接的存储器902;以及,与服务器通信连接的通信组件903,通信组件903在处理器901的控制下接收和发送数据;其中,存储器902存储有可被至少一个处理器901执行的指令,指令被至少一个处理器901执行,以使至少一个处理器901能够执行上述实施方式提及的缓存请求的传输方法。
第八实施方式和第九实施方式中,服务器和客户端分别包括一个或多个处理器以及存储器,图10和图11中以一个处理器为例。处理器、存储器可以通过总线或者其他方式连接,图10和图11中以通过总线连接为例。存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述实施方式提及的缓存请求的转发方法或缓存请求的传输方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器中,当被一个或者多个处理器执行时,执行上述任意方法实施方式中的缓存请求的转发方法或缓存请求的传输方法。
上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。
本发明第十实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现第一实施方式和第二实施方式提供的缓存请求的转发方法。
本发明第十一实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现第三实施方式和第四实施方式提供的缓存请求的传输方法。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (18)

1.一种缓存请求的转发方法,其特征在于,应用于代理实例,包括:
获取客户端传输的第一缓存请求;
根据所述第一缓存请求,确定与所述第一缓存请求对应的第一缓存实例;
根据所述第一缓存实例的状态,确定是否将所述第一缓存请求传输至第一缓存实例。
2.根据权利要求1所述的缓存请求的转发方法,其特征在于,所述根据所述第一缓存实例的状态,确定是否将所述第一缓存请求传输至第一缓存实例,具体包括:
若确定所述第一缓存实例为存活状态,将所述第一缓存请求传输至所述第一缓存实例;
若确定所述第一缓存实例为挂机状态,发送请求失败信息至所述客户端或不响应所述客户端的缓存请求。
3.根据权利要求2所述的缓存请求的转发方法,其特征在于,所述将所述第一缓存请求传输至所述第一缓存实例,具体包括:
判断所述第一缓存实例的获取时间所在的时间段内,是否存在与所述第一缓存实例对应的其他缓存请求;
若确定存在,将所述其他缓存请求与所述第一缓存请求进行整合,将整合后的缓存请求传输至所述第一缓存实例。
4.根据权利要求3所述的缓存请求的转发方法,其特征在于,所述将所述其他缓存请求与所述第一缓存请求进行整合,具体包括:
判断所述其他缓存请求与所述第一缓存请求是否相同;
若确定是,确定所述整合后的缓存请求为第一缓存请求。
5.根据权利要求1所述的缓存请求的转发方法,其特征在于,所述根据所述第一缓存实例的状态,确定是否将所述第一缓存请求传输至第一缓存实例之前,所述确定缓存请求的响应方式的方法还包括:
确定所述第一缓存实例的状态。
6.根据权利要求5所述的缓存请求的转发方法,其特征在于,所述确定所述第一缓存实例的状态,具体包括:
发送状态检测指令至所述第一缓存实例;
若确定所述第一缓存实例对所述状态检测指令的响应正常,确定所述第一缓存实例的状态为所述存活状态;
若确定所述第一缓存实例对所述状态检测指令的响应异常,确定所述第一缓存实例的状态为所述挂机状态。
7.根据权利要求1至6中任一项所述的缓存请求的转发方法,其特征在于,在所述获取客户端传输的第一缓存请求之前,所述缓存请求的转发方法还包括:
确定主代理实例发生故障。
8.根据权利要求7所述的缓存请求的转发方法,其特征在于,当主代理实例发生故障时,所述主代理实例由与所述主代理实例相关联的处于非故障状态的从代理实例中优先级最高的从代理实例接管。
9.根据权利要求1至6中任一项所述的缓存请求的转发方法,其特征在于,所述第一缓存请求中包括请求访问或请求记录的数据的键值;
所述根据所述第一缓存请求,确定与所述第一缓存请求对应的第一缓存实例,具体包括:
获取所述请求访问或请求记录的数据的键值;
根据所述请求访问或请求记录的数据的键值,确定所述第一缓存请求对应的哈希值;
根据所述第一缓存请求对应的哈希值,确定所述第一缓存请求对应的第一缓存实例。
10.一种缓存请求的传输方法,其特征在于,包括:
生成第一缓存请求;
将所述第一缓存请求传输至第一代理实例;
其中,所述代理实例获取客户端传输的第一缓存请求;根据所述第一缓存请求,确定与所述第一缓存请求对应的第一缓存实例;根据所述第一缓存实例的状态,确定是否将所述第一缓存请求传输至第一缓存实例。
11.根据权利要求10所述的缓存请求的传输方法,其特征在于,在所述将所述缓存请求传输至代理实例之后,所述缓存请求的传输方法还包括:
若确定接收到所述代理实例传输的请求失败信息,根据请求访问或请求记录的数据,确定第二缓存请求,将所述第二缓存请求传输至存储有应用的所有数据的数据库对应的服务器;其中,所述服务器执行所述第二缓存请求。
12.一种缓存请求的转发装置,其特征在于,包括:获取模块、第一确定模块和第二确定模块;
所述获取模块用于获取客户端传输的第一缓存请求;
所述第一确定模块用于根据所述第一缓存请求,确定与所述第一缓存请求对应的第一缓存实例;
所述第二确定模块用于根据所述第一缓存实例的状态,确定是否将所述第一缓存请求传输至第一缓存实例。
13.一种缓存请求的传输装置,其特征在于,包括:生成模块和传输模块;
所述生成模块用于生成第一缓存请求;
所述传输模块用于将所述第一缓存请求传输至第一代理实例;其中,所述第一代理实例获取客户端传输的第一缓存请求;根据所述第一缓存请求,确定与所述第一缓存请求对应的第一缓存实例;根据所述第一缓存实例的状态,确定是否将所述第一缓存请求传输至第一缓存实例。
14.一种缓存系统,其特征在于,包括:客户端、代理实例和缓存实例;所述缓存实例至少包括第一缓存实例;
所述客户端用于生成第一缓存请求;将所述第一缓存请求传输至代理实例;
所述代理实例用于获取客户端传输的第一缓存请求;根据所述第一缓存请求,确定与所述第一缓存请求对应的第一缓存实例;根据所述第一缓存实例的状态,确定是否将所述第一缓存请求传输至第一缓存实例。
15.一种服务器,其特征在于,包括:至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;以及,
与客户端通信连接的通信组件,所述通信组件在所述处理器的控制下接收和发送数据;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至9任一项所述的缓存请求的转发方法。
16.一种客户端,其特征在于,包括:至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;以及,
与服务器通信连接的通信组件,所述通信组件在所述处理器的控制下接收和发送数据;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求10或11所述的缓存请求的传输方法。
17.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的缓存请求的转发方法。
18.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求10或11所述的缓存请求的传输方法。
CN201811145678.3A 2018-09-29 2018-09-29 一种缓存请求的转发方法、传输方法及相关装置 Active CN109510864B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811145678.3A CN109510864B (zh) 2018-09-29 2018-09-29 一种缓存请求的转发方法、传输方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811145678.3A CN109510864B (zh) 2018-09-29 2018-09-29 一种缓存请求的转发方法、传输方法及相关装置

Publications (2)

Publication Number Publication Date
CN109510864A true CN109510864A (zh) 2019-03-22
CN109510864B CN109510864B (zh) 2022-07-19

Family

ID=65746312

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811145678.3A Active CN109510864B (zh) 2018-09-29 2018-09-29 一种缓存请求的转发方法、传输方法及相关装置

Country Status (1)

Country Link
CN (1) CN109510864B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110535940A (zh) * 2019-08-29 2019-12-03 北京浪潮数据技术有限公司 一种bmc的连接管理方法、系统、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020007392A1 (en) * 2000-07-13 2002-01-17 Buddhikot Milind M. Method and system for data layout and replacement in distributed streaming caches on the internet
CN101764824A (zh) * 2010-01-28 2010-06-30 深圳市同洲电子股份有限公司 一种分布式缓存控制方法、装置及系统
CN103078927A (zh) * 2012-12-28 2013-05-01 合一网络技术(北京)有限公司 一种key-value数据分布式缓存系统及其方法
CN104346285A (zh) * 2013-08-06 2015-02-11 华为技术有限公司 内存访问处理方法、装置及系统
CN104601720A (zh) * 2015-01-30 2015-05-06 乐视网信息技术(北京)股份有限公司 一种缓存访问控制方法及装置
CN107872398A (zh) * 2017-06-25 2018-04-03 平安科技(深圳)有限公司 高并发数据处理方法、装置及计算机可读存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020007392A1 (en) * 2000-07-13 2002-01-17 Buddhikot Milind M. Method and system for data layout and replacement in distributed streaming caches on the internet
CN101764824A (zh) * 2010-01-28 2010-06-30 深圳市同洲电子股份有限公司 一种分布式缓存控制方法、装置及系统
CN103078927A (zh) * 2012-12-28 2013-05-01 合一网络技术(北京)有限公司 一种key-value数据分布式缓存系统及其方法
CN104346285A (zh) * 2013-08-06 2015-02-11 华为技术有限公司 内存访问处理方法、装置及系统
CN104601720A (zh) * 2015-01-30 2015-05-06 乐视网信息技术(北京)股份有限公司 一种缓存访问控制方法及装置
CN107872398A (zh) * 2017-06-25 2018-04-03 平安科技(深圳)有限公司 高并发数据处理方法、装置及计算机可读存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SYNSDENG: "高并发下合并接口请求", 《CSDN》 *
张映: "mysql mha 主从⾃动切换 ⾼可⽤", 《海底苍鹰(TANK)博客》 *
汪翔等: "《WAP建站技术详解与实例》", 31 July 2001, 清华大学出版社 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110535940A (zh) * 2019-08-29 2019-12-03 北京浪潮数据技术有限公司 一种bmc的连接管理方法、系统、设备及存储介质
CN110535940B (zh) * 2019-08-29 2023-01-24 北京浪潮数据技术有限公司 一种bmc的连接管理方法、系统、设备及存储介质

Also Published As

Publication number Publication date
CN109510864B (zh) 2022-07-19

Similar Documents

Publication Publication Date Title
CN106302565B (zh) 业务服务器的调度方法及系统
CN103905572B (zh) 域名解析请求的处理方法及装置
CN108494891A (zh) 一种域名解析方法、服务器及系统
CN106790758B (zh) 一种访问nat网络内部的网络对象的方法及装置
US20130007253A1 (en) Method, system and corresponding device for load balancing
US10230644B2 (en) Distributed API proxy system and apparatus and method for managing traffic in such system
CN108933829A (zh) 一种负载均衡方法及装置
CN111585887B (zh) 基于多个网络的通信方法、装置、电子设备及存储介质
CN109085999A (zh) 数据处理方法及处理系统
CN111193773A (zh) 负载均衡方法、装置、设备及存储介质
WO2014183417A1 (zh) 管理内存的方法、装置和系统
US20220318071A1 (en) Load balancing method and related device
CN109964507A (zh) 网络功能的管理方法、管理单元及系统
CN109561054A (zh) 一种数据传输方法、控制器及接入设备
CN110247812A (zh) 一种多集群管理方法、装置、系统及相关组件
CN109639796A (zh) 一种负载均衡实现方法、装置、设备及可读存储介质
US9760370B2 (en) Load balancing using predictable state partitioning
CN111556123A (zh) 一种基于边缘计算的自适应网络快速配置及负载均衡系统
US9942118B1 (en) Sentinel network devices and sentinel marker
CN109063140A (zh) 一种数据查询方法、中转服务器及计算机可读存储介质
CN109788075B (zh) 专网网络系统、数据的获取方法及边缘服务器
CN109510864A (zh) 一种缓存请求的转发方法、传输方法及相关装置
US9477471B1 (en) Maintaining lock-free, high frequency, high performance counters in software
CN110290196A (zh) 一种内容分发方法及装置
CN110838966B (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