CN110650182B - 网络缓存方法、装置、计算机设备及存储介质 - Google Patents
网络缓存方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110650182B CN110650182B CN201910815153.4A CN201910815153A CN110650182B CN 110650182 B CN110650182 B CN 110650182B CN 201910815153 A CN201910815153 A CN 201910815153A CN 110650182 B CN110650182 B CN 110650182B
- Authority
- CN
- China
- Prior art keywords
- request
- splicing
- client
- splicing result
- return message
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种网络缓存方法、装置、计算机设备及存储介质,该方法包括:获取客户端的每一首次请求,根据请求获取每一返回报文,请求为首次请求;将与每一返回报文对应的第一请求地址和第一参数进行拼接,得到第一拼接结果;将每一返回报文与每一第一拼接结果对应存储于预设表中;获取客户端的新发请求对应的第二请求地址和第二参数;将第二请求地址与第二参数进行拼接,得到第二拼接结果;将第二拼接结果与预设表中的第一拼接结果进行匹配,若第二拼接结果与第一拼接结果匹配成功,则将匹配成功的第一拼接结果对应的返回报文返回至客户端。本发明的技术方案可以实现各种大小文件的命中,提高网络缓存效率。
Description
技术领域
本发明属于云存储领域,更具体地说,是涉及一种网络缓存方法、装置、计算机设备及存储介质。
背景技术
网络缓存,是指将网络资源缓存到缓存服务器(或其它中间设备)中,当客户端发起请求时,如果网络资源存在于缓存服务器且未过期,则可以由缓存服务器直接返回与请求对应的网络资源至客户端,不用到源服务器上获取,减少了源服务器的访问压力,同时也加快了对客户端的请求的响应。
在网络缓存的技术中,当需要判断网络缓存中是否存在与客户端的请求相应的网络资源时,传统的方式是采用文件特征值(例如MD5)来判断,由于文件特征值需要读完整个文件才能获取到,因此这种方式效率较低,缓存服务器的系统开销也比较大。另外,传统的方式只能命中大媒体或大文件,对于一些小流量的请求不能命中,而现在网络资源的访问更多的是进行一些小流量的资源访问,例如浏览一个新闻,传统的网络缓存无法满足这方面的需求,使得客户端要经常访问源服务器,访问的过程比较缓慢,网络缓存的效率较低。
发明内容
本发明实施例提供一种网络缓存方法、装置、计算机设备及存储介质,以解决目前网络缓存效率较低的问题。
一种网络缓存方法,包括:
获取客户端的每一首次请求,根据所述首次请求获取每一返回报文;
将与每一所述返回报文对应的第一请求地址和第一参数进行拼接,得到第一拼接结果;
将每一所述返回报文与每一所述第一拼接结果对应存储于预设表中;
获取所述客户端的新发请求对应的第二请求地址和第二参数;
将所述第二请求地址与所述第二参数进行拼接,得到第二拼接结果;
将所述第二拼接结果与所述预设表中的所述第一拼接结果进行匹配,若所述第二拼接结果与所述第一拼接结果匹配成功,则将匹配成功的所述第一拼接结果对应的所述返回报文返回至所述客户端。
一种网络缓存装置,包括:
报文获取模块,用于获取客户端的每一首次请求,根据所述首次请求获取每一返回报文;
第一拼接模块,用于将与每一所述返回报文对应的第一请求地址和第一参数进行拼接,得到第一拼接结果;
数据缓存模块,用于将每一所述返回报文与每一所述第一拼接结果对应存储于预设表中;
请求获取模块,用于获取所述客户端的新发请求对应的第二请求地址和第二参数;
第二拼接模块,用于将所述第二请求地址与所述第二参数进行拼接,得到第二拼接结果;
报文返回模块,用于将所述第二拼接结果与所述预设表中的所述第一拼接结果进行匹配,当所述第二拼接结果与所述第一拼接结果匹配成功时,将匹配成功的所述第一拼接结果对应的所述返回报文返回至所述客户端。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述网络缓存方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述网络缓存方法。
上述网络缓存方法、装置、计算机设备及存储介质,通过请求地址加参数的方式来进行网络缓存和判断服务端是否存在相同的网络缓存资源,与传统的文件特征值相比,一方面由于可以直接获取到请求地址和参数,不需要读完整个文件,因此对服务端的系统来说开销较小,效率更高;另一方面由于客户端每一个请求均对应有请求地址和参数,因此服务端不仅可以命中大媒体和大文件,也可以命中小媒体和小文件,命中范围更广,满足现在人们更多对小文件获取的需求,加快了对客户端的响应,提高了服务端提供缓存的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中网络缓存方法的一应用环境示意图;
图2是本发明一实施例中网络缓存方法的一流程图;
图3是本发明一实施例中网络缓存方法的另一流程图;
图4是本发明一实施例中网络缓存方法的另一流程图;
图5是本发明一实施例中网络缓存方法的另一流程图;
图6是本发明一实施例中网络缓存方法的另一流程图;
图7是本发明一实施例中网络缓存方法的另一流程图;
图8是本发明一实施例中网络缓存装置的一原理框图;
图9是本发明一实施例中网络缓存装置的另一原理框图;
图10是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供的网络缓存方法,可应用在如图1的应用环境中,其中,客户端通过网络与服务端进行通信,服务端获取客户端的每一首次请求,根据首次请求获取每一返回报文;将与每一返回报文对应的第一请求地址和第一参数进行拼接,得到第一拼接结果;将每一返回报文与每一第一拼接结果对应存储于预设表中;获取客户端的新发请求对应的第二请求地址和第二参数;将第二请求地址与第二参数进行拼接,得到第二拼接结果;将第二拼接结果与预设表中的第一拼接结果进行匹配,若第二拼接结果与第一拼接结果匹配成功,则将匹配成功的第一拼接结果对应的返回报文返回至客户端。其中,客户端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务端可以用独立的服务器或者是多个服务器组成的服务器集群来实现。应当说明的是,本申请中服务端是指用于网络缓存的服务器或服务器集群。
在一实施例中,如图2所示,提供一种网络缓存方法,以该方法应用在图1中的服务端为例进行说明,包括如下步骤:
S101:获取客户端的每一首次请求,根据首次请求获取每一返回报文。
具体地,服务端接收客户端每一个发出的首次请求,然后根据客户端的首次请求到源服务器获取每一返回报文。其中,首次请求是指在服务端中未出现过的请求。可选地,当服务端接收到客户端发出的请求时,将该请求与历史请求记录进行匹配,若无匹配的结果,则判定该请求为首次请求。客户端的请求可以由用户通过操作客户端触发,例如用户在客户端点击一个网页链接、点击一个APP或点击一个图片等操作。源服务器为返回报文的原始存储位置,当服务端接收到客户端的首次请求时,服务端从源服务器根据客户端的请求获取对应的返回报文。服务端在获取到返回报文时,将返回报文返回至客户端,同时将返回报文保存在服务端的数据库中作为网络缓存。
S102:将与每一返回报文对应的第一请求地址和第一参数进行拼接,得到第一拼接结果。
其中,第一参数为第一请求地址对应的参数,可以由服务端获取。应当说明的是,第一请求地址与第一参数的组合可以唯一对应一个返回报文。与传统的文件特征值(如MD5)相比,第一请求地址与第一参数可以一开始就由服务端获取,而不需要读完整个返回报文才能获取,因此系统的开销较小,效率更高。
例如:第一请求地址为:http://a.b.com/queryData.do,第一参数为:a_key=a_data;b_key=b_data,那么第一拼接结果为:http://a.b.com/queryData.do?a_key=a_data&b_key=b_data。
S103:将每一返回报文与每一第一拼接结果对应存储于预设表中。
其中,预设表可以服务端中普通的数据表,只要可以记录每一返回报文与每一第一拼接结果的对应关系即可。可选地,服务端将每一返回报文与每一第一拼接结果对应存储于哈希映射(hashmap)中,其中,hashmap是基于哈希表的Map接口的实现。
具体地,在存储于hashmap时,可以将每一返回报文作为键(key),将对应的每一第一拼接结果作为值(value)进行存储。
S104:获取客户端的新发请求对应的第二请求地址和第二参数。
应当说明的是,步骤S104可以与上述步骤S101-S103同步进行,也可以在执行完步骤S101-S103之后进行。其中,客户端的新发请求是指客户端新发出的非首次的请求。可选地,服务端对接收到的客户端的请求进行判断,若判定为非首次请求,则判定该请求为新发请求。
具体地,服务端对客户端进行检测,若接收到客户端的新发请求,则读取新发请求对应的第二请求地址和第二参数。
S105:将第二请求地址与第二参数进行拼接,得到第二拼接结果。
本步骤与前述步骤S102的方法相同,这里不再赘述。
S106:将第二拼接结果与预设表中的第一拼接结果进行匹配,若第二拼接结果与第一拼接结果匹配成功,则将匹配成功的第一拼接结果对应的返回报文返回至客户端。
具体地,服务端将第二拼接结果与预设表中的每一第一拼接结果进行一一比对,若根据第二拼接结果可以在预设表中找到相同的第一拼接结果,表示匹配成功,则服务端根据第一拼接结果找到对应的返回报文返回给客户端,从而省去了到源服务器获取返回报文的过程,加快对客户端的响应。若第二拼接结果与预设表中的每一第一拼接结果都不相同,表示匹配失败,则服务端将客户端的新发请求发送至源服务器获取返回报文后再返回至客户端。
例如:若第二请求地址为:http://a.b.com/queryData.do?,第二参数为:a_key=a_data;b_key=b_data,则第二拼接结果为:http://a.b.com/queryData.do?a_key=a_data&b_key=b_data,而在预设表中存在相同的第一拼接结果,表示匹配成功,服务端根据预设表获取相应的返回报文返回至客户端;
又例如:若第二请求地址为:http://a.b.com/queryData.do?,第二参数为:c_key=c_data;d_key=d_data,则第二拼接结果为http://a.b.com/insertData.do?c_key=c_data&d_key=d_data,而在预设表中不存在相同的第一拼接结果,表示匹配失败,服务端根据第二请求地址从源服务器获取返回报文后再返回至客户端。
在图2对应的实施例中,通过请求地址加参数的方式来进行网络缓存和判断服务端是否存在相同的网络缓存资源,与传统的文件特征值相比,一方面由于可以直接获取到请求地址和参数,不需要读完整个文件,因此对服务端的系统来说开销较小,效率更高;另一方面由于客户端每一个请求均对应有请求地址和参数,因此服务端不仅可以命中大媒体和大文件,也可以命中小媒体和小文件,命中范围更广,满足现在人们更多对小文件获取的需求,加快了对客户端的响应,提高了服务端提供缓存的效率。
在一实施例中,如图3所示,在步骤S104之后,即在获取客户端的新发请求对应的第二请求地址和第二参数之后,本实施例提供的网络缓存方法还包括以下步骤:
S201:获取负载参数值和/或已接收请求的个数。
其中,负载参数为服务端硬件负载的参数,例如硬盘、CPU或内存等的使用率等。当服务端为多台计算机组成时,负载参数可以为单台计算机的负载参数,也可以为多台计算机平均的负载参数。负载参数值可以由服务端对相应的硬件负载进行监测获取。已接收请求为服务端已接收到的且未响应的客户端的请求。已接收请求的个数可以由服务端进行相应的计数后获取。
S202:若负载参数值超过预设负载阈值和/或已接收请求的个数超过预设请求个数,则将客户端的新发请求写入阻塞队列。
其中,预设负载阈值可以根据实际需要进行设定,例如,将CPU使用率为80%作为预设负载阈值,若实际负载参数值大于80%,则服务端将客户端的新发请求写入阻塞队列。也可以对多个负载参数值进行设置预设负载阈值,当设置的负载参数值中的至少一个超过预设负载阈值时,将客户端的新发请求写入阻塞队列。例如,将CPU使用率为80%,内存使用率为85%作为预设负载阈值,当实际的CPU使用率和内存使用率中的一个或者两个超过到预设负载阈值时,将客户端的新发请求写入阻塞队列。
预设请求个数也可以根据实际需要进行设定,例如,将预设请求个数设为30个,当服务端计算已接收请求大于30个时,将客户端的新发请求写入阻塞队列。
阻塞队列为一链式数据结构,数据从尾部输入,从头部读出,遵循先进先出原则。阻塞队列在传统队列中加了阻塞功能,除了保证同时仅仅有一个线程操作队列外,还有一个重要的功能为阻塞:当队列空时读取队列请求被阻塞,需等待队列非空时才可以读出数据;当队列满时,输入队列被阻塞,需要等待队列非满时才能被输入数据。
可以理解的是,负载参数值或已接收请求均可以表征服务端的负载的轻重程度。传统的网络缓存方式中,由于没有对服务端的负载参数值或已接收请求有所限制,因此容易发生服务端崩溃的情况。在本实施例中,通过对负载参数值和/或已接收请求的限定,使服务端处于高负载时将客户端的新发请求写入阻塞队列,使用阻塞队列缓解服务端受到的压力,避免出现服务端崩溃的情况,提高服务端提供缓存的稳定性。
S203:当客户端的新发请求被读出阻塞队列时,执行将第二请求地址与第二参数进行拼接,得到第二拼接结果的步骤。
当写入阻塞队列的新发请求被读出阻塞队列时,服务端继续执行步骤S105及之后的步骤,即执行将第二请求地址与第二参数进行拼接,得到拼接结果及之后的步骤。
在图3对应的实施例中,通过对负载参数值和/或已接收请求的个数进行限定,使服务端处于高负载时启用阻塞队列,缓解服务端的使用压力,避免出现服务端溃的情况,提高服务端提供缓存的稳定性。
在一实施例中,如图4所示,在步骤S104之后,即在获取客户端的新发请求对应的第二请求地址和第二参数之后,本实施例提供的网络缓存方法还包括以下步骤:
S301:将客户端的新发请求对应的SOCKET流地址写入阻塞队列。
其中,SOCKET是对HTTP中TCP/IP协议的封装,提供了数据交互的通道,客户端与服务端或源服务器的交互都需要通过SOCKET提供的通道。由于客户端可能发生多个不同应用程序发出请求,不同应用程序的端口是不一样的,而SOCKET可以记录这些不同的应用程序的端口信息,因此通过SOCKET可以将数据准确地返回客户端的不同的应用程序。
SOCKET流地址记录了SOCKET流的地址信息,SOCKET流直接与返回报文相关联,返回报文通过SOCKET流返回至客户端。本实施例中,将SOCKET流地址写入阻塞队列而不将SOCKET流写入阻塞队列,可以防止阻塞队列的数据量过大,同时也减少了将数据写入阻塞队列的耗时。
S302:若SOCKET流地址被读出阻塞队列,则执行将第二请求地址与第二参数进行拼接,得到第二拼接结果的步骤。
当SOCKET流地址被读出阻塞队列时,服务端执行步骤S105及之后的步骤,即执行将第二请求地址与第二参数进行拼接,得到第二拼接结果及之后的步骤。
S303:当第二拼接结果与预设表中的第一拼接结果匹配成功时,将返回报文按照SOCKET流地址对应的SOCKET流返回至客户端。
当客户端的新发请求对应的第二拼接结果与预设表中的第一拼接结果匹配成功时,服务端根据匹配成功的第一拼接结果获取对应的返回报文,然后根据SOCKET流地址对应的SOCKET流将返回报文返回至客户端的具体应用程序中。
在图4对应的实施例中,通过将客户端的请求对应的SOCKET流地址写入阻塞队列,一方面启用阻塞队列提高了服务端的稳定性,另一方面减少了将数据写入阻塞队列的耗时,提高了阻塞队列的效率。
在一实施例中,如图5所示,在步骤S103之后,即在将每一返回报文与每一第一拼接结果对应存储于预设表中之后,本实施例提供的网络缓存方法还包括以下步骤:
S401:获取预设表中每一返回报文的访问次数。
访问次数可以为在规定的时间内的访问次数,例如,3h、6h或10h等时间内的访问次数;也可以换算为单位时间内的访问次数,例如1h对应的访问次数。返回报文的访问次数可以由匹配成功后,匹配成功对应的返回报文被返回客户端的次数获得。
S402:若返回报文的访问次数低于预设次数阈值,则将返回报文存入外部存储装置。
其中,预设次数阈值可以根据实际需要进行设定,例如,将3h内1次作为预设次数阈值,若其中一个返回报文在3h内访问次数少于1次时,则服务端将返回报文存入外部存储装置。外部存储装置可以为硬盘或光盘等存储装置。
当返回报文的访问次数大于或等于预设次数阈值时,服务端将这些返回报文存入内存。可以理解,将访问次数较少的存入外部存储装置,可以减少数据对服务端内存的占用空间,同时将访问次数较多的存入内存,可以加快服务端对客户端的响应速度。
S403:获取返回报文在外部存储装置中的存储位置,根据存储位置更新预设表。
当返回报文存入外部存储装置后,服务端获取该返回报文的存储位置,然后将返回报文的存储位置更新在第一拼接结果的对应值中,此时第一拼接结果与返回报文的存储位置相对应。
S404:当第二拼接结果与第一拼接结果匹配成功时,若第一拼接结果对应的值为存储位置,则根据存储位置从外部存储装置中获取返回报文返回客户端。
由于预设表中的访问次数较少的返回报文被替换为存储位置,因此若服务端在后续接收的客户端的新发请求中,有新发请求与存入外部存储装置的返回报文相对应时,服务端根据预设表中的存储位置从外部存储装置获取相应的返回报文,再将返回报文返回客户端。
在一个具体的实施方式中,在返回报文存入外部存储装置后,若服务端最新接收到N个请求中,有新发请求与该返回报文相对应,则将该返回报文重新存入内存。其中,N为正整数,可以根据实际需要进行设定,例如为5、10或15等。也可以是服务端在预设时间内接收到的新发请求,例如,在1h内接收到的新发请求。
在图5对应的实施例中,通过将访问次数较少的数据存入外部存储,可以减少服务端内存的使用空间;同时将访问次数较多的数据留在内存,可以加快服务端对客户端的响应速度,提高服务端提供缓存的效率。
在一实施例中,如图6所示,在步骤S103之后,即在将每一返回报文与每一第一拼接结果对应存储于预设表中之后,本实施例提供的网络缓存方法还包括以下步骤:
S501:根据预设校验时间遍历存储于内存的返回报文的第一时间戳。
其中,返回报文的第一时间戳可以在服务端接收到该返回报文时获取,并对应写进预设表中。预设校验时间可以根据实际需要进行设定,例如设置为10S、20或30S等。
具体地,可以在服务端启动一个异步线程,该异步线程可以根据预设校验时间去遍历存储于内存的返回报文的第一时间戳。
S502:将当前时间减去第一时间戳得到第一时间差。
具体地,当根据预设校验时间校验到某个内存中的返回报文时,获取当前的时间,将当前时间减去第一时间戳的时间可以得到第一时间差。
S503:若第一时间差大于或等于第一预设过期时间,则从源服务器获取与请求地址对应的更新的返回报文。
其中,第一预设过期时间可以根据实际需要进行设定,例如设定为30min。可以理解的是,若第一预设过期时间设置过长,则较难保证返回报文得到及时的更新;若第一预设过期时间设置过短,则需要频繁从源服务端获取更新返回报文,对服务端的资源消耗较大,因此,第一预设过期时间不宜过长或过短。
具体地,将第一时间差与第一预设过期时间进行比较,若第一时间差大于或等于第一预设过期时间,表示内存中的返回报文已过期,则服务端根据预设表中对应的请求地址从源服务器获取更新的返回报文。若第一时间差小于第一预设过期时间,表示内存中的返回报文未过期,则服务端不需重新获取更新的返回报文,若有客户端的新发请求与该返回报文对应,直接返回该返回报文。
由于传统的网络缓存中,没有返回报文相应的时间信息,因此,服务端无法校验返回报文是否过期,只能通过每隔一段时间强制更新的方式进行更新。在本实施例中,由于将时间戳写入预设表中,并与返回报文相对应,因此,可以根据每一返回报文对应的时间戳进行校验,减少了到源服务器获取更新的返回报文的次数,减轻了服务端的资源消耗,同时也保证内存中的返回报文始终保持及时性。
S504:根据更新的返回报文更新预设表。
当获取到更新的返回报文后,服务端将预设表中返回报文的信息更新为更新的返回报文的信息即可。
在图6对应的实施例中,通过对内存中返回报文进行校验,只将过期的返回报文进行更新,可以减少服务端到源服务器获取更新的返回报文的次数,减轻服务端资源的消耗,同时也保证了内存中返回报文的及时性,提高了服务端提供缓存的效率。
在一实施例中,如图7所示,在步骤S103之后,即在每一返回报文与每一第一拼接结果对应存储于预设表中之后,本实施例提供的网络缓存方法还包括以下步骤:
S601:根据预设校验时间遍历存储于外部存储装置的返回报文的第二时间戳。
本实施例中,预设校验时间可以与上述实施例相同,也可以不同。例如,将对内存中的返回报文的预设校验时间设置为10S,将对外部存储装置中的返回报文的预设校验时间设置为20S。
具体地,可以在服务端启动另外一个异步线程,该异步线程根据预设校验时间遍历存储于外部存储装置的返回报文的第二时间戳。其中,第二时间戳可以存储于预设表中,该异步线程根据预设校验时间校验预设表中有外部的存储位置的第二时间戳即可。
S602:将当前时间减去第二时间戳得到第二时间差。
当校验到预设表中某个返回报文的第二时间戳时,服务端获取当前时间,将当前时间减去第二时间戳对应的时间得到第二时间差。
S603:若第二时间差大于或等于第二预设过期时间,则将返回报文从外部存储装置中清除。
其中,第二预设过期时间可以根据实际需要设定,例如设置为40min。第二预设过期时间可以与第一预设过期时间可以相同。
具体地,服务端将第二时间差与第二预设过期时间进行比较,若第二时间差大于或等于第二预设过期时间,表示对应的返回报文已过期,则服务端根据预设表中的存储位置将该返回报文从外部存储装置中清除;若第二时间差小于第二预设过期时间,表示对应的返回报文未过期,则服务端暂时保留该返回报文。由于存入外部存储装置的为访问次数较少的网络资源,因此,若校验过期,则可以从外部存储装置中删除,减少对外部存储装置的空间占用。
在图7对应的实施例中,通过校验存入外部存储装置的返回报文,若过期则对返回报文进行清除,可以减少对外部存储装置的空间占用。由于外部存储装置也是服务端系统资源的一部分,因此,清除这些不常用且过期的返回报文,可以减轻服务端的资源占用,提高服务端提供缓存的效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种网络缓存装置,该网络缓存装置与上述实施例中网络缓存方法一一对应。如图8所示,该网络缓存装置包括报文获取模块101、第一拼接模块102、数据缓存模块103、请求获取模块104、第二拼接模块105和报文返回模块106。各功能模块详细说明如下:
报文获取模块101,用于获取客户端的每一首次请求,根据首次请求获取每一返回报文;
第一拼接模块102,用于将与每一返回报文对应的第一请求地址和第一参数进行拼接,得到第一拼接结果;
数据缓存模块103,用于将每一返回报文与每一第一拼接结果对应存储于预设表中;
请求获取模块104,用于获取客户端的新发请求对应的第二请求地址和第二参数;
第二拼接模块105,用于将第二请求地址与第二参数进行拼接,得到第二拼接结果;
报文返回模块106,用于将第二拼接结果与预设表中的第一拼接结果进行匹配,当第二拼接结果与第一拼接结果匹配成功时,将匹配成功的第一拼接结果对应的返回报文返回至客户端。
优选地,如图9所示,本实施例提供的网络缓存装置还包括队列应用模块200,其中,队列应用模块200包括负载情况获取单元201、阻塞队列写入单元202和阻塞队列读出单元203。
负载情况获取单元201,用于获取负载参数值和/或已接收请求的个数;
阻塞队列写入单元202,用于当负载参数值超过预设负载阈值和/或已接收请求的个数超过预设请求个数时,将客户端的新发请求写入阻塞队列;
阻塞队列读出单元203,用于当客户端的新发请求被读出阻塞队列时,执行将第二请求地址与第二参数进行拼接,得到第二拼接结果的步骤。
优选地,本实施例提供的网络缓存装置还包括流地址应用模块,其中,流地址应用模块具体用于:
将客户端的新发请求对应的SOCKET流地址写入阻塞队列;
若SOCKET流地址被读出阻塞队列,则执行将第二请求地址与第二参数进行拼接,得到第二拼接结果的步骤;
当第二拼接结果与预设表中的第一拼接结果匹配成功时,将返回报文按照SOCKET流地址对应的SOCKET流返回至客户端。
优选地,本实施例提供的网络缓存装置还包括外部存储应用模块,其中,外部存储应用模块具体用于:
获取预设表中每一返回报文的访问次数;
若返回报文的访问次数低于预设次数阈值,则将返回报文存入外部存储装置;
获取返回报文在外部存储装置中的存储位置,根据存储位置更新预设表;
当第二拼接结果与第一拼接结果匹配成功时,若第一拼接结果对应的值为存储位置,则根据存储位置从外部存储装置中获取返回报文返回客户端。
优选地,本实施例提供的网络缓存装置还包括报文更新模块,其中,报文更新模块具体用于:
根据预设校验时间遍历存储于内存的返回报文的第一时间戳;
将当前时间减去第一时间戳得到第一时间差;
若第一时间差大于或等于第一预设过期时间,则从源服务器获取与请求地址对应的更新的返回报文;
根据更新的返回报文更新预设表。
优选地,本实施例提供的网络缓存装置还包括报文清除模块,其中,报文清除模块具体用于:
根据预设校验时间遍历存储于外部存储装置的返回报文的第二时间戳;
将当前时间减去第二时间戳得到第二时间差;
若第二时间差大于或等于第二预设过期时间,则将返回报文从外部存储装置中清除。
关于网络缓存装置的具体限定可以参见上文中对于网络缓存方法的限定,在此不再赘述。上述网络缓存装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储上述实施例中用到的各种数据,例如返回报文、第一请求地址和第一参数等等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种网络缓存方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
获取客户端的每一首次请求,根据首次请求获取每一返回报文;
将与每一返回报文对应的第一请求地址和第一参数进行拼接,得到第一拼接结果;
将每一返回报文与每一第一拼接结果对应存储于预设表中;
获取客户端的新发请求对应的第二请求地址和第二参数;
将第二请求地址与第二参数进行拼接,得到第二拼接结果;
将第二拼接结果与预设表中的第一拼接结果进行匹配,若第二拼接结果与第一拼接结果匹配成功,则将匹配成功的第一拼接结果对应的返回报文返回至客户端。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取客户端的每一首次请求,根据首次请求获取每一返回报文;
将与每一返回报文对应的第一请求地址和第一参数进行拼接,得到第一拼接结果;
将每一返回报文与每一第一拼接结果对应存储于预设表中;
获取客户端的新发请求对应的第二请求地址和第二参数;
将第二请求地址与第二参数进行拼接,得到第二拼接结果;
将第二拼接结果与预设表中的第一拼接结果进行匹配,若第二拼接结果与第一拼接结果匹配成功,则将匹配成功的第一拼接结果对应的返回报文返回至客户端。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种网络缓存方法,其特征在于,包括:
获取客户端的每一首次请求,根据所述首次请求获取每一返回报文;
将与每一所述返回报文对应的第一请求地址和第一参数进行拼接,得到第一拼接结果;
将每一所述返回报文与每一所述第一拼接结果对应存储于预设表中;
获取所述客户端的新发请求对应的第二请求地址和第二参数;
将所述第二请求地址与所述第二参数进行拼接,得到第二拼接结果;
将所述第二拼接结果与所述预设表中的所述第一拼接结果进行匹配,若所述第二拼接结果与所述第一拼接结果匹配成功,则将匹配成功的所述第一拼接结果对应的所述返回报文返回至所述客户端。
2.如权利要求1所述的网络缓存方法,其特征在于,在所述获取所述客户端的新发请求对应的第二请求地址和第二参数之后,所述网络缓存方法还包括:
获取负载参数值和/或已接收请求的个数;
若所述负载参数值超过预设负载阈值和/或所述已接收请求的个数超过预设请求个数,则将所述客户端的新发请求写入阻塞队列;
当所述客户端的新发请求被读出所述阻塞队列时,执行所述将所述第二请求地址与所述第二参数进行拼接,得到第二拼接结果的步骤。
3.如权利要求1所述的网络缓存方法,其特征在于,在所述获取所述客户端的新发请求对应的第二请求地址和第二参数之后,所述网络缓存方法还包括:
将所述客户端的新发请求对应的SOCKET流地址写入阻塞队列;
若所述SOCKET流地址被读出所述阻塞队列,则执行将所述第二请求地址与所述第二参数进行拼接,得到第二拼接结果的步骤;
当所述第二拼接结果与所述预设表中的第一拼接结果匹配成功时,将所述返回报文按照所述SOCKET流地址对应的SOCKET流返回至所述客户端。
4.如权利要求1所述的网络缓存方法,其特征在于,在所述将每一所述返回报文与每一所述第一拼接结果对应存储于预设表中之后,所述网络缓存方法还包括:
获取所述预设表中每一所述返回报文的访问次数;
若所述返回报文的访问次数低于预设次数阈值,则将所述返回报文存入外部存储装置;
获取所述返回报文在所述外部存储装置中的存储位置,根据所述存储位置更新所述预设表;
当所述第二拼接结果与所述第一拼接结果匹配成功时,若所述第一拼接结果对应的值为所述存储位置,则根据所述存储位置从所述外部存储装置中获取所述返回报文返回客户端。
5.如权利要求4所述的网络缓存方法,其特征在于,在所述将每一所述返回报文与每一所述第一拼接结果对应存储于预设表中之后,所述网络缓存方法还包括:
根据预设校验时间遍历存储于内存的所述返回报文的第一时间戳;
将当前时间减去所述第一时间戳得到第一时间差;
若所述第一时间差大于或等于第一预设过期时间,则从源服务器获取与所述请求地址对应的更新的返回报文;
根据所述更新的返回报文更新所述预设表。
6.如权利要求5所述的网络缓存方法,其特征在于,在所述将每一所述返回报文与每一所述第一拼接结果对应存储于预设表中之后,所述网络缓存方法还包括:
根据所述预设校验时间遍历存储于所述外部存储装置的所述返回报文的第二时间戳;
将当前时间减去所述第二时间戳得到第二时间差;
若所述第二时间差大于或等于第二预设过期时间,则将所述返回报文从所述外部存储装置中清除。
7.一种网络缓存装置,其特征在于,包括:
报文获取模块,用于获取客户端的每一首次请求,根据所述首次请求获取每一返回报文;
第一拼接模块,用于将与每一所述返回报文对应的第一请求地址和第一参数进行拼接,得到第一拼接结果;
数据缓存模块,用于将每一所述返回报文与每一所述第一拼接结果对应存储于预设表中;
请求获取模块,用于获取所述客户端的新发请求对应的第二请求地址和第二参数;
第二拼接模块,用于将所述第二请求地址与所述第二参数进行拼接,得到第二拼接结果;
报文返回模块,用于将所述第二拼接结果与所述预设表中的所述第一拼接结果进行匹配,当所述第二拼接结果与所述第一拼接结果匹配成功时,将匹配成功的所述第一拼接结果对应的所述返回报文返回至所述客户端。
8.如权利要求7所述的网络缓存装置,其特征在于,还包括队列应用模块,所述队列应用模块包括负载情况获取单元、阻塞队列写入单元和阻塞队列读出单元;
所述负载情况获取单元,用于获取负载参数值和/或已接收请求的个数;
所述阻塞队列写入单元,用于当所述负载参数值超过预设负载阈值和/或所述已接收请求的个数超过预设请求个数时,将所述客户端的新发请求写入阻塞队列;
所述阻塞队列读出单元,用于当所述客户端的新发请求被读出所述阻塞队列时,执行所述将所述第二请求地址与所述第二参数进行拼接,得到第二拼接结果的步骤。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述网络缓存方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述网络缓存方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910815153.4A CN110650182B (zh) | 2019-08-30 | 2019-08-30 | 网络缓存方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910815153.4A CN110650182B (zh) | 2019-08-30 | 2019-08-30 | 网络缓存方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110650182A CN110650182A (zh) | 2020-01-03 |
CN110650182B true CN110650182B (zh) | 2023-03-07 |
Family
ID=69009970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910815153.4A Active CN110650182B (zh) | 2019-08-30 | 2019-08-30 | 网络缓存方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110650182B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113076178B (zh) * | 2021-02-25 | 2024-01-02 | 厦门科灿信息技术有限公司 | 报文存储方法、装置及设备 |
CN113641604B (zh) * | 2021-07-16 | 2024-02-02 | 济南浪潮数据技术有限公司 | 一种数据传输方法及系统 |
CN113852642B (zh) * | 2021-10-09 | 2023-05-09 | 珠海迈科智能科技股份有限公司 | 一种基于dvb标准的ts流分片上传方法及其装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102480397A (zh) * | 2010-11-26 | 2012-05-30 | 金蝶软件(中国)有限公司 | 访问互联网页面的方法及设备 |
CN103116634A (zh) * | 2012-06-12 | 2013-05-22 | 上海雷腾软件有限公司 | 支持高并发缓存任务队列的系统及其异步批量操作方法 |
CN104935648A (zh) * | 2015-06-03 | 2015-09-23 | 北京快网科技有限公司 | 一种高性价比的cdn系统及文件预推、分片缓存的方法 |
CN108536617A (zh) * | 2018-03-30 | 2018-09-14 | 网易宝有限公司 | 缓存管理方法、介质、系统和电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8635402B2 (en) * | 2009-03-31 | 2014-01-21 | Nec Corporation | Storage system and storage access method and program |
-
2019
- 2019-08-30 CN CN201910815153.4A patent/CN110650182B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102480397A (zh) * | 2010-11-26 | 2012-05-30 | 金蝶软件(中国)有限公司 | 访问互联网页面的方法及设备 |
CN103116634A (zh) * | 2012-06-12 | 2013-05-22 | 上海雷腾软件有限公司 | 支持高并发缓存任务队列的系统及其异步批量操作方法 |
CN104935648A (zh) * | 2015-06-03 | 2015-09-23 | 北京快网科技有限公司 | 一种高性价比的cdn系统及文件预推、分片缓存的方法 |
CN108536617A (zh) * | 2018-03-30 | 2018-09-14 | 网易宝有限公司 | 缓存管理方法、介质、系统和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110650182A (zh) | 2020-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110650182B (zh) | 网络缓存方法、装置、计算机设备及存储介质 | |
CN108052675B (zh) | 日志管理方法、系统及计算机可读存储介质 | |
US7647436B1 (en) | Method and apparatus to interface an offload engine network interface with a host machine | |
WO2020019743A1 (zh) | 流量控制方法及装置 | |
US20160330299A1 (en) | Data distribution method and system and data receiving apparatus | |
US20190220224A1 (en) | Non-volatile memory persistence method and computing device | |
WO2020199760A1 (zh) | 数据存储方法、存储器和服务器 | |
CN110737388A (zh) | 数据预读方法、客户端、服务器以及文件系统 | |
CN109564502B (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
EP3077914B1 (en) | System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface | |
CN111597213A (zh) | 一种缓存方法、软件服务器及存储介质 | |
WO2023160276A1 (zh) | 一种数据处理方法、装置、计算机设备以及可读存储介质 | |
WO2017032152A1 (zh) | 将数据写入存储设备的方法及存储设备 | |
CN111124270A (zh) | 缓存管理的方法、设备和计算机程序产品 | |
WO2021000379A1 (zh) | 一种网络数据调度方法及边缘节点 | |
WO2024139748A1 (zh) | 数据传输方法、装置及电子设备 | |
CN113595822A (zh) | 一种数据包管理方法、系统和装置 | |
CN113342746A (zh) | 文件管理系统、文件管理方法、电子设备和存储介质 | |
CN113794764A (zh) | 服务器集群的请求处理方法、介质和电子设备 | |
CN110445580B (zh) | 数据发送方法及装置、存储介质、电子装置 | |
CN115334586A (zh) | 数据转发方法、装置、计算机设备和存储介质 | |
US20160085683A1 (en) | Data receiving device and data receiving method | |
WO2023142605A1 (zh) | 一种基于区块链的数据处理方法和相关装置 | |
CN113821164B (zh) | 一种分布式存储系统的对象聚合方法和装置 | |
US11687271B1 (en) | Method for diluting cache space, and device and medium |
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 |