CN111294372B - 一种在代理服务器实现缓存的方法、装置及系统 - Google Patents

一种在代理服务器实现缓存的方法、装置及系统 Download PDF

Info

Publication number
CN111294372B
CN111294372B CN201811490990.6A CN201811490990A CN111294372B CN 111294372 B CN111294372 B CN 111294372B CN 201811490990 A CN201811490990 A CN 201811490990A CN 111294372 B CN111294372 B CN 111294372B
Authority
CN
China
Prior art keywords
data
proxy server
cache
request
nginx
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
Application number
CN201811490990.6A
Other languages
English (en)
Other versions
CN111294372A (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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201811490990.6A priority Critical patent/CN111294372B/zh
Publication of CN111294372A publication Critical patent/CN111294372A/zh
Application granted granted Critical
Publication of CN111294372B publication Critical patent/CN111294372B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种在代理服务器中实现缓存的方法、装置及系统,本发明实施例在互联网网络中的每个nginx代理服务器的接入层设置缓存系统,当终端发送获取数据资源请求时,根据请求的地址信息将获取数据资源请求轮询到第一nginx代理服务器,由第一nginx代理服务器根据分片调度策略确定是否进行其他nginx代理服务器的分片缓存调度,如果是,则调用其他nginx代理服务器执行缓存;如果否,则在本地进行缓存。在对获取数据资源请求进行缓存时,第一nginx代理服务器或调用的其他nginx代理服务器采用设置的缓存策略,即ngx_lua方式将数据资源及数据资源采用的数据逻辑信息进行本地缓存。由于本发明实施例基于ngx_lua方式在互联网网络中实现缓存数据资源时,不是互联网网络中的各个nginx代理服务器互相独立处理,而是协作处理,所以实现了在互联网网络中实现缓存数据的统一管理。

Description

一种在代理服务器实现缓存的方法、装置及系统
技术领域
本发明涉及互联网技术领域,特别涉及一种在代理服务器中实现缓存的方法、装置及系统。
背景技术
互联网网络可以采用各种类型的代理服务器为终端提供互联网数据,比如采用nginx代理服务器为终端提供下载数据资源服务,nginx代理服务器的系统平台可以采用计算机C语言编写,是一个高性能的HTTP和反向代理服务,占用内存少且并发能力强。采用nginx代理服务器为终端下载数据资源时,为了避免重复下载相同的数据资源,在nginx代理服务器中会设置一层缓存,缓存已下载的数据资源,供以后请求相同的数据资源时,直接从缓存中获取提供给终端即可。具体地,可以在nginx代理服务器设置nginx代理缓存(proxy cache)实现数据资源的页面级缓存,设置Java堆缓存实现数据资源的应用级缓存,设置Redis实现数据资源的分布式缓存,这样,就可以直接提升nginx代理服务器的服务响应速度和互联网网络的大数据量的冲击,使得处理的并发能力增强。
但是,在nginx代理服务器采用缓存技术时存在缺点:第一,在nginx代理服务器设置nginx proxy cache实现页面级缓存,需要预先在nginx代理服务器中进行静态配置该nginx proxy cache,然后再重新启动nginx代理服务器,运行该nginx proxy cache,实现缓存数据资源,比较繁琐且不容易实现;第二,在nginx代理服务器采用的Redis实现分布式缓存时,由于Redis仅仅支持单实例Lua计算机脚本语言来实现复杂缓存逻辑,而要实现多实例Lua计算机脚本语言,则需要在nginx代理服务器的应用层对数据资源再进行一次封装处理,很繁琐且不容易实现;第三,nginx代理服务器实现应用级缓存的方案很少,实现复杂,难以实现。
进一步地,申请人在研究后发现,上述方式在nginx代理服务器实现缓存时,都是针对的单一nginx代理服务器,也就是每个nginx代理服务器设置一层或多层缓存,层与层之间的缓存,及不同nginx代理服务器的缓存都是分散的,无法在整个互联网网络中统一管理,在缓存数据时,比较繁琐且不容易实现。
发明内容
有鉴于此,本发明实施例提供一种在代理服务器中实现缓存的方法,该方法能够在互联网网络中实现缓存数据的统一管理。
本发明实施例还提供一种在代理服务器中实现缓存的系统,该系统能够在互联网网络中实现缓存数据的统一管理。
本发明实施例还提供一种在代理服务器中实现缓存的装置,该装置能够在互联网网络中实现缓存数据的统一管理。
本发明实施例是这样实现的:
一种在代理服务器中实现缓存的方法,包括:
第一nginx代理服务器接收获取数据资源请求,所述获取数据资源请求根据地址信息采用域名系统DNS轮询负载方式路由到所述第一nginx代理服务器;
第一nginx代理服务器根据设置的分片调度策略,确定所述获取数据资源请求是否在本地缓存;
如果是,根据所设置的缓存策略,将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存;
如果否,将所述获取数据资源请求分片调度到第二nginx代理服务器,指示第二nginx代理服务器根据设置的缓存策略,将获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存。
所述接收获取数据资源请求由nginx代理服务器的接入层设置的nginx路由分片模块实现,包括:
所述获取数据资源请求通过DNS轮询负载算法进行轮询,路由到所述第一nginx代理服务器上,所述第一nginx代理服务器中的nginx路由分片模块根据设置的缓存文件系统HOST及统一资源定位符URL与所述获取数据资源请求进行匹配,确定接收所述获取数据资源请求。
所述确定所述获取数据资源请求是否在本地缓存包括:
由第一nginx代理服务器中的nginx路由分片模块根据设置的分片算法确定是否是本地缓存,如果是,则不需要分片,直接进行所述本地缓存的步骤;
如果不是,则根据分片算法确定分片调度:重排序获取数据资源请求的URL及请求参数,根据重排序的获取数据资源请求的URL及请求参数得到对应的缓存键值,进行路由,路由到第二nginx代理服务器。
所述指示第二nginx代理服务器执行缓存的步骤之前,该方法还包括:
判断获取数据资源请求的请求数是否达到第二nginx代理服务器的命中设置的获取数据资源请求数,如果是,则在第一nginx代理服务器进行所述本地缓存步骤。
所述指示第二nginx代理服务器执行缓存的步骤之后,还包括:
所述获取数据资源请求增加不再进行分片的参数,所述第二nginx代理服务器识别该所述获取数据资源请求后,不再进行所述获取数据资源请求的二次调度分片。
所述根据所设置的缓存策略,将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存包括:
判断获取数据资源请求是否已经进行了本地缓存,如果否,则直接进行后端服务,按照响应状态码和缓存时间的配置将所请求的数据资源写入到共享字典缓存,将所述请求的数据资源及采用的数据逻辑信息进行SSI,向终端返回响应;
如果是,根据获取数据资源请求的URL和请求参数计算生成缓存Key,根据缓存Key访问对应的第一nginx代理服务器的nginx proxy cache实例,读取缓存的数据资源及数据资源采用的数据逻辑信息;
判断所获取的数据资源及采用的数据逻辑信息是否对应于所述获取数据资源请求,如果是,将所述请求的数据资源及采用的数据逻辑信息进行SSI,向终端返回响应;如果否,按照响应状态码和缓存时间的配置将所请求的数据资源写入到共享字典缓存,将所述请求的数据资源及采用的数据逻辑信息进行SSI,向终端返回响应。
一种在代理服务器中实现缓存的系统,包括:终端及nginx代理服务器,其中,
终端,用于发送获取数据资源请求,所述获取数据资源请求是根据地址信息采用DNS轮询负载方式路由到所述第一nginx代理服务器上;
第一nginx代理服务器,用于根据设置的分片调度策略,确定所述获取数据资源请求是否在本地缓存,如果是,则根据设置的缓存策略,将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存;如果否,则将所述获取数据资源请求路由到所述第二nginx代理服务器,指示所述第二nginx代理服务器处理;
第二nginx代理服务器,用于在第一nginx代理服务器的指示下,根据设置的缓存策略,将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存。
一种在代理服务器中实现缓存的装置,包括:缓存控制模块、nginx路由分片模块及nginx缓存控制模块,其中,
缓存控制模块,用于设置分片调度策略及设置缓存策略;
nginx路由分片模块,用于获取缓存控制模块设置的分片调度策略,接收获取数据资源请求,所述获取数据资源请求是根据地址信息采用DNS轮询负载方式路由的;根据分片调度策略确定所述获取数据资源请求是否在本地缓存,如果是,则指示nginx缓存控制模块执行;如果否,则将所述获取数据资源请求分片调度到第二nginx代理服务器上;
nginx缓存控制模块,用于根据从获取缓存控制模块设置的缓存策略,进行所述获取数据资源请求对应的数据资源及数据资源采用的数据逻辑信息的缓存。
一种在代理服务器中实现缓存的装置,包括:
存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上述任一项所述的在代理服务器中实现缓存的方法。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述任一项所述的在代理服务器中实现缓存的方法。
如上可见,本发明实施例在互联网网络中的每个nginx代理服务器的接入层设置缓存系统,当终端发送获取数据资源请求时,根据请求的地址信息将获取数据资源请求轮询到第一nginx代理服务器,由第一nginx代理服务器根据分片调度策略确定是否进行其他nginx代理服务器的分片缓存调度,如果是,则调用其他nginx代理服务器执行缓存;如果否,则在本地进行缓存。在对获取数据资源请求进行缓存时,第一nginx代理服务器或调用的其他nginx代理服务器采用设置的缓存策略,即ngx_lua方式将数据资源及数据资源采用的数据逻辑信息进行本地缓存。由于本发明实施例基于ngx_lua方式在互联网网络中实现缓存数据资源时,不是互联网网络中的各个nginx代理服务器互相独立处理,而是协作处理,所以实现了在互联网网络中实现缓存数据的统一管理。
附图说明
图1为本发明实施例提供的在代理服务器中实现缓存的方法流程图;
图2为本发明实施例提供的第一nginx代理服务器或第二nginx代理服务器所设置的缓存系统根据所述获取数据资源请求,进行对应的数据资源及数据资源采用的数据逻辑信息的缓存的方法流程图;
图3为本发明实施例提供的在代理服务器中实现缓存的系统结构示意图;
图4为本发明实施例提供的在代理服务器中实现缓存的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
从背景技术可以看出,在互联网网络中实现缓存过程中,各个nginx代理服务器在缓存数据时都是独立执行,即每个nginx代理服务器设置一层或多层缓存,层与层之间的缓存,及不同nginx代理服务器的缓存都是分散的,当缓存数据的nginx代理服务器出现大流量冲击或其他故障时,互联网网络中的其他nginx代理服务器也无法协助处理。因此,本发明实施例在互联网网络中的每个nginx代理服务器的接入层设置缓存系统,当终端发送获取数据资源请求时,根据请求的地址信息将获取数据资源请求轮询到第一nginx代理服务器,由第一nginx代理服务器根据分片调度策略确定是否进行其他nginx代理服务器的分片缓存调度,如果是,则调用其他nginx代理服务器执行缓存;如果否,则在本地进行缓存。在对获取数据资源请求进行缓存时,第一nginx代理服务器或调用的其他nginx代理服务器采用设置的缓存策略,即ngx_lua方式将数据资源及数据资源采用的数据逻辑信息进行本地缓存。由于本发明实施例基于ngx_lua方式在互联网网络中实现缓存数据资源时,不是互联网网络中的各个nginx代理服务器互相独立处理,而是协作处理,所以实现了在互联网网络中实现缓存数据的统一管理。
图1为本发明实施例提供的在代理服务器中实现缓存的方法流程图,在互联网网络中的每个nginx代理服务器的接入层设置缓存系统,其具体步骤为:
步骤101、第一nginx代理服务器所设置的缓存系统接收获取数据资源请求,所述获取数据资源请求是根据地址信息采用域名系统(DNS)轮询负载方式路由到所述第一nginx代理服务器上;
步骤102、第一nginx代理服务器所设置的缓存系统根据设置的分片调度策略,确定所述获取数据资源请求是否在本地缓存,如果是,则执行步骤103,如果否,则执行步骤104;
步骤103、第一nginx代理服务器所设置的缓存系统根据所设置的缓存策略,将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存;
步骤104、第一nginx代理服务器进行分片调度,将所述获取数据资源请求路由到第二nginx代理服务器,指示第二nginx代理服务器所设置的缓存系统根据设置的缓存策略,将获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存。
在该方法中,在互联网网络中的每个nginx代理服务器的接入层设置缓存系统是基于ngx_lua方式实现。
在该方法中,在互联网网络中的每个nginx代理服务器的接入层设置缓存系统由缓存控制系统进行配置,主要配置的内容为:
缓存的文件系统(HOST),包括获取数据资源请求的域名列表;
统一资源定位符(URL),为接收的获取数据资源请求的URL,用来匹配是否进行缓存;
缓存键值(key),与nginx代理服务器的Nginx Proxy Cache配置方式一致,诸如配置为$uri$is_args$args,用来匹配缓存位置;
采用的分片调度算法,包括直接本地缓存(local)、取模算法(modula)、一致性哈希(consisten hash)或者哈希算法(hash);
cache_ssi_lua代码,用于实现SSI(Server Side Include)技术,SSI是一种可以指示服务器动态生成网页内容的超文本标记语言(HTML)扩展脚本,可以在nginx代理服务器的缓存实例上执行数据逻辑,如访问商家接口时可能需要多次请求才能组装完成的情况,也就是执行数据资源采用的数据逻辑信息的缓存;
命中设置的获取数据资源请求数,设置为max_request=100/s,当命中最大设置的获取数据资源请求数时会自动降级为本地缓存;
响应状态码和缓存时间的配置,如可以设置为:cache_valid=200 302 10s。
在该方法中,步骤101中的接收获取数据资源请求具体是由nginx代理服务器的接入层设置缓存系统中的nginx路由分片模块实现的,具体为:
所述获取数据资源请求通过DNS轮询负载算法进行轮询,路由到第一nginx代理服务器上,第一nginx代理服务器中的nginx路由分片模块根据HOST及URL与所述获取数据资源请求进行匹配,确定接收所述获取数据资源请求。
在这里,所述DNS轮询负载算法是根据第一nginx代理服务器的HOST采用推送(PUSH)方式,而不是拉取(PULL)方式,将获取数据资源请求路由到第一nginx代理服务器上,从而避免第一nginx代理服务器调用所述获取数据资源请求。
在该方法中,步骤102的过程是由nginx代理服务器的接入层设置缓存系统中的nginx路由分片模块实现的,具体为:
由第一nginx代理服务器中的nginx路由分片模块根据设置的分片算法确定是否是本地缓存,如果是,则不需要分片,直接进行本地缓存;
如果不是,则根据分片算法确定分片调度:重排序获取数据资源请求的URL及请求参数,避免因为请求参数一样但是请求参数顺序不一致而导致的缓存不一致问题,根据重排序的获取数据资源请求的URL及请求参数得到对应的缓存键值,进行路由,路由到第二nginx代理服务器,如从nginxA实例一致性哈希调度到nginxB实例;
判断获取数据资源请求的请求数是否达到第二nginx代理服务器的命中设置的获取数据资源请求数,如果是,则在第一nginx代理服务器本地缓存,这样防止将第二nginx代理服务器如遇到秒杀等访问场景时导致冲击太大不可用,这正是如背景技术中的Twemproxy和Redis缓存技术没有的特性。
在分片调度后,所述获取数据资源请求增加不再进行分片的参数,即distribution=0,则第二nginx代理服务器识别该所述获取数据资源请求后,对所述请求不再进行二次分片调度了,避免了分片循环。
本发明实施例提供的nginx代理服务器是采用nginx proxy cache实例实现的,该nginx proxy cache实例即是分片服务器也是缓存服务器,当互联网网络中的nginx代理服务器的数量超过10台时,有十分之一的几率将获取数据资源请求路由到nginx代理服务器上,这是如背景技术中的Twemproxy和Redis技术没有的特性。
图2为本发明实施例提供的第一nginx代理服务器或第二nginx代理服务器器所设置的缓存系统根据所述获取数据资源请求,进行对应的数据资源及数据资源采用的数据逻辑信息的缓存的方法流程图,其具体步骤为:
步骤201、所设置的缓存系统获取得到缓存策略;
步骤202、所设置的缓存系统根据缓存策略,判断获取数据资源请求是否已经进行本地缓存,如果否,则直接进行后端服务,执行步骤207;如果是,则执行步骤203;
步骤203、根据获取数据资源请求的URL和请求参数计算生成缓存Key,根据缓存Key访问对应的第一nginx代理服务器的nginx proxy cache实例,读取缓存的数据资源;
在本步骤中,采用ngx_lua方式中的共享字典lua_shared_dict,获取缓存数据,lua_share_dict每500M流量进行一次配置,从而减少锁竞争,通过给第一nginx代理服务器配置大内存,比如256GB大内存提升单机的缓存能力;
步骤204、在执行步骤203的同时,获取数据资源采用的数据逻辑信息;
在这里,采用所设置的cache_ssi lua代码获取数据资源采用的数据逻辑信息;
步骤205、判断所获取的数据资源及采用的数据逻辑信息是否命中,即是否匹配于所述获取数据资源请求,如果是,则执行步骤206;如果否,则执行步骤207;
步骤206、采用所设置的cache_ssi_lua代码对所获取的数据资源及采用的数据逻辑信息进行SSI,并向终端返回响应;
步骤207、访问后端服务,按照设置的cache_valid规则将所请求的数据资源写入到共享字典缓存,并执行cache_ssi_lua代码进行SSI,向终端返回响应。
图3为本发明实施例提供的在代理服务器中实现缓存的系统结构示意图,如图所示,包括:终端及nginx代理服务器,在每个nginx代理服务器的接入层设置缓存系统,其中,
终端,用于发送获取数据资源请求,所述获取数据资源请求是根据地址信息采用DNS轮询负载方式路由到所述第一nginx代理服务器上;
第一nginx代理服务器,用于所设置的缓存系统根据设置的分片调度策略,确定所述获取数据资源请求是否在本地缓存,如果是,则所设置的缓存系统根据设置的缓存策略,将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存;如果否,则将所述获取数据资源请求路由到所述第二nginx代理服务器,指示所述第二nginx代理服务器处理;
第二nginx代理服务器,用于在第一nginx代理服务器的指示下,所设置的缓存系统根据设置的缓存策略,将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存。
在该系统中,所述每个nginx代理服务器的接入层设置缓存系统是基于ngx_lua方式实现。
图4为本发明实施例提供的在代理服务器中实现缓存的装置结构示意图,包括:缓存控制模块、nginx路由分片模块及nginx缓存控制模块,其中,
缓存控制模块,用于设置分片调度策略及设置nginx缓存策略;
nginx路由分片模块,用于获取缓存控制模块设置的分片调度策略,接收获取数据资源请求,所述获取数据资源请求是根据地址信息采用DNS轮询负载方式路由的;根据分片调度策略确定所述获取数据资源请求是否在本地缓存,如果是,则指示nginx缓存控制模块执行;如果否,则将所述获取数据资源请求分片调度到第二nginx代理服务器上;
nginx缓存控制模块,用于根据从获取缓存控制模块设置的nginx缓存测量,进行所述获取数据资源请求对应的数据资源及数据资源采用的数据逻辑信息的缓存。
本发明实施例还提供一种在代理服务器中实现缓存的装置,包括:
存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上述任一项所述的在代理服务器中实现缓存的方法。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述任一项所述的在代理服务器中实现缓存的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (10)

1.一种在代理服务器中实现缓存的方法,其特征在于,包括:
第一nginx代理服务器接收获取数据资源请求,所述获取数据资源请求根据地址信息采用域名系统DNS轮询负载方式路由到所述第一nginx代理服务器;
第一nginx代理服务器根据设置的分片调度策略,确定所述获取数据资源请求是否在本地缓存;
如果是,根据所设置的缓存策略,将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存;
如果否,将所述获取数据资源请求分片调度到第二nginx代理服务器,指示第二nginx代理服务器根据设置的缓存策略,将获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存;
其中,所述第一nginx代理服务器通过ngx_lua方式将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存;
其中,所述根据所设置的缓存策略,将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存包括:
若判断获取数据资源请求已经进行了本地缓存,则根据获取数据资源请求的URL和请求参数计算生成缓存Key,根据缓存Key访问对应的第一nginx代理服务器的nginx proxycache实例,读取缓存的数据资源及数据资源采用的数据逻辑信息;
若判断所获取的数据资源及采用的数据逻辑信息不对应于所述获取数据资源请求,则按照响应状态码和缓存时间的配置将所请求的数据资源写入到共享字典缓存,将所述请求的数据资源及采用的数据逻辑信息进行SSI,向终端返回响应。
2.如权利要求1所述的方法,其特征在于,所述接收获取数据资源请求由nginx代理服务器的接入层设置的nginx路由分片模块实现,包括:
所述获取数据资源请求通过DNS轮询负载算法进行轮询,路由到所述第一nginx代理服务器上,所述第一nginx代理服务器中的nginx路由分片模块根据设置的缓存文件系统HOST及统一资源定位符URL与所述获取数据资源请求进行匹配,确定接收所述获取数据资源请求。
3.如权利要求1所述的方法,其特征在于,所述确定所述获取数据资源请求是否在本地缓存包括:
由第一nginx代理服务器中的nginx路由分片模块根据设置的分片算法确定是否是本地缓存,如果是,则不需要分片,直接进行所述本地缓存的步骤;
如果不是,则根据分片算法确定分片调度:重排序获取数据资源请求的URL及请求参数,根据重排序的获取数据资源请求的URL及请求参数得到对应的缓存键值,进行路由,路由到第二nginx代理服务器。
4.如权利要求3所述的方法,其特征在于,所述指示第二nginx代理服务器执行缓存的步骤之前,该方法还包括:
判断获取数据资源请求的请求数是否达到第二nginx代理服务器的命中设置的获取数据资源请求数,如果是,则在第一nginx代理服务器进行所述本地缓存步骤。
5.如权利要求3或4所述的方法,其特征在于,所述指示第二nginx代理服务器执行缓存的步骤之后,还包括:
所述获取数据资源请求增加不再进行分片的参数,所述第二nginx代理服务器识别该所述获取数据资源请求后,不再进行所述获取数据资源请求的二次调度分片。
6.如权利要求1或3所述的方法,其特征在于,所述方法还包括:
若判断获取数据资源请求未进行本地缓存,则直接进行后端服务,按照响应状态码和缓存时间的配置将所请求的数据资源写入到共享字典缓存,将所述请求的数据资源及采用的数据逻辑信息进行SSI,向终端返回响应;
若判断所获取的数据资源及采用的数据逻辑信息对应于所述获取数据资源请求,则,将所述请求的数据资源及采用的数据逻辑信息进行SSI,向终端返回响应。
7.一种在代理服务器中实现缓存的系统,其特征在于,包括:终端及nginx代理服务器,其中,
终端,用于发送获取数据资源请求,所述获取数据资源请求是根据地址信息采用DNS轮询负载方式路由到第一nginx代理服务器上;
所述第一nginx代理服务器,用于根据设置的分片调度策略,确定所述获取数据资源请求是否在本地缓存,如果是,则根据设置的缓存策略,将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存;如果否,则将所述获取数据资源请求路由到第二nginx代理服务器,指示所述第二nginx代理服务器处理;
所述第二nginx代理服务器,用于在所述第一nginx代理服务器的指示下,根据设置的缓存策略,将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存;
其中,所述第一nginx代理服务器,用于通过ngx_lua方式将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存;
其中,
所述第一nginx代理服务器,具体用于若判断获取数据资源请求已经进行了本地缓存,则根据获取数据资源请求的URL和请求参数计算生成缓存Key,根据缓存Key访问对应的第一nginx代理服务器的nginx proxy cache实例,读取缓存的数据资源及数据资源采用的数据逻辑信息;若判断所获取的数据资源及采用的数据逻辑信息不对应于所述获取数据资源请求,则按照响应状态码和缓存时间的配置将所请求的数据资源写入到共享字典缓存,将所述请求的数据资源及采用的数据逻辑信息进行SSI,向终端返回响应。
8.一种在代理服务器中实现缓存的装置,其特征在于,包括:缓存控制模块、nginx路由分片模块及nginx缓存控制模块,其中,
缓存控制模块,用于设置分片调度策略及设置缓存策略;
nginx路由分片模块,用于获取缓存控制模块设置的分片调度策略,接收获取数据资源请求,所述获取数据资源请求是根据地址信息采用DNS轮询负载方式路由的;根据分片调度策略确定所述获取数据资源请求是否在本地缓存,如果是,则指示nginx缓存控制模块执行;如果否,则将所述获取数据资源请求分片调度到第二nginx代理服务器上;
nginx缓存控制模块,用于根据从获取缓存控制模块设置的缓存策略,进行所述获取数据资源请求对应的数据资源及数据资源采用的数据逻辑信息的缓存;
其中,所述nginx缓存控制模块,用于通过ngx_lua方式将所述获取数据资源请求进行对应的数据资源及数据资源采用的数据逻辑信息的缓存;
其中,所述nginx缓存控制模块,具体用于若判断获取数据资源请求已经进行了本地缓存,则根据获取数据资源请求的URL和请求参数计算生成缓存Key,根据缓存Key访问对应的第一nginx代理服务器的nginx proxy cache实例,读取缓存的数据资源及数据资源采用的数据逻辑信息;若判断所获取的数据资源及采用的数据逻辑信息不对应于所述获取数据资源请求,则按照响应状态码和缓存时间的配置将所请求的数据资源写入到共享字典缓存,将所述请求的数据资源及采用的数据逻辑信息进行SSI,向终端返回响应。
9.一种在代理服务器中实现缓存的装置,其特征在于,包括:
存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1-6中任一项所述的在代理服务器中实现缓存的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6中任一项所述的在代理服务器中实现缓存的方法。
CN201811490990.6A 2018-12-07 2018-12-07 一种在代理服务器实现缓存的方法、装置及系统 Active CN111294372B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811490990.6A CN111294372B (zh) 2018-12-07 2018-12-07 一种在代理服务器实现缓存的方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811490990.6A CN111294372B (zh) 2018-12-07 2018-12-07 一种在代理服务器实现缓存的方法、装置及系统

Publications (2)

Publication Number Publication Date
CN111294372A CN111294372A (zh) 2020-06-16
CN111294372B true CN111294372B (zh) 2023-04-07

Family

ID=71023100

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811490990.6A Active CN111294372B (zh) 2018-12-07 2018-12-07 一种在代理服务器实现缓存的方法、装置及系统

Country Status (1)

Country Link
CN (1) CN111294372B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112468583B (zh) * 2020-11-26 2023-09-15 福建天泉教育科技有限公司 一种api网关的信息处理方法与终端
CN112785729A (zh) * 2020-12-30 2021-05-11 深圳市顺易通信息科技有限公司 一种停车费减免的处理方法及装置
CN114936192B (zh) * 2022-07-19 2022-10-28 成都新橙北斗智联有限公司 一种文件动态压缩混淆和双向缓存方法及系统
CN117724852B (zh) * 2024-02-07 2024-05-07 微网优联科技(成都)有限公司 一种云电脑计算资源分配方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102480529A (zh) * 2010-11-24 2012-05-30 北京无线恒远科技有限公司 实现广域网负载均衡的域名解析方法及域名解析服务器
CN104852964A (zh) * 2015-04-10 2015-08-19 北京金和软件股份有限公司 一种多功能服务器调度方法
CN105100242A (zh) * 2015-07-24 2015-11-25 北京奇虎科技有限公司 一种数据处理方法和系统
CN108462751A (zh) * 2018-03-23 2018-08-28 上海地面通信息网络股份有限公司 一种反向代理系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023939B (zh) * 2011-09-26 2017-10-20 中兴通讯股份有限公司 在Nginx上实现云缓存的REST接口的方法和系统
CN104426979B (zh) * 2013-09-04 2018-02-16 中国科学院声学研究所 一种基于社交关系的分布式缓存调度系统与方法
CN107967270A (zh) * 2016-10-19 2018-04-27 北京京东尚科信息技术有限公司 实现多功能缓存的方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102480529A (zh) * 2010-11-24 2012-05-30 北京无线恒远科技有限公司 实现广域网负载均衡的域名解析方法及域名解析服务器
CN104852964A (zh) * 2015-04-10 2015-08-19 北京金和软件股份有限公司 一种多功能服务器调度方法
CN105100242A (zh) * 2015-07-24 2015-11-25 北京奇虎科技有限公司 一种数据处理方法和系统
CN108462751A (zh) * 2018-03-23 2018-08-28 上海地面通信息网络股份有限公司 一种反向代理系统

Also Published As

Publication number Publication date
CN111294372A (zh) 2020-06-16

Similar Documents

Publication Publication Date Title
CN111294372B (zh) 一种在代理服务器实现缓存的方法、装置及系统
US10110695B1 (en) Key resource prefetching using front-end optimization (FEO) configuration
US10042948B2 (en) Identifying correlated components of dynamic content
US6701415B1 (en) Selecting a cache for a request for information
US7877463B2 (en) Method and systems for providing access to dynamic content via static pages
US7797432B2 (en) Sharing state information between dynamic web page generators
US20090182941A1 (en) Web Server Cache Pre-Fetching
CN105100294B (zh) 获取网页的方法、系统、网络服务器、浏览器和gslb
US9298455B1 (en) Provisional execution of dynamic content component
EP1662405A1 (en) Method of displaying data on a client computer
US20030065810A1 (en) Selective edge processing of dynamically generated content
US9088462B2 (en) Common web accessible data store for client side page processing
EP2512101B1 (en) Method and system to pre-fetch user-specific HTTP requests for web applications
US8234402B2 (en) Method and apparatus for request routing
AU2008355023A1 (en) Generating sitemaps
CN113438302A (zh) 动态资源多级缓存方法、系统、计算机设备及存储介质
CN112104703A (zh) cookie管理方法、中间节点及webvpn系统
US10530709B2 (en) Container contract for data dependencies
US7930479B2 (en) System and method for caching and retrieving from cache transaction content elements
CN112948011B (zh) 一种二级页面加载的方法及装置
US11716405B1 (en) System and method for identifying cache miss in backend application
CN110020076B (zh) 网页数据爬取的方法和装置
CN107451182A (zh) 基于Appcache 的文件缓存方法
US20080016219A1 (en) Conditional URL For Computer Devices
CN113127787A (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