CN112416863A - 数据存储方法及缓存服务器 - Google Patents
数据存储方法及缓存服务器 Download PDFInfo
- Publication number
- CN112416863A CN112416863A CN202011120513.8A CN202011120513A CN112416863A CN 112416863 A CN112416863 A CN 112416863A CN 202011120513 A CN202011120513 A CN 202011120513A CN 112416863 A CN112416863 A CN 112416863A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- kernel
- mode module
- communication connection
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- 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/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及数据处理领域,公开了一种数据存储方法及缓存服务器。数据存储方法应用于包括用户态程序与内核态模块的缓存服务器,该数据存储方法包括:在与源服务器建立通信连接后,内核态模块创建与通信连接对应的文件,并将文件的路径信息发送至用户态程序;在接收到源服务器通过通信连接发送的数据时,内核态模块将数据复制到文件中;用户态程序基于路径信息控制内核态模块将文件中的数据存入缓存服务器的存储设备。在本申请中,不再需要通过将数据从内核态模块复制至用户态程序后,再由用户态程序解析数据并控制内核态模块将数据存入存储设备,节省了缓存服务器的处理器资源以及内存资源,加快了数据完成接收的速度。
Description
技术领域
本发明实施例涉及数据处理领域,特别涉及数据存储方法及缓存服务器。
背景技术
随着多媒体时代的来临,网络中的数据量呈爆发式增长,在内容分发网络中需要传输和存储越来越多的文件。在内容分发网络中,缓存服务器承担了数据接收、处理和存储的多重任务,为了应对数据量爆发式增长,减少缓存服务器从开始接收数据到最终将数据存入存储设备的时间以及减少整个过程中的缓存服务器的处理器资源消耗和内存资源消耗已经成为缓存服务器性能优化的重要目标。
目前,缓存服务器的内核态在接收到需要存入存储设备的数据后,需要将数据复制至缓存服务器的用户态,以供用户态对数据进行解析,并通过调用内核态中的文件***写函数控制内核态将数据存入存储设备,实现了数据的持久化。然而,将数据从内核态复制至用户态,再由内核态复制到用户态,消耗了缓存服务器的处理器资源,同时增加了数据的传输时间,降低了数据完成接收的速度;同时,同一份数据同时存在于内核态与用户态,占用了缓存服务器的内存资源。
发明内容
本发明实施方式的目的在于提供一种数据存储方法及缓存服务器,节省了缓存服务器的处理器资源,减少了数据的传输时间,同时节省了缓存服务器的内存资源。
为解决上述技术问题,本发明的实施方式提供了一种数据存储方法,应用于包括用户态程序与内核态模块的缓存服务器,包括以下步骤:在缓存服务器与源服务器建立通信连接后,内核态模块创建与通信连接对应的文件,并将文件的路径信息发送至用户态程序;在接收到源服务器通过通信连接发送的数据时,内核态模块将数据复制到文件中;用户态程序基于路径信息控制内核态模块将文件中的数据存入缓存服务器的存储设备。
本发明的实施方式还提供了一种缓存服务器,包括:用户态程序与内核态模块;内核态模块用于在缓存服务器与源服务器建立通信连接后,创建与通信连接对应的文件,并将文件的路径信息发送至用户态程序;内核态模块还用于在接收到源服务器通过通信连接发送的数据时,将数据复制到文件中;用户态程序用于基于路径信息控制内核态模块将文件中的数据存入缓存服务器的存储设备。
本发明的实施方式还提供了一种缓存服务器,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,处理器包括用户态程序与内核态模块;存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施方式所述的数据存储方法。
本发明实施方式相对于现有技术而言,缓存服务器在与源服务器建立通信连接后,内核态模块会在文件***中创建与通信连接对应的文件,并将文件的路径信息发送至用户态程序;在接收到源服务器通过通信连接发送的数据时,内核态模块将数据复制到文件中,从而用户态程序可以根据接收到的文件的路径信息,控制内核态模块将文件中的数据存入缓存服务器的存储设备;即,用户态程序通过内核态模块发送的文件的路径信息来控制内核态模块将文件中的数据存入缓存服务器的存储设备中,仅需在内核态模块的内存中缓存接收到的数据,用户态程序与内核态模块之间仅需交互文件的路径信息,减少了数据在内核态模块与用户态程序之间的拷贝过程,节省了缓存服务器的处理器资源以及内存资源;同时,由于简化了缓存服务器从数据接收到最终将数据存入存储设备进行持久化的过程,在一定程度上加快了数据完成接收的速度。
另外,文件包括至少一个内核页面,内核态模块将数据复制到文件中,包括:内核态模块将数据复制到文件的内核页面中,并将缓存有数据的内核页面置脏;用户态程序基于路径信息控制内核态模块将文件中的数据存入缓存服务器的存储设备,包括:用户态程序基于路径信息控制内核态模块将被置脏的内核页面中的数据存入存储设备。本实施例中,提供了内核态模块将数据复制到文件中的一种具体实现方式,在将数据缓存到文件的内核页面时,将内核页面置脏,后续可以仅将被置脏的内核页面中的数据存入存储设备,保证了存入存储设备的数据的完整性。
另外,用户态程序基于路径信息控制内核态模块将被置脏的内核页面中的数据存入存储设备,包括:用户态程序在判定满足预设条件时,基于路径信息控制内核态模块将被置脏的内核页面中的数据存入存储设备;预设条件为以下任意之一:缓存服务器的可用内存小于预设阈值、被置脏的内核页面在内核态模块的内存中存储的时间大于预设时间、接收到用户端发送的存入指令。本实施例提供了用户态程序控制内核态模块将被置脏的内核页面中的数据存入存储设备的具体场景。
另外,在内核态模块创建与通信连接对应的文件之前,还包括:在与源服务器建立通信连接之前,用户态程序向内核态模块发送资源获取请求;其中,资源获取请求包含路径信息;内核态模块创建与通信连接对应的文件,包括:内核态模块根据资源获取请求中的路径信息创建与通信连接对应的文件。本实施方式提供了文件的路径信息的一种获取方式。
另外,内核态模块创建与通信连接对应的文件,包括:内核态模块生成通信连接对应的文件的路径信息,并根据生成的路径信息创建与通信连接对应的文件。本实施方式提供了文件的路径信息的另一种获取方式。
另外,将文件的路径信息发送至用户态程序,包括:内核态模块在创建与通信连接对应文件成功时,将文件的路径信息发送至用户态程序;内核态模块在创建与通信连接对应文件失败时,发送表征文件创建失败的第一通知信息给用户态程序;数据存储方法,还包括:用户态程序在接收到第一通知信息时,控制内核态模块关闭通信连接。
另外,在用户态程序基于路径信息控制内核态模块将文件中的数据存入缓存服务器的存储设备之后,还包括:内核态模块在判定通信连接异常关闭时,删除已存入存储设备中的文件中的数据。本实施方式中,避免异常关闭的通信连接的数据存储在缓存服务器的存储设备中,减小了缓存服务器的存储资源的占用。
另外,数据存储方法还包括:内核态模块在接收源服务器发送的数据或者将文件中的数据存入存储设备的过程中出现异常时,将包括错误信息的异常状态信息同步至文件***;用户态程序在读取到文件***中的异常状态信息时,根据异常状态信息中的错误信息判断是否进行重试,并在判定进行重试时,控制内核态模块进行重试。
另外,将文件的路径信息发送至用户态程序,包括:内核态模块将文件对应的控制句柄发送至用户态程序;其中,控制句柄包含路径信息和操作句柄;用户态程序基于路径信息控制内核态模块将文件中的数据存入缓存服务器的存储设备,包括:用户态程序基于控制句柄中的路径信息,利用操作句柄控制内核态模块将文件中的数据存入缓存服务器的存储设备。
另外,内核态模块包括:持久化***与文件***;持久化***用于在缓存服务器与源服务器建立通信连接后,在文件***中创建与通信连接对应的文件,并将文件的路径信息发送至用户态程序;持久化***用于在接收到源服务器通过通信连接发送的数据时,将数据复制到文件中。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式的数据存储方法所应用的缓存服务器的示意图;
图2是根据本发明第一实施方式的数据存储方法的具体流程图;
图3是根据本发明第二实施方式的数据存储方法的具体流程图;
图4是根据本发明第三实施方式的数据存储方法的具体流程图;
图5是根据本发明第四实施方式的数据存储方法的具体流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的第一实施方式涉及一种数据存储方法,应用于内容分发网络中的缓存服务器,缓存服务器用于将从源服务器接收到的数据存入缓存服务器的存储设备;存储设备可以为缓存服务器中的磁盘、硬盘等。请参考图1,缓存服务器1中运行有至少一个应用程序,应用程序一般运行在用户态,可以称为用户态程序11,缓存服务器1中还包括运行在内核态的内核态模块12,内核态模块12所对应的地址空间中存储有内核的运行代码、内核模块以及内核所维护的数据,内核态模块12中可以包括持久化***121与文件***122,在一个例子中,内核态模块12还包括网络协议栈123,内核态模块12可以通过网络协议栈123与源服务器2建立通信连接。用户态程序11的特权级最低,内核态模块12的特权级最高,用户态程序11在其需要执行超过自己特权级的工作时,例如父子进程拷贝信息、拷贝设置也目录表项等,其会调用内核态模块12中的功能接口来实现。
本实施例的数据存储方法的具体流程如图2所示。
步骤101,在缓存服务器与源服务器建立通信连接后,内核态模块创建与通信连接对应的文件,并将文件的路径信息发送至用户态程序。
具体而言,缓存服务器在接收到用户通过终端中的目标应用程序发送的数据请求,或者判定到达预设目标应用程序的数据更新周期时,由缓存服务器中与目标应用程序对应的用户态程序向内核态模块中的网络协议栈发送表征需要请求数据的资源获取请求,网络协议栈在接收到该资源获取请求后,向目标应用程序的源服务器发起建立通信连接的请求,源服务器可以是源站服务器或者存储有数据的中转节点服务器(例如为缓存服务器的父节点服务器)。以通信连接为TCP连接为例,缓存服务器在与源服务器建立通信连接时,内核态模块中的网络协议栈与源服务器需要进行三次握手,三次握手后TCP连接建立成功,即缓存服务器在与源服务器通信连接建立成功。缓存服务器在与源服务器建立通信连接后,内核态模块可以通过网络协议栈向源服务器发起资源请求,源服务器在接收到该资源请求时,向内核态模块发送资源请求响应,内核态模块中的网络协议栈在接收到资源请求响应时,通知内核态模块中的持久化***,持久化***则会在文件***中创建与此通信连接相对应的文件,并将该文件的路径信息发送至用户态程序。
本实施例中,将文件的路径信息发送至用户态程序,包括:内核态模块将文件对应的控制句柄发送至用户态程序;其中,控制句柄包含路径信息和操作句柄。具体的,内核态模块的持久化***会在文件***中创建与此通信连接相对应的文件,生成控制句柄,并将该控制句柄发送给用户态程序;控制句柄包括通信连接的连接信息与通信连接对应的文件的路径信息,通信连接例如为TCP连接,则通信连接的连接信息包含TCP连接的IP地址以及TCP端口四元组的信息。其中,通信连接的连接信息还包括通信连接对应的文件的操作句柄,从而用户态程序可以根据控制句柄中通信连接的连接信息来定位通信连接,并根据控制句柄所包含通信连接对应的文件的操作句柄,来对文件***中该通信连接的文件进行写入管理。
步骤102,在接收到源服务器通过通信连接发送的数据时,将数据复制到文件中。
具体而言,缓存服务器在向源服务器发送资源请求响应后,会通过建立的通信连接向内核态模块发送该资源请求对应的数据,内核态模块在接收到数据时,将此数据复制至此通信连接对应的文件中。其中,源服务器在通过通信连接向缓存服务器发送数据时,会将原始的数据进行分装、封包等操作,并将得到的多个数据包发送到内核态模块的网络协议栈,内核态模块则会在网络协议栈中对数据包进行组装得到原始的数据并缓存,持久化***则会将缓存的通信连接对应的数据与该通信连接对应的文件的路径信息加入到待读取链表中,唤醒文件***所对应的工作线程,工作线程则会从待读取链表中读取通信连接的数据,并根据读取的通信连接对应的文件的路径信息调用文件***的写入接口将通信连接对应的数据写入该通信连接对应的文件中。
步骤103,用户态程序基于路径信息控制内核态模块将文件中的数据存入缓存服务器的存储设备。
具体而言,内核态模块的文件***提供了文件写入接口,用户态程序可以根据控制句柄中所包含的通信连接对应的文件的路径信息,利用内核态模块发送到用户态程序的控制句柄中包括文件写入接口对应的操作句柄,调用文件***的文件写入接口,以控制内核态模块将文件中的数据存储到缓存服务器的存储设备,实现了文件中的数据的持久化。
在本实施方式中,缓存服务器在与源服务器建立通信连接后,内核态模块会在文件***中创建与通信连接对应的文件,并将文件的路径信息发送至用户态程序;在接收到源服务器通过通信连接发送的数据时,内核态模块将数据复制到文件中,从而用户态程序可以根据接收到的文件的路径信息,控制内核态模块将文件中的数据存入缓存服务器的存储设备;即,用户态程序通过内核态模块发送的文件的路径信息来控制内核态模块将文件中的数据存入缓存服务器的存储设备中,仅需在内核态模块的内存中缓存接收到的数据,用户态程序与内核态模块之间仅需交互文件的路径信息,减少了数据在内核态模块与用户态程序之间的拷贝过程,节省了缓存服务器的处理器资源以及内存资源;同时,由于简化了缓存服务器从数据接收到最终将数据存入存储设备进行持久化的过程,在一定程度上加快了数据完成接收的速度。
本发明第二实施方式涉及一种数据存储方法。第二实施方式与第一实施方式大致相同,主要改进之处在于:提供了内核态模块将数据复制到文件中的一种具体实现方式。
本实施例的数据存储方法的具体流程如图3所示。
步骤201,在缓存服务器与源服务器建立通信连接后,内核态模块创建与通信连接对应的文件,并将文件的路径信息发送至用户态程序。与第一实施方式中的步骤101大致相同,在此不再赘述。
步骤202,在接收到源服务器通过通信连接发送的数据时,内核态模块将数据复制到文件的内核页面中,并将缓存有数据的内核页面置脏。
具体而言,内核态模块在文件***中创建的文件包括至少一个内核页面,每个内核页面占用的运行内存空间相同,在接收到源服务器通过通信连接发送的数据时,内核态模块的持久化***会将接收到的数据复制到文件的内核页面中,并将缓存有数据的内核页面置脏,即将存储有数据的内核页面的脏标记设置为置位状态。其中,在内核态模块将接收到的数据复制到文件的内核页面中的过程中,会按照内核页面的顺序将数据依次复制到各内核页面中,在当前的内核页面的存储已满时,利用下一个内核页面对剩余的数据进行缓存,直至所有的数据均被缓存到内核页面中,然后将所有被复制有数据的内核页面置脏。举例来说,单个内核页面的存储空间为4KB,若接收到的数据大小为9KB,则需要三个内核页面对这些数据进行缓存,持久化***将这些数据按照顺序缓存至三个内核页面中,并在数据缓存结束后,将这三个内核页面置脏。
步骤203,用户态程序基于路径信息控制内核态模块将被置脏的内核页面中的数据存入存储设备。
具体而言,用户态程序可以根据通信连接对应的文件的路径信息,调用内核态模块中的文件***的写函数,控制文件持久化***将该通信连接对应的文件中被置脏的内核页面中的数据存入缓存服务器的存储设备中。其中,持久化***在将内核页面中的数据全部存储至存储设备中时,会将该内核页面的脏标记恢复至未置脏的状态,避免同一个内核页面中的数据被重复写入存储设备而导致缓存服务器的存储资源消耗。
在一个例子中,用户态程序在判定满足预设条件时,基于路径信息控制内核态模块将被置脏的内核页面中的数据存入存储设备。其中预设条件包括以下任意之一或任意组合:缓存服务器的可用内存小于预设阈值、被置脏的内核页面在内核态模块的内存中存储的时间大于预设时间、接收到用户端发送的存入指令。具体来说,当预设条件为缓存服务器的可用内存小于预设阈值时,用户态程序实时获取缓存服务器的内存使用情况,当缓存服务器当前的可用的运行内存小于预设的第一内存阈值时,用户态程序控制内核态模块将文件中所有的被置脏的内核页面中的数据存入存储设备,从而释放缓存服务器的运行内存空间。
当预设条件为被置脏的内核页面在内核态模块的内存中存储的时间大于预设时间时,用户态程序实时监控文件中被置脏的内核页面在内核态模块的运行内存中存在的时间,当被置脏的内核页面在内核态模块的内存中存在的时间大于预设时间时,用户态程序控制内核态模块将文件中所有的被置脏的内核页面中的数据存入存储设备,避免被置脏的内核页面长时间缓存在运行内存而不被写入磁盘的情况。
当预设条件为接收到用户端发送的存入指令时,用户可以通过用户端触发将被置脏的内核页面存入存储设备的操作时,用户态程序接收到用户端发送的存入指令时,控制内核态模块将文件中所有的被置脏的内核页面中的数据存入存储设备。
在一个例子中,步骤203之后,还包括:
步骤204,内核态模块在判定通信连接异常关闭时,删除已存入存储设备中的文件中的数据。
具体而言,内核态模块的持久化***能够实时统计已经接收到的数据的进度,当接收到源服务器在数据传输完毕时发送的finish报文时,判定通信连接正常关闭,将接收到的源服务器发送的数据全部写入创建的文件中,并在文件中的数据全部被写入存储设备后,关闭创建的文件,并向源服务器响应finish报文,断开通信连接。持久化***在未接收到源服务器发送的finish报文,且通信连接关闭时,判断已接收到的数据大小是否等于请求的数据大小,若已接收到的数据大小小于请求的数据大小,判定通信连接异常关闭,此时删除已存入存储设备中的该通信连接的数据,避免异常关闭的通信连接的数据存储在缓存服务器的存储设备中,减小了缓存服务器的存储资源的占用。
本实施方式相对于第一实施方式而言,提供了内核态模块将数据复制到文件中的一种具体实现方式,在将数据缓存到文件的内核页面时,将内核页面置脏,后续可以仅将被置脏的内核页面中的数据存入存储设备,保证了存入存储设备的数据的完整性。
本发明第三实施方式涉及一种数据存储方法。第三实施方式与第一实施方式大致相同,主要区别之处在于:在文件创建失败时,用户态程序控制内核态模块关闭通信连接。
本实施例的数据存储方法的具体流程如图4所示。
步骤301包含以下子步骤:
子步骤3011,在缓存服务器与源服务器建立通信连接后,内核态模块创建与通信连接对应的文件。
具体而言,缓存服务器在与源服务器建立通信连接后,持久化***会在文件***创建与通信连接对应的文件,创建文件的具体方式包括以下两种:第一种,用户态程序在向内核态模块中的网络协议栈发送表征需要请求数据的资源获取请求中加入了路径信息,内核态模块的持久化***则能够根据资源获取请求中的路径信息在文件***中创建与通信连接对应的文件;第二种,在缓存服务器在与源服务器建立通信连接后,内核态模块中的持久化***会生成通信连接对应的文件的路径信息,并根据生成的路径信息在文件***中创建与通信连接对应的文件。
子步骤3012,判断创建与通信连接对应文件是否成功。若是,则进入子步骤3013;若否,则进入子步骤3014。
子步骤3013,内核态模块将文件的路径信息发送至用户态程序。
子步骤3014,内核态模块发送表征文件创建失败的第一通知信息给用户态程序。
具体而言,持久化***在文件***中创建与通信连接对应文件时,若创建文件成功,则将文件的路径信息发送至用户态程序。若由于磁盘空间已满或介质错误等问题创建文件失败时,则发送表征文件创建失败的第一通知信息给用户态程序。
步骤302,在接收到源服务器通过通信连接发送的数据时,将数据复制到文件中。与第一实施例中的步骤102大致相同,在此不再赘述。
步骤303,用户态程序基于路径信息控制内核态模块将文件中的数据存入缓存服务器的存储设备。与第一实施例中的步骤103大致相同,在此不再赘述。
步骤304,用户态程序在接收到第一通知信息时,控制内核态模块关闭通信连接。
具体来说,用户态程序在接收到内核态模块的持久化***发送的第一通知信息时,调用内核态模块所提供的中断文件写入接口,控制文件持久化***停止数据的接收并断开通信连接。
在一个例子中,内核态模块的持久化***发送的第一通知信息还包括文件创建失败的错误类型,用户态程序在接收到第一通知信息时,根据文件创建失败的错误类型进行相应的操作。例如,若文件创建失败的错误类型为缓存服务器的内存空间已满等暂时性问题,用户态程序会调用内核态模块所提供的文件暂停写入接口,控制内核态模块暂停通过通信连接接收数据,并重新尝试创建通信连接对应的文件,若文件创建失败的次数大于预设次数,用户态程序调用内核态模块所提供的中断文件写入接口,控制文件持久化***停止数据的接收并断开通信连接;若文件创建失败的错误类型为存储设备介质错误等不可恢复问题,则用户态程序直接调用内核态模块所提供的中断文件写入接口,控制文件持久化***停止数据的接收并断开通信连接。其中,内核态模块在通信连接关闭后,会向用户态程序发送通信连接关闭的结果。
本实施方式相对于第一实施方式而言,在文件创建失败时,用户态程序可以控制内核态模块关闭通信连接,避免通信连接一直在内核态模块中保持通信状态,减少了不必要的通信。
本发明第四实施方式涉及一种数据存储方法,第四实施方式与第一实施方式大致相同,主要区别之处在于:用户态程序能够在出现异常状况时,根据出现异常状态的错误信息来判断是否进行重试。
本实施例的数据存储方法的具体流程如图5所示。
其中,步骤401至步骤403与步骤101至步骤103大致相同,在此不再赘述,主要不同之处在于,增加了步骤404与步骤405,具体如下:
步骤404,内核态模块在接收源服务器发送的数据或者将文件中的数据存入存储设备的过程中出现异常时,将包括错误信息的异常状态信息同步至文件***。
具体而言,内核态模块的持久化***在接收到源服务器通过通信连接发送的数据的过程中,将当前已接收到数据的大小实时更新至文件***中,并在数据接收出现异常时,将包括出现异常的错误类型的异常状态信息同步至文件***。另外,内核态模块的持久化***在将文件中的数据写入缓存服务器的存储设备的过程中,会将当前已写入存储设备的数据大小更新到文件***中,并在文件写入出现异常时,将包括出现异常的错误类型的异常状态信息同步至文件***。
步骤405,用户态程序在读取到文件***中的异常状态信息时,根据异常状态信息中的错误信息判断是否进行重试,并在判定进行重试时,控制内核态模块进行重试。
具体来说,用户态程序可以通过文件***读取数据接收的进度与文件写入的进度,当在读取到文件***中的异常状态信息时,根据异常状态信息中的错误信息判断是否进行重试;以异常状态信息为文件中的数据写入存储设备时出现的异常为例,用户态程序在读取到该异常状态信息时,获取该异常状态信息中的错误类型,若错误类型为可重试错误,例如由缓存服务器的内存不足导致的暂时性问题,用户态程序判定可以进行重试,用户态程序调用内核态模块所提供的文件写入接口,内核态模块的持久化***则将文件中的数据写入存储设备;若错误类型为不可重试错误,例如由磁盘介质错误导致得不可恢复问题,用户态程序判定不可以进行重试,直接调用内核态模块所提供的中断当前文件写入的接口,持久化***立即停止将文件中的数据写入存储设备的操作,并断开通信连接。其中,用户态模块中可以预设有重试次数阈值,若持久化***进行文件写入时出现异常的次数大于该重试次数阈值时,用户态模块判定不再进行重试,直接调用内核态模块所提供的中断当前文件写入的接口,持久化***立即停止将文件中的数据写入存储设备的操作,并断开通信连接。
在一个例子中,内核态模块还提供了暂定当前文件写入的接口与继续当前文件写入的接口,从而用户态程序能够根据待写入的文件的优先级,来调整文件的写入顺序;例如,当前写入到存储设备的第一文件的优先级为低,若有新的第二文件需要写入到存储设备,且第二文件的优先级为高,用户态程序先调用暂停第一文件写入的接口,并调用第二文件写入接口以进行第二文件的写入,内核态模块则会暂停第一文件的写入,并对第二文件进行写入,当第二文件写入完毕时,用户态程序再调用继续当前文件写入的接口,内核态模块则会对继续对第一文件的写入。
本实施方式相对于第一实施方式而言,用户态程序能够在出现异常状况时,根据出现异常状态的错误信息来判断是否进行重试。
本发明第五实施方式涉及一种缓存服务器,应用于内容分发网络,缓存服务器用于将从源服务器接收到的数据存入缓存服务器的存储设备;存储设备可以为缓存服务器中的磁盘、硬盘等。请参考图1,缓存服务器1中运行有至少一个应用程序,应用程序一般运行在用户态,可以称为用户态程序11,缓存服务器1中还包括运行在内核态的内核态模块12,内核态模块12所对应的地址空间中存储有内核的运行代码、内核模块以及内核所维护的数据,内核态模块12中可以包括持久化***121与文件***122,在一个例子中,内核态模块12还包括网络协议栈123,内核态模块12可以通过网络协议栈123与源服务器2建立通信连接。用户态程序11的特权级最低,内核态模块12的特权级最高,用户态程序11在其需要执行超过自己特权级的工作时,例如父子进程拷贝信息、拷贝设置也目录表项等,其会调用内核态模块12中的功能接口来实现。
内核态模块12用于在缓存服务器1与源服务器2建立通信连接后,创建与通信连接对应的文件,并将文件的路径信息发送至用户态程序11。
内核态模块12还用于在接收到源服务器2通过通信连接发送的数据时,将数据复制到文件中。
在一个例子中,内核态模块12包括:持久化***121与文件***122。
持久化***121用于在缓存服务器1与源服务器2建立通信连接后,在文件***中创建与通信连接对应的文件,并将文件的路径信息发送至用户态程序11。
持久化***121用于在接收到源服务器2通过通信连接发送的数据时,将数据复制到文件中。
用户态程序12用于基于路径信息控制内核态模块11将文件中的数据存入缓存服务器1的存储设备(图中未示出)。
由于第一至第四实施例与本实施例相互对应,因此本实施例可与第一至第四实施例互相配合实施。第一至第四实施例中提到的相关技术细节在本实施例中依然有效,在第一至第四实施例中所能达到的技术效果在本实施例中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一至第四实施例中。
在本实施方式中,缓存服务器在与源服务器建立通信连接后,内核态模块会在文件***中创建与通信连接对应的文件,并将文件的路径信息发送至用户态程序;在接收到源服务器通过通信连接发送的数据时,内核态模块将数据复制到文件中,从而用户态程序可以根据接收到的文件的路径信息,控制内核态模块将文件中的数据存入缓存服务器的存储设备;即,用户态程序通过内核态模块发送的文件的路径信息来控制内核态模块将文件中的数据存入缓存服务器的存储设备中,仅需在内核态模块的内存中缓存接收到的数据,用户态程序与内核态模块之间仅需交互文件的路径信息,减少了数据在内核态模块与用户态程序之间的拷贝过程,节省了缓存服务器的处理器资源以及内存资源;同时,由于简化了缓存服务器从数据接收到最终将数据存入存储设备进行持久化的过程,在一定程度上加快了数据完成接收的速度。
本发明第六实施方式涉及一种缓存服务器,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,处理器包括用户态程序与内核态模块;存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行第一实施方式至第四实施方式中任一项的数据存储方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,***接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (12)
1.一种数据存储方法,其特征在于,应用于包括用户态程序与内核态模块的缓存服务器;所述方法包括:
在所述缓存服务器与源服务器建立通信连接后,所述内核态模块创建与所述通信连接对应的文件,并将所述文件的路径信息发送至所述用户态程序;
在接收到所述源服务器通过所述通信连接发送的数据时,所述内核态模块将所述数据复制到所述文件中;
所述用户态程序基于所述路径信息控制所述内核态模块将所述文件中的所述数据存入所述缓存服务器的存储设备。
2.根据权利要求1所述的数据存储方法,其特征在于,所述文件包括至少一个内核页面,所述内核态模块将所述数据复制到所述文件中,包括:
所述内核态模块将所述数据复制到所述文件的所述内核页面中,并将缓存有所述数据的所述内核页面置脏;
所述用户态程序基于所述路径信息控制所述内核态模块将所述文件中的所述数据存入所述缓存服务器的存储设备,包括:
所述用户态程序基于所述路径信息控制所述内核态模块将被置脏的所述内核页面中的所述数据存入所述存储设备。
3.根据权利要求2所述的数据存储方法,其特征在于,所述用户态程序基于所述路径信息控制所述内核态模块将被置脏的所述内核页面中的所述数据存入所述存储设备,包括:
所述用户态程序在判定满足预设条件时,基于所述路径信息控制所述内核态模块将被置脏的所述内核页面中的所述数据存入所述存储设备;
所述预设条件为以下任意之一:
所述缓存服务器的可用内存小于预设阈值、被置脏的所述内核页面在所述内核态模块的内存中存储的时间大于预设时间、接收到用户端发送的存入指令。
4.根据权利要求1所述的数据存储方法,其特征在于,在所述内核态模块创建与所述通信连接对应的文件之前,还包括:
在与所述源服务器建立所述通信连接之前,所述用户态程序向所述内核态模块发送资源获取请求;其中,所述资源获取请求包含所述路径信息;
所述内核态模块创建与所述通信连接对应的文件,包括:
所述内核态模块根据所述资源获取请求中的路径信息创建与所述通信连接对应的所述文件。
5.根据权利要求1所述的数据存储方法,其特征在于,所述内核态模块创建与所述通信连接对应的文件,包括:
所述内核态模块生成所述通信连接对应的文件的路径信息,并根据生成的所述路径信息创建与所述通信连接对应的所述文件。
6.根据权利要求1所述的数据存储方法,其特征在于,所述将所述文件的路径信息发送至所述用户态程序,包括:
所述内核态模块在创建与所述通信连接对应所述文件成功时,将所述文件的路径信息发送至所述用户态程序;
所述内核态模块在创建与所述通信连接对应所述文件失败时,发送表征所述文件创建失败的第一通知信息给所述用户态程序;
所述数据存储方法,还包括:
所述用户态程序在接收到所述第一通知信息时,控制所述内核态模块关闭所述通信连接。
7.根据权利要求1所述的数据存储方法,其特征在于,在所述用户态程序基于所述路径信息控制所述内核态模块将所述文件中的所述数据存入所述缓存服务器的存储设备之后,还包括:
所述内核态模块在判定所述通信连接异常关闭时,删除已存入所述存储设备中的所述文件中的所述数据。
8.根据权利要求1所述的数据存储方法,其特征在于,所述方法还包括:
所述内核态模块在接收所述源服务器发送的数据或者将所述文件中的所述数据存入所述存储设备的过程中出现异常时,将包括错误信息的异常状态信息同步至所述文件***;
所述用户态程序在读取到所述文件***中的异常状态信息时,根据所述异常状态信息中的所述错误信息判断是否进行重试,并在判定进行重试时,控制所述内核态模块进行重试。
9.根据权利要求1所述的数据存储方法,其特征在于,所述将所述文件的路径信息发送至所述用户态程序,包括:
所述内核态模块将所述文件对应的控制句柄发送至所述用户态程序;其中,所述控制句柄包含所述路径信息和操作句柄;
所述用户态程序基于所述路径信息控制所述内核态模块将所述文件中的所述数据存入所述缓存服务器的存储设备,包括:
所述用户态程序基于所述控制句柄中的所述路径信息,利用所述操作句柄控制所述内核态模块将所述文件中的所述数据存入所述缓存服务器的存储设备。
10.一种缓存服务器,其特征在于,包括:用户态程序与内核态模块;
所述内核态模块用于在所述缓存服务器与源服务器建立通信连接后,创建与所述通信连接对应的文件,并将所述文件的路径信息发送至所述用户态程序;
所述内核态模块还用于在接收到所述源服务器通过所述通信连接发送的数据时,将所述数据复制到所述文件中;
所述用户态程序用于基于所述路径信息控制所述内核态模块将所述文件中的所述数据存入所述缓存服务器的存储设备。
11.根据权利要求10所述的缓存服务器,其特征在于,所述内核态模块包括:持久化***与文件***;
所述持久化***用于在所述缓存服务器与源服务器建立通信连接后,在所述文件***中创建与所述通信连接对应的文件,并将所述文件的路径信息发送至所述用户态程序;
所述持久化***用于在接收到所述源服务器通过所述通信连接发送的数据时,将所述数据复制到所述文件中。
12.一种缓存服务器,其特征在于,包括:至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,所述处理器包括用户态程序与内核态模块;
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至9中任一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011120513.8A CN112416863A (zh) | 2020-10-19 | 2020-10-19 | 数据存储方法及缓存服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011120513.8A CN112416863A (zh) | 2020-10-19 | 2020-10-19 | 数据存储方法及缓存服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112416863A true CN112416863A (zh) | 2021-02-26 |
Family
ID=74841308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011120513.8A Pending CN112416863A (zh) | 2020-10-19 | 2020-10-19 | 数据存储方法及缓存服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416863A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114296646A (zh) * | 2021-12-24 | 2022-04-08 | 天翼云科技有限公司 | 基于io业务的缓存方法、装置、服务器和存储介质 |
CN115460470A (zh) * | 2022-08-19 | 2022-12-09 | 武汉烽火技术服务有限公司 | 组播数据转发方法、装置、设备及可读存储介质 |
WO2023273464A1 (zh) * | 2021-06-30 | 2023-01-05 | 华为技术有限公司 | 一种数据传输方法和电子设备 |
CN115826885A (zh) * | 2023-02-21 | 2023-03-21 | 浪潮电子信息产业股份有限公司 | 一种数据迁移方法、装置及电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120290107A1 (en) * | 2011-05-12 | 2012-11-15 | John Carlson | Apparatus and method for displaying state data of an industrial plant |
CN103544324A (zh) * | 2013-11-11 | 2014-01-29 | 北京搜狐新媒体信息技术有限公司 | 一种内核态的数据访问方法、装置及*** |
CN107608717A (zh) * | 2016-07-12 | 2018-01-19 | 迈普通信技术股份有限公司 | 用户态信息收集方法、装置和*** |
CN111552489A (zh) * | 2020-03-31 | 2020-08-18 | 支付宝(杭州)信息技术有限公司 | 用户态文件***热升级方法、装置、服务器及介质 |
-
2020
- 2020-10-19 CN CN202011120513.8A patent/CN112416863A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120290107A1 (en) * | 2011-05-12 | 2012-11-15 | John Carlson | Apparatus and method for displaying state data of an industrial plant |
CN103544324A (zh) * | 2013-11-11 | 2014-01-29 | 北京搜狐新媒体信息技术有限公司 | 一种内核态的数据访问方法、装置及*** |
CN107608717A (zh) * | 2016-07-12 | 2018-01-19 | 迈普通信技术股份有限公司 | 用户态信息收集方法、装置和*** |
CN111552489A (zh) * | 2020-03-31 | 2020-08-18 | 支付宝(杭州)信息技术有限公司 | 用户态文件***热升级方法、装置、服务器及介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023273464A1 (zh) * | 2021-06-30 | 2023-01-05 | 华为技术有限公司 | 一种数据传输方法和电子设备 |
CN114296646A (zh) * | 2021-12-24 | 2022-04-08 | 天翼云科技有限公司 | 基于io业务的缓存方法、装置、服务器和存储介质 |
CN114296646B (zh) * | 2021-12-24 | 2023-06-23 | 天翼云科技有限公司 | 基于io业务的缓存方法、装置、服务器和存储介质 |
CN115460470A (zh) * | 2022-08-19 | 2022-12-09 | 武汉烽火技术服务有限公司 | 组播数据转发方法、装置、设备及可读存储介质 |
CN115460470B (zh) * | 2022-08-19 | 2024-03-26 | 烽火通信科技股份有限公司 | 组播数据转发方法、装置、设备及可读存储介质 |
CN115826885A (zh) * | 2023-02-21 | 2023-03-21 | 浪潮电子信息产业股份有限公司 | 一种数据迁移方法、装置及电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112416863A (zh) | 数据存储方法及缓存服务器 | |
US6438707B1 (en) | Fault tolerant computer system | |
US11403227B2 (en) | Data storage method and apparatus, and server | |
CN108989432B (zh) | 用户态的文件发送方法、文件接收方法和文件收发装置 | |
US10901643B2 (en) | Using log objects in object storage for durability of file objects in volatile memory | |
WO2020117521A1 (en) | Cache warming: agility for a stateful service | |
US10620871B1 (en) | Storage scheme for a distributed storage system | |
WO2023173718A1 (zh) | 一种通信链路更新方法、装置及相关设备 | |
CA3129982A1 (en) | Method and system for accessing distributed block storage system in kernel mode | |
CN112667527A (zh) | 一种确保客户端数据采集准确性的方法及客户端 | |
WO2020252724A1 (zh) | 日志处理方法、设备及计算机可读存储介质 | |
CN113612814B (zh) | 一种会话信息的筛选方法、装置、终端及存储介质 | |
CN110119388A (zh) | 文件读写方法、装置、***、设备及计算机可读存储介质 | |
CN103714059A (zh) | 一种更新数据的方法及装置 | |
CN116166470A (zh) | Redis集群克隆复制方法及装置、介质、设备 | |
CN115033337A (zh) | 虚拟机内存迁移方法、装置、设备及存储介质 | |
CN114721717B (zh) | 基于双***的手机管理***mdm指令调用方法和装置 | |
WO2023103752A1 (zh) | 网元版本下载方法、网元、电子设备和存储介质 | |
US20230045119A1 (en) | Data access method and apparatus | |
CN117539639B (zh) | 显存资源调度方法、装置、***、存储介质及电子设备 | |
CN112003860B (zh) | 适用于远程直接内存访问的内存管理方法、***及介质 | |
KR100194773B1 (ko) | 이동 데이타 처리 시스템과 이동 단말기간의 데이타 일치성 제어 방법 | |
JP2818575B2 (ja) | 無線基地局の遠隔リセットシステム | |
CN117650974A (zh) | 基于网卡故障切换的通信方法、存储介质及计算机设备 | |
CN113485728A (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 |