CN109408483A - 基于squid代理服务器的数据存储方法 - Google Patents
基于squid代理服务器的数据存储方法 Download PDFInfo
- Publication number
- CN109408483A CN109408483A CN201811073147.8A CN201811073147A CN109408483A CN 109408483 A CN109408483 A CN 109408483A CN 201811073147 A CN201811073147 A CN 201811073147A CN 109408483 A CN109408483 A CN 109408483A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- shared drive
- read
- annular
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开一种基于squid代理服务器的数据存储方法,包括如下步骤:步骤1,用户通过squid代理服务器访问外网时,若环形共享内存未存满,则将接收到的用户数据保存到环形共享内存中,若环形共享内存已存满,则将接收到的用户数据写入文件列表中最新的一个文件中;步骤2,随着第三方程序读取环形共享内存中的数据,环形共享内存不再存满,此时从文件列表中取出最早的文件,并读取其中的内容存入环形共享内存中,并删除该文件;步骤3,重复步骤1‑2,直至文件列表中的所有文件都被读取,清空文件列表。此种方法利用共享内存和文件缓存相结合的二级缓存技术对用户发送的数据进行保存,以此方便第三方程序进行读取和解析。
Description
技术领域
本发明属于数据存储技术领域,特别涉及一种基于squid代理服务器的数据存储方法。
背景技术
Squid代理服务器的主要功能是接受来自人们需要下载的目标的请求并适当地处理这些请求。也就是说,如果一个人想下载一个web页面,他请求Squid为他取得这个页面,Squid随之连接到远程服务器并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份到本地的磁盘中。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。
另外,为了防止公司内部信息通过网络被泄露,需要对通过公司内网流出的信息进行监控。因此,可以在公司内网与外网之间架设一台squid代理服务器,当公司内网访问外网时,都得从代理服务器通过。此时,就可以在代理服务器监视从公司内网流出的信息,当发现有敏感信息时可以及时阻止信息的泄露。此时就需要有专门的存储技术用来处理和缓存用户发送到外网的数据,以便第三方程序方便地读取和解析数据,以此判断是否有敏感信息外泄。然而,当前的squid代理服务器还没有专门的比较好的方式存储用户发送的数据,以便第三方程序方便地读取和解析数据,有待改进。
发明内容
本发明的目的,在于提供一种基于squid代理服务器的数据存储方法,利用共享内存和文件缓存相结合的二级缓存技术对用户发送的数据进行保存,以此方便第三方程序进行读取和解析。
为了达成上述目的,本发明的解决方案是:
一种基于squid代理服务器的数据存储方法,包括如下步骤:
步骤1,用户通过squid代理服务器访问外网时,代理服务器判断文件列表是否为空,若为空,再判断环形共享内存是否存满,若未存满,则将接收到的用户数据保存到环形共享内存中,若环形共享内存已存满,则将接收到的用户数据写入文件列表中最新的一个文件中;若文件列表不为空,则将接收到的用户数据写入文件列表中最新的一个文件中;
步骤2,随着第三方程序读取环形共享内存中的数据,环形共享内存不再存满,此时从文件列表中取出最早的文件,并读取其中的内容存入环形共享内存中,并删除该文件;
步骤3,重复步骤1-2,直至文件列表中的所有文件都被读取,清空文件列表。
采用上述方案后,本发明利用共享内存和文件缓存相结合的二级缓存技术对用户发送的数据进行保存,从而方便第三方程序读取和解析数据。
附图说明
图1是本发明的原理图;
图2是本发明采用的环形共享内存示意图。
具体实施方式
以下将结合附图,对本发明的技术方案进行详细说明。
如图1所示,本发明提供一种基于squid代理服务器的数据存储方法,利用共享内存和文件缓存相结合的二级缓存技术,对用户发送的数据进行保存,以便第三方程序能够方便地进行读取和解析,具体是采用环形共享内存。
环形共享内存实现如下:
环形共享内存采用环形队列的形式,它是一个首尾相连的FIFO的数据结构,采用数组的线性空间,数据组织简单,能很快知道队列是否为满或者为空,能以很快的速度来存取数据。如图2所示,环形队列的逻辑上是将数组元素q[0]与q[MAXN-1]连接,形成一个存放队列的环形空间。其中MAXN为一个环形能够存储数据的最大个数。
图2中用tail来指向写的位置,用head来指向读的位置,同时还需要一位status来表示当前块是可读还是可写。开始时,head和tail都指向0的位置,同时所有块的状态status为可写,此时只能进行写入操作无法进行读取操作。当第一次写入数据时,数据将会写入到第0块的位置,同时tail向前移动一位到达1的位置。此时,第0块的状态status变为可读,当再次进行写操作时,将写入第1块的位置,同时第一块的状态status变为可读,tail向前移动到2。此时当用户进行读取操作时,将读取第0块的数据,同时head将向前移动一位,到达1的位置,此时第0块的状态status改为可写状态。以此类推进行读写操作。当用户写到第MAXN-1块再进行写入操作时,需判断第0块的状态为可读还是可写,如果此时0的状态为可写,则将数据写入到第0块,否则不写入环形队列中,而改为写入文件中。同理,当用户读取到MAXN-1块时,如果此时第0块的状态为可读,则读取第0块的数据,否则不读。
文件缓存实现如下:
当环形共享内存存满时,就需要将多余的数据保存到文件中,每个文件可以缓存500M的数据。当单个文件数据超过500M时,则创建一个新的文件以存储多余的数据,每个文件以创建的时间点命名。当环形共享内存中的数据被读取时,按时间顺序从最早创建的文件中读取相应的数据写入共享内存中,当一个文件中的所有数据都被读取完后,删除该文件。之后再读取下一个文件,直至所有的文件被读取完成。
本发明主要是对squid服务器添加二级缓存以保存用户数据,当用户通过squid代理服务器访问外网时,代理服务器将接收到的用户数据先保存到环形共享内存中。此时,可以开启第三方程序读取共享内存中的数据进行解析。但是当通过代理服务器的数据量比较大,导致第三方程序来不及处理共享内存数据时,就会导致共享内存存满。此时,就会将无法存入共享内存中的数据写入文件中。并生成一个文件列表。当代理服务器再次接收到数据时,需要先判断文件列表是否为空,不为空时,直接将数据写入到最新的一个文件中。
当共享内存中的数据被读取而不再满时,就会从文件列表中取出最早的文件,并读取其中的内容存入共享内存中,当该文件中的所有内容都被读取时,就会删除该文件。然后继续从文件列表中取出该列表中最早的文件,读取文件中的内容存入共享内存中,直至所有的文件都被读取完成。此时会清空文件列表,接下来代理服务器接收到的数据又会重新存入共享内存中。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
Claims (5)
1.一种基于squid代理服务器的数据存储方法,其特征在于包括如下步骤:
步骤1,用户通过squid代理服务器访问外网时,代理服务器判断文件列表是否为空,若为空,再判断环形共享内存是否存满,若未存满,则将接收到的用户数据保存到环形共享内存中,若环形共享内存已存满,则将接收到的用户数据写入文件列表中最新的一个文件中;若文件列表不为空,则将接收到的用户数据写入文件列表中最新的一个文件中;
步骤2,随着第三方程序读取环形共享内存中的数据,环形共享内存不再存满,此时从文件列表中取出最早的文件,并读取其中的内容存入环形共享内存中,并删除该文件;
步骤3,重复步骤1-2,直至文件列表中的所有文件都被读取,清空文件列表。
2.如权利要求1所述的基于squid代理服务器的数据存储方法,其特征在于:所述环形共享内存采用环形队列的形式,是一个首尾相连的FIFO的数据结构,逻辑上是将数组元素q[0]与q[MAXN-1]连接,形成一个存放队列的环形空间。
3.如权利要求2所述的基于squid代理服务器的数据存储方法,其特征在于:所述数据结构中,用tail来指向写的位置,用head来指向读的位置,用status来表示当前块是可读还是可写;开始时,head和tail都指向0的位置,同时所有块的状态status为可写,此时只能进行写入操作无法进行读取操作;当第一次写入数据时,数据写入到第0块的位置,同时tail向前移动一位到达1的位置,此时,第0块的状态status变为可读,当再次进行写操作时,将写入第1块的位置,同时第一块的状态status变为可读,tail向前移动到2;此时进行读取操作时,读取第0块的数据,同时head向前移动一位,到达1的位置,此时第0块的状态status改为可写状态;直至当写到第MAXN-1块再进行写入操作时,需判断第0块的状态为可读还是可写,如果此时0的状态为可写,则将数据写入到第0块,否则不写入环形队列中,而改为写入文件中;同理,当用户读取到MAXN-1块时,如果此时第0块的状态为可读,则读取第0块的数据,否则不读。
4.如权利要求1所述的基于squid代理服务器的数据存储方法,其特征在于:所述步骤1中,当环形共享内存存满时,将剩余的用户数据保存到文件中,每个文件缓存500M的数据;当单个文件数据超过500M时,则创建一个新的文件以存储剩余的用户数据。
5.如权利要求4所述的基于squid代理服务器的数据存储方法,其特征在于:所述文件以创建的时间点命名,当环形共享内存中的数据被读取时,按时间顺序从最早创建的文件中读取相应的数据写入环形共享内存中,当某个文件中的所有数据都被读取完后,删除该文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811073147.8A CN109408483A (zh) | 2018-09-14 | 2018-09-14 | 基于squid代理服务器的数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811073147.8A CN109408483A (zh) | 2018-09-14 | 2018-09-14 | 基于squid代理服务器的数据存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109408483A true CN109408483A (zh) | 2019-03-01 |
Family
ID=65464937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811073147.8A Pending CN109408483A (zh) | 2018-09-14 | 2018-09-14 | 基于squid代理服务器的数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408483A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143092A (zh) * | 2019-12-31 | 2020-05-12 | 科华恒盛股份有限公司 | 故障录波数据处理方法、系统及终端设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801778A (zh) * | 2005-12-29 | 2006-07-12 | 中山大学 | 一种网络数据流的多维队列调度与管理系统 |
CN103309767A (zh) * | 2012-03-08 | 2013-09-18 | 阿里巴巴集团控股有限公司 | 一种客户端日志处理方法和装置 |
CN107566493A (zh) * | 2017-09-06 | 2018-01-09 | 中国科学院信息工程研究所 | 一种面向复杂用户需求的代理节点创建方法、代理服务方法和系统 |
CN107609202A (zh) * | 2017-10-25 | 2018-01-19 | 武汉斗鱼网络科技有限公司 | 一种部署数据库实例的方法、装置及计算机设备 |
-
2018
- 2018-09-14 CN CN201811073147.8A patent/CN109408483A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801778A (zh) * | 2005-12-29 | 2006-07-12 | 中山大学 | 一种网络数据流的多维队列调度与管理系统 |
CN103309767A (zh) * | 2012-03-08 | 2013-09-18 | 阿里巴巴集团控股有限公司 | 一种客户端日志处理方法和装置 |
CN107566493A (zh) * | 2017-09-06 | 2018-01-09 | 中国科学院信息工程研究所 | 一种面向复杂用户需求的代理节点创建方法、代理服务方法和系统 |
CN107609202A (zh) * | 2017-10-25 | 2018-01-19 | 武汉斗鱼网络科技有限公司 | 一种部署数据库实例的方法、装置及计算机设备 |
Non-Patent Citations (2)
Title |
---|
王春森: "《程序员教程》", 31 December 2001 * |
王铃惠: ""Squid 小文件缓存优化的设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143092A (zh) * | 2019-12-31 | 2020-05-12 | 科华恒盛股份有限公司 | 故障录波数据处理方法、系统及终端设备 |
CN111143092B (zh) * | 2019-12-31 | 2023-08-29 | 科华恒盛股份有限公司 | 故障录波数据处理方法、系统及终端设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8595440B2 (en) | File server apparatus, management method of storage system, and program | |
US9110909B2 (en) | File level hierarchical storage management system, method, and apparatus | |
US20180081933A1 (en) | Granular buffering of metadata changes for journaling file systems | |
US7590722B2 (en) | Apparatus and methods for managing data used by a mobile device | |
CN110554834A (zh) | 文件系统数据访问方法和文件系统 | |
JP4912026B2 (ja) | 情報処理装置、情報処理方法 | |
CN107026876B (zh) | 一种文件数据访问系统及方法 | |
CN102238102B (zh) | 基于配额的存档的方法和系统 | |
CN102523279A (zh) | 一种分布式文件系统及其热点文件存取方法 | |
CN107566463A (zh) | 一种提高存储可用性的多云存储管理系统 | |
US20110219083A1 (en) | Email auto-filing and management | |
CN103312624A (zh) | 一种消息队列服务系统和方法 | |
CN107368608A (zh) | 基于arc替换算法的hdfs小文件缓存管理方法 | |
CN107679420A (zh) | 一种基于分布式文件系统的权限设置方法及系统 | |
CN106303671A (zh) | 一种流媒体的播放方法 | |
CN109271106A (zh) | 消息存储、读取方法及装置、服务器、存储介质 | |
CN101217449B (zh) | 远程调用管理方法 | |
KR20070037542A (ko) | 추가 속성을 가지는 노드를 이용하는 장치 관리 방법 및장치 관리 클라이언트 | |
CN109767274B (zh) | 一种对海量发票数据进行关联存储的方法及系统 | |
CN108536544A (zh) | 基于数据库消息队列的消费方法、装置、服务器和介质 | |
CN109408483A (zh) | 基于squid代理服务器的数据存储方法 | |
Srinivasan et al. | EMFS: email-based personal cloud storage | |
CN107408239B (zh) | 通过多个邮箱在通信应用中进行海量数据管理的架构 | |
KR101075023B1 (ko) | 연결문서를 이용한 문서의 히스토리관리 방법 및 이를 이용한 시스템 | |
US11809381B2 (en) | Accessing network based content items by a mobile device while offline |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190301 |