CN113886329A - 一种数据获取方法、装置、***、设备及存储介质 - Google Patents
一种数据获取方法、装置、***、设备及存储介质 Download PDFInfo
- Publication number
- CN113886329A CN113886329A CN202111193046.6A CN202111193046A CN113886329A CN 113886329 A CN113886329 A CN 113886329A CN 202111193046 A CN202111193046 A CN 202111193046A CN 113886329 A CN113886329 A CN 113886329A
- Authority
- CN
- China
- Prior art keywords
- data
- read
- message queue
- client
- electronic equipment
- 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/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- 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/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开关于一种数据获取方法、装置、***、设备及存储介质,涉及计算机技术领域,可以提高数据获取效率。该数据获取方法包括:当从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时,获取存储有消息队列中的数据的电子设备的位置信息;消息队列中的数据通过分布式文件***存储于电子设备中;基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据获取方法、装置、***、设备及存储介质。
背景技术
消息队列是服务器在消息的传输过程中,保存消息的容器。消息队列不适合保留很长时间的数据,因此,当接收到大量的客户端发送的数据读取请求时,可能导致服务器中的消息队列的读取速度大大降低,磁盘驱动的繁忙程度急剧上升。
为了解决上述问题,现有技术通常在磁盘驱动的繁忙程度过高的情况下,将消息队列中的消息数据存储到简单存储服务等分布式文件***上,以使得服务器中的存储功能和计算功能分离处理(又称“存算分离架构”)。但是,简单存储服务等分布式文件***只能提供简单的存储服务,在读取数据的过程中,服务器依旧需要提供计算服务。这样一来,这种“存算分离架构”依旧会消耗服务器的带宽以及增加服务器的负载,降低了数据获取的效率。
发明内容
本公开提供一种数据获取方法、装置、***、设备及存储介质,可以提高数据获取的效率。
本公开实施例的技术方案如下:
根据本公开实施例的第一方面,提供一种数据获取方法,该方法可以应用于客户端。该方法可以包括:当从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时,获取存储有消息队列中的数据的电子设备的位置信息;消息队列中的数据通过分布式文件***存储于电子设备中;基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据。
可选地,基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据,包括:当待读取数据在分布式文件***中的存储分区的目录下的文件完整,且待读取数据归属于消息队列中的前M段数据时,基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据;M为大于0且小于N的整数;N为消息队列中的数据段数。
可选地,基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据,包括:基于电子设备的位置信息,从电子设备获取索引文件;索引文件用于读取待读取数据在分布式文件***中的存储分区的目录下的文件;索引文件包括起始偏移量和消息队列中的数据的偏移量;向电子设备发送包括起始偏移量和待读取数据的偏移量的第一读数据请求;接收电子设备响应于第一读数据请求发送的待读取数据。
可选地,待读取数据包括用于校验待读取数据的数据完整性的数据地址校验位;数据地址校验位对应待读取数据的文件存储起始位置和文件存储终止位置;接收电子设备响应于第一读数据请求发送的待读取数据之后,还包括:基于文件存储起始位置和文件存储终止位置,获取待读取数据中的数据文件;根据数据文件,校验待读取数据的数据完整性和待读取数据的偏移量的连续性;当待读取数据不完整,或者待读取数据的偏移量不连续时,则向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求。
可选地,该数据获取方法还包括:构建待读取数据归属的存储分区的日志对象;日志对象用于判断待读取数据归属的存储分区的目录下的文件是否完整;向电子设备发送包括日志对象的第一数据校验请求;接收电子设备响应于第一数据校验请求发送的数据校验信息。
可选地,该数据获取方法还包括:当数据校验信息用于表示待读取数据归属的存储分区的目录下的文件不完整时,向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求。
可选地,该数据获取方法还包括:向电子设备发送第三读数据请求;第三读数据请求用于请求按照先后顺序依次获取消息队列中,除待读取数据以外的其他数据;其他数据的第一段数据为与待读取数据相邻的下一段数据;第三读数据请求包括待读取数据的偏移量和下一段数据的偏移量;第三读数据请求包括用于请求获取其他数据的数据请求标识;接收电子设备响应于第三读数据请求发送的下一段数据。
可选地,接收电子设备响应于第三读数据请求发送的下一段数据之前,该数据获取方法还包括:向电子设备发送数据预取请求;数据预取请求用于指示电子设备对下一段数据执行数据预取操作;数据预取请求包括用于指示电子设备执行数据预取操作的数据预取请求标识。
可选地,该数据获取方法还包括:当待读取数据为消息队列中的第J段待读取数据时,向电子设备发送第二数据校验请求;第二数据校验请求用于确定在目标时间段内,消息队列中是否生成新的待读取数据;目标时间段为读取第J段待读取数据的时间段;J为大于0且小于N的整数;接收电子设备响应于第二数据校验请求发送的数据校验结果;当数据校验结果用于表示在目标时间段内,消息队列中生成新的待读取数据时,向电子设备发送用于获取所述第J段待读取数据的第四读数据请求。
可选地,该数据获取方法还包括:当从电子设备获取消息队列中的数据发生异常时,输出报警信息;报警信息包括发生异常数据的日志信息。
可选地,获取存储有消息队列中的数据的电子设备的位置信息,包括:向服务器发送位置信息获取请求;位置信息获取请求用于请求获取存储有消息队列中的数据的电子设备的位置信息;接收服务器发送的位置信息。
根据本公开实施例的第二方面,提供一种数据获取方法,该方法可以应用于服务器。该方法可以包括:接收客户端发送的位置信息获取请求;位置信息获取请求用于请求获取存储有消息队列中的数据的电子设备的位置信息;位置信息获取请求为客户端从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时发送的;消息队列中的数据通过部署分布式文件***存储于电子设备中;向客户端发送位置信息,以使得客户端基于电子设备的位置信息,从电子设备获取消息队列中满足预设条件的待读取数据;预设条件包括:待读取数据在分布式文件***中的存储分区的目录下的文件完整,且待读取数据归属于消息队列中的前M段数据;M为大于0且小于N的整数;N为消息队列中的数据段数。
根据本公开实施例的第三方面,提供一种数据获取装置,该装置可以应用于客户端。该装置可以包括:获取单元;获取单元,用于当从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时,获取存储有消息队列中的数据的电子设备的位置信息;消息队列中的数据通过分布式文件***存储于电子设备中;获取单元,还用于基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据。
可选地,获取单元,具体用于:当待读取数据在分布式文件***中的存储分区的目录下的文件完整,且待读取数据归属于消息队列中的前M段数据时,基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据;M为大于0且小于N的整数;N为消息队列中的数据段数。
可选地,获取单元,具体用于:基于电子设备的位置信息,从电子设备获取索引文件;索引文件用于读取待读取数据在分布式文件***中的存储分区的目录下的文件;索引文件包括起始偏移量和消息队列中的数据的偏移量;向电子设备发送包括起始偏移量和待读取数据的偏移量的第一读数据请求;接收电子设备响应于第一读数据请求发送的待读取数据。
可选地,待读取数据包括用于校验待读取数据的数据完整性的数据地址校验位;数据地址校验位对应待读取数据的文件存储起始位置和文件存储终止位置;获取单元,还用于基于文件存储起始位置和文件存储终止位置,获取待读取数据中的数据文件;数据获取装置还包括:处理单元和发送单元;处理单元,用于根据数据文件,校验待读取数据的数据完整性和待读取数据的偏移量的连续性;发送单元,用于当待读取数据不完整,或者待读取数据的偏移量不连续时,则向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求。
可选地,处理单元,还用于构建待读取数据归属的存储分区的日志对象;日志对象用于判断待读取数据归属的存储分区的目录下的文件是否完整;发送单元,还用于向电子设备发送包括日志对象的第一数据校验请求;数据获取装置还包括接收单元;接收单元,用于接收电子设备响应于第一数据校验请求发送的数据校验信息。
可选地,发送单元,还用于当数据校验信息用于表示待读取数据归属的存储分区的目录下的文件不完整时,向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求。
可选地,发送单元,还用于向电子设备发送第三读数据请求;第三读数据请求用于请求按照先后顺序依次获取消息队列中,除待读取数据以外的其他数据;其他数据的第一段数据为与待读取数据相邻的下一段数据;第三读数据请求包括待读取数据的偏移量和下一段数据的偏移量;第三读数据请求包括用于请求获取其他数据的数据请求标识;接收单元,还用于接收电子设备响应于第三读数据请求发送的下一段数据。
可选地,发送单元,还用于向电子设备发送数据预取请求;数据预取请求用于指示电子设备对下一段数据执行数据预取操作;数据预取请求包括用于指示电子设备执行数据预取操作的数据预取请求标识。
可选地,发送单元,还用于当待读取数据为消息队列中的第J段待读取数据时,向电子设备发送第二数据校验请求;第二数据校验请求用于确定在目标时间段内,消息队列中是否生成新的待读取数据;目标时间段为读取第J段待读取数据的时间段;J为大于0且小于N的整数;接收单元,还用于接收电子设备响应于第二数据校验请求发送的数据校验结果;发送单元,还用于当数据校验结果用于表示在目标时间段内,消息队列中生成新的待读取数据时,向电子设备发送用于获取所述第J段待读取数据的第四读数据请求。
可选地,还包括:输出单元;输出单元,用于当从电子设备获取消息队列中的数据发生异常时,输出报警信息;报警信息包括发生异常数据的日志信息。
可选地,获取单元,具体用于:向服务器发送位置信息获取请求;位置信息获取请求用于请求获取存储有消息队列中的数据的电子设备的位置信息;接收服务器发送的位置信息。
根据本公开实施例的第四方面,提供一种数据获取装置,该装置可以应用于服务器。该装置可以包括:接收单元和发送单元;接收单元,用于接收客户端发送的位置信息获取请求;位置信息获取请求用于请求获取存储有消息队列中的数据的电子设备的位置信息;位置信息获取请求为客户端从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时发送的;消息队列中的数据通过分布式文件***存储于电子设备中;发送单元,用于向客户端发送位置信息,以使得客户端基于电子设备的位置信息,从电子设备获取消息队列中满足预设条件的待读取数据;预设条件包括:待读取数据在分布式文件***中的存储分区的目录下的文件完整,且待读取数据归属于消息队列中的前M段数据;M为大于0且小于N的整数;N为消息队列中的数据段数。
根据本公开实施例的第五方面,提供一种客户端,可以包括:处理器和用于存储处理器可执行指令的存储器;其中,处理器被配置为执行所述指令,以实现上述第一方面中任一种可选地数据获取方法。
根据本公开实施例的第六方面,提供一种服务器,可以包括:处理器和用于存储处理器可执行指令的存储器;其中,处理器被配置为执行所述指令,以实现上述第二方面数据获取方法。
根据本公开实施例的第七方面,提高一种数据获取***,包括:客户端和服务器;客户端,用于执行上述第一方面中任一种可选地数据获取方法;服务器,用于执行上述第二方面数据获取方法。
根据本公开实施例的第八方面,提供一种计算机可读存储介质,计算机可读存储介质上存储有指令,当所述计算机可读存储介质中的指令由客户端的处理器执行时,使得所述客户端能够执行上述第一方面中任一种可选地数据获取方法,或者,当所述计算机可读存储介质中的指令由服务器的处理器执行时,使得所述客户端能够执行上述第二方面数据获取方法。
根据本公开实施例的第九方面,提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在客户端上运行时,使得客户端执行如第一方面中任一种可选地实现方式所述的数据获取方法,或者,当计算机指令在服务器上运行时,使得服务器执行上述第二方面数据获取方法,。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
本公开的实施例提供的技术方案至少带来以下有益效果:
基于上述任一方面,本公开中,当从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时,可以获取存储有消息队列中的数据的电子设备的位置信息,并基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据。由于消息队列中的数据通过分布式文件***存储于电子设备中,因此,客户端可以绕过服务器,直接从电子设备获取待读取数据,降低了服务器的负载和网络带宽消耗,提高了客户端的数据获取效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1示出了本公开实施例提供的一种数据获取***的结构示意图;
图2示出了本公开实施例提供的一种数据获取方法的流程示意图;
图3示出了本公开实施例提供的又一种数据获取方法的流程示意图;
图4示出了本公开实施例提供的又一种数据获取方法的流程示意图;
图5示出了本公开实施例提供的又一种数据获取方法的流程示意图;
图6示出了本公开实施例提供的又一种数据获取方法的流程示意图;
图7示出了本公开实施例提供的又一种数据获取方法的流程示意图;
图8示出了本公开实施例提供的又一种数据获取方法的流程示意图;
图9示出了本公开实施例提供的又一种数据获取方法的流程示意图;
图10示出了本公开实施例提供的又一种数据获取方法的流程示意图;
图11示出了本公开实施例提供的一种数据获取装置的结构示意图;
图12示出了本公开实施例提供的又一种数据获取装置的结构示意图;
图13示出了本公开实施例提供的一种客户端的结构示意图;
图14示出了本公开实施例提供的一种服务器的结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
还应当理解的是,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元素和/或组件的存在或添加。
本公开所涉及的数据可以为经用户授权或者经过各方充分授权的数据。
如背景技术中所描述,现有技术通常在磁盘驱动的繁忙程度过高的情况下,将消息队列中的消息数据存储到简单存储服务等分布式文件***上,以使得服务器中的存储功能和计算功能分离处理(又称“存算分离架构”)。但是,简单存储服务等分布式文件***只能提供简单的存储服务,在读取数据的过程中,服务器依旧需要提供计算服务。这样一来,这种“存算分离架构”依旧会消耗服务器的带宽以及增加服务器的负载,降低了数据获取的效率。
基于此,本公开实施例提供一种数据获取方法,当从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时,可以获取存储有消息队列中的数据的电子设备的位置信息,并基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据。由于消息队列中的数据通过分布式文件***存储于电子设备中,因此,客户端可以绕过服务器,直接从电子设备获取待读取数据,降低了服务器的负载和网络带宽消耗,提高了客户端的数据获取效率。
以下对本公开实施例提供的数据获取方法进行示例性说明:
如图1所示,本公开提供的数据获取方法可以应用于包括客户端101、服务器102和电子设备103的数据获取***。其中,客户端101、服务器102和电子设备103两两之间通信连接。
本申请实施例中,客户端101用于从服务器102或者电子设备103上获取数据。电子设备103上部署有分布式文件***,例如:Hadoop分布式文件***(HDFS)。服务器102为Kafka集群中的一个或多个服务器。
可选的,Kafka是一种高吞吐量的分布式发布订阅消息***,它可以处理消费者在网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop一样的日志数据和离线分析***,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
客户端可以是手机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)\虚拟现实(virtual reality,VR)设备等可以安装并使用内容社区应用(如快手)的设备,本公开对该电子设备的具体形态不作特殊限制。其可以与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互。
一些实施例中,电子设备可以是服务器102,也可以是独立于服务器102的另一个服务器,还可以是其他用于进行数据获取的电子设备,本公开对此不作限定。
其中,服务器可以是单独的一个服务器,或者,也可以是由多个服务器构成的服务器集群。部分实施方式中,服务器集群还可以是分布式集群。本公开对服务器的具体实现方式也不作限制。
下面结合附图对本申请实施例提供的数据获取方法进行详细介绍。
如图2所示,当数据获取方法应用于上述图1中的客户端时,该数据获取方法可以包括:
S201、当从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时,客户端获取存储有消息队列中的数据的电子设备的位置信息。
其中,消息队列中的数据通过分布式文件***存储于电子设备中,即电子设备通过部署分布式文件***存储消息队列中的全部数据。
可选的,当分布式文件***部署于客户端时,电子设备可以是客户端或者客户端中的某个功能模块。
现有技术中,服务器中存储有消息队列。客户端在请求获取消息队列中的数据时,可以通过服务器获取数据。但是,当大量的客户端在同一时间向服务器发送读数据请求时,可能导致服务器中的消息队列的读取速度大大降低,磁盘驱动的繁忙程度急剧上升。在这种情况下,客户端获取消息队列中的数据的滞后时间会大大增加。当获取消息队列中的数据的滞后时间大于预设时间阈值时,客户端获取存储有消息队列中的全部数据的电子设备的位置信息。
示例性的,以服务器为部署kafka***的服务器(Kafka集群包含一个或多个服务器,这种服务器被称为broker)、电子设备为部署HDFS***的电子设备为例。kafka***本身是一个消息队列,不适合保留很长时间的数据,同时拖历史数据会污染页高速缓冲存储器,使得读取速度大大降低,磁盘驱动的繁忙程度(utils)陡升。在这种情况下,运维人员首先把kafka***的数据按照kafka格式搬运到HDFS***上。由于HDFS***的特性,HDFS***上的数据可以保留更长的时间。
后续,针对向Kafka broker读取消息的客户端(consumer)消费的滞后时间(lag),确定从不同的存储***(例如kafka***或HDFS***)进行消费。
可选的,当lag大于预设时间阈值时,consumer获取部署有HDFS***的电子设备的位置信息。相应的,当lag小于或者等于预设时间阈值时,consumer通过broker获取消息队列中的数据。
S202、客户端基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据。
具体的,在获取存储有消息队列中的数据的电子设备的位置信息后,可以基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据。
示例性的,consumer可以根据用户需求,确定从kafka***或者HDFS***上读取数据。当确定从HDFS***上读取数据时,consumer从broker请求获取HDFS***的元数据信息,并从元数据信息中提取HDFS***的地址信息(例如IP地址等信息)。接着,consumer基于HDFS***的地址信息,从电子设备获取消息队列中的待读取数据。
由上可知,consumer在获取待读取数据时,能够在kafka***/HDFS***随意切换消费。而业务不需感知不同的后端存储***,由于数据保留在HDFS***上可以保留更长的时间,使得业务消费压力大大减少,大大节省了业务的计算资源和kafka broker的网络带宽以及负载,也解决了在读历史数据或者大流量数据时,磁盘驱动的繁忙程度(utils)过高问题。
上述实施例提供的技术方案至少带来以下有益效果:由S201-S202可知,当客户端从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时,可以获取存储有消息队列中的数据的电子设备的位置信息,并基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据。由于消息队列中的数据通过分布式文件***存储于电子设备中,因此,客户端可以绕过服务器,直接从电子设备获取待读取数据,降低了服务器的负载和网络带宽消耗,提高了客户端的数据获取效率。
在一种可以实现的方式中,上述S202中,客户端基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据的方法具体包括:
当待读取数据在分布式文件***中的存储分区的目录下的文件完整,且待读取数据归属于消息队列中的前M段数据时,客户端基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据。这样一来,客户端可以根据分布式文件***的特性,直接从电子设备获取待读取数据,降低了服务器的负载和网络带宽消耗,提高了客户端的数据获取效率。
其中,M为大于0且小于N的整数;N为消息队列中的数据段数。
可选的,M可以等于N-1,即当待读取数据归属的存储分区的目录下的文件完整,且待读取数据不是消息队列中的最后一段待读取数据时,客户端可以基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据。
应理解,由于分布式文件***的特性,当待读取数据归属的存储分区的目录下的文件不完整时,说明分布式文件***还没加载完成消息队列中的数据或者其他异常。在这种情况下,为了避免获取到的待读取数据不完整或者发生异常,客户端不从电子设备获取消息队列中的待读取数据,而是按照原有的方式,从服务器获取待读取数据。
此外,当待读取数据为消息队列中的最后一段读取数据时,需要分布式文件***重新打开文件流,这样会浪费大量的人力资源和网络资源,因此,客户端不从电子设备获取消息队列中的待读取数据,而是按照原有的方式,从服务器获取待读取数据。
在一种可以实现的方式中,结合图2,如图3所示,上述S202中,客户端基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据的方法具体包括:
S301、客户端基于电子设备的位置信息,从电子设备获取索引文件。
其中,索引文件用于读取待读取数据在分布式文件***中的存储分区的目录下的文件;索引文件包括起始偏移量和消息队列中的数据的偏移量。
具体的,客户端基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据时,可以基于电子设备的位置信息,从电子设备获取索引文件。
需要说明的是,在获取索引文件时,可以根据用户的需求,按需获取索引文件,无需获取电子设备中的全部索引文件,避免大量的索引文件会严重消耗客户端的内存。
此外,客户端基于电子设备的位置信息,从电子设备获取的索引文件为偏移量索引文件,无需加载时间索引文件,避免大量的索引文件会严重消耗客户端的内存。
结合上述示例,每个consumer只需要加载自己订阅的分区目录,在加载过程中并不会真正去读文件,主要是构建段地图(segmentsMap)等元数据信息。Consumer基于电子设备的位置信息,从HDFS***获取索引文件时,只加载偏移量索引文件,不需要加载时间索引文件,并且按需加载,只真正加载第一次读时传入偏移量映射到的segment对应的索引文件。
S302、客户端向电子设备发送包括起始偏移量和待读取数据的偏移量的第一读数据请求。
具体的,在基于电子设备的位置信息,从电子设备获取索引文件后,由于索引文件包括起始偏移量和消息队列中的数据的偏移量,因此,客户端向电子设备发送包括起始偏移量和待读取数据的偏移量的第一读数据请求。
可选的,起始偏移量为消息队列中数据对应的唯一起始偏移量。
S303、客户端接收电子设备响应于第一读数据请求发送的待读取数据。
具体的,客户端向电子设备发送包括起始偏移量和待读取数据的偏移量的第一读数据请求后,电子设备响应于第一读数据请求,基于起始偏移量和待读取数据的偏移量,确定待读取数据文件存储起始位置和文件存储终止位置中的数据文件,并将该数据文件确定为待读取数据,向客户端发送待读取数据。相应的,客户端接收电子设备响应于第一读数据请求发送的待读取数据。
结合上述示例,consumer加载完元数据信息后,开始从HDFS***读取数据。这里,consumer使用HDFS数据拉取器(HDFSFetcher)从HDFS***拉取数据,HDFSFetcher和原生的拉取器(Fetcher)共用SubscriptionState对象实例,保证读取偏移量的连续性、方便从kafka***读数据和HDFS***读数据能够随意切换。
上述实施例提供的技术方案至少带来以下有益效果:由S301-S303可知,客户端基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据时,可以基于电子设备的位置信息,从电子设备获取索引文件。由于索引文件包括起始偏移量和消息队列中的全部数据的偏移量,因此,客户端向电子设备发送包括起始偏移量和待读取数据的偏移量的第一读数据请求。后续,客户端接收电子设备响应于第一读数据请求发送的待读取数据。这样一来,客户端可以根据索引文件中的起始偏移量和待读取数据的偏移量,获取待读取数据,给出了一种快速准确的获取到待读取数据的实现方式。此外,由于客户端只需要获取索引文件便可以获取到待读取数据,相比现有技术无需获取更多的索引文件,在提高数据获取的效率的同时,还避免严重消耗客户端内存。
在一种可以实现的方式中,结合图3,如图4所示,待读取数据包括用于校验待读取数据的数据完整性的数据地址校验位;数据地址校验位对应待读取数据的文件存储起始位置和文件存储终止位置;上述客户端接收电子设备响应于第一读数据请求发送的待读取数据之后,还包括:
S401、客户端基于存储起始位置和文件存储终止位置,获取待读取数据中的数据文件。
具体的,客户端接收电子设备响应于第一读数据请求发送的待读取数据之后,由于待读取数据包括用于校验待读取数据的数据完整性的数据地址校验位;数据地址校验位对应待读取数据的文件存储起始位置和文件存储终止位置,因此,客户端可以基于存储起始位置和文件存储终止位置,获取待读取数据中的数据文件。
S402、客户端根据数据文件,校验待读取数据的数据完整性和待读取数据的偏移量的连续性。
具体的,在基于存储起始位置和文件存储终止位置,获取待读取数据中的数据文件后,客户端可以根据全部数据文件,校验待读取数据的数据完整性和待读取数据的偏移量的连续性,以保证待读取数据的安全性。
S403、当待读取数据不完整,或者待读取数据的偏移量不连续时,客户端向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求。
具体的,在根据全部数据文件,校验待读取数据的数据完整性和待读取数据的偏移量的连续性后,当待读取数据不完整,或者待读取数据的偏移量不连续时,则客户端向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求,以保证从服务器获取到完整的待读取数据。
示例性的,若待读取数据包括100段数据文件。客户端从电子设备获取到待读取数据的99段数据文件。在这种情况下,客户端确定待读取数据的数据是不完整的。后续,为了能够获取到完整的目标文件,客户端向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求。
可选的,第二读数据请求和第一读数据请求可以是同一个读数据请求,也可以是不同的读数据请求,本公开对此不作限定。
上述实施例提供的技术方案至少带来以下有益效果:由S401-S402可知,客户端接收电子设备响应于第一读数据请求发送的待读取数据之后,由于待读取数据包括用于校验待读取数据的数据完整性的数据地址校验位;数据地址校验位对应待读取数据的文件存储起始位置和文件存储终止位置,因此,客户端可以基于存储起始位置和文件存储终止位置,获取待读取数据中的数据文件。后续,可以根据全部数据文件,校验待读取数据的数据完整性和待读取数据的偏移量的连续性,以保证待读取数据的安全性。当待读取数据不完整,或者待读取数据的偏移量不连续时,则客户端向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求,从而使得客户端从服务器获取到完整的待读取数据。
在一种可以实现的方式中,如图5所示,该数据获取方法还包括:
S501、客户端构建待读取数据归属的存储分区的日志对象。
具体的,在从电子设备获取待读取数据时,客户端可以构建待读取数据归属的存储分区的日志对象。其中,日志对象用于判断待读取数据归属的存储分区的目录下的文件是否完整。
S502、客户端向电子设备发送包括日志对象的第一数据校验请求。
具体的,在构建待读取数据归属的存储分区的日志对象后,客户端向电子设备发送包括日志对象的第一数据校验请求,以使得电子设备响应于第一数据校验请求,判断待读取数据归属的存储分区的目录下的文件是否完整。
结合上述示例,consumer可以为每个分区创建HDFS的日志对象,以检验分区目录下文件是否完整。接着,consumer向HDFS***发送包括日志对象的第一数据校验请求。HDFS***接收到第一数据校验请求后,响应于第一数据校验请求,判断待读取数据归属的存储分区的目录下的文件是否完整。比如待读取数据归属的存储分区的目录下,索引文件和日志文件必须同时存在,不应该有后缀为.delete被被删除的文件等。
S503、客户端接收电子设备响应于第一数据校验请求发送的数据校验信息。
具体的,电子设备接收到第一数据校验请求后,响应于第一数据校验请求,判断待读取数据归属的存储分区的目录下的文件是否完整。后续,电子设备向客户端发送包括判断结果的数据校验信息。相应的,客户端接收电子设备响应于第一数据校验请求发送的数据校验信息。
上述实施例提供的技术方案至少带来以下有益效果:由S501-S503可知,客户端可以通过构建用于判断待读取数据归属的存储分区的目录下的文件是否完整的日志对象,判断待读取数据归属的存储分区的目录下的文件是否完整,从而避免获取到不完整的待读取数据,进而保证待读取数据的完整性。
在一种可以实现的方式中,结合图5,如图6所示,该数据获取方法还包括:
S601、当数据校验信息用于表示待读取数据归属的存储分区的目录下的文件不完整时,客户端向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求。
具体的,当数据校验信息用于表示待读取数据归属的存储分区的目录下的文件不完整时,客户端向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求,以保证从服务器获取到完整的待读取数据。
上述实施例提供的技术方案至少带来以下有益效果:由S601可知,当数据校验信息用于表示待读取数据归属的存储分区的目录下的文件不完整时,客户端向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求,以保证客户端从服务器获取到完整的待读取数据。
在一种可以实现的方式中,如图7所示,该数据获取方法还包括:
S701、客户端向电子设备发送第三读数据请求。
其中,第三读数据请求用于请求按照先后顺序依次获取消息队列中,除待读取数据以外的其他数据;其他数据的第一段数据为与待读取数据相邻的下一段数据;第三读数据请求包括待读取数据的偏移量和下一段数据的偏移量;第三读数据请求包括用于请求获取其他数据的数据请求标识。
具体的,消息队列中可能包括多段数据。客户端在获取到待读取数据后,可能还需要获取消息队列中的其他数据。在这种情况下,客户端向电子设备发送第三读数据请求。
其中,第三读数据请求用于请求获取消息队列中,与待读取数据相邻的下一段数据。第三读数据请求包括待读取数据的偏移量和下一段数据的偏移量。
应理解,由于客户端提前获取到的该消息队列对应索引文件,因此,客户端可以从索引文件中获取到待读取数据的偏移量和下一段数据的偏移量。在这种情况下,客户端可以将待读取数据的偏移量和下一段数据的偏移量添加到第三读数据请求中,以使得电子设备可以根据待读取数据的偏移量和下一段数据的偏移量,快速获取到下一段数据。
此外,当客户端从多个分区获取多段数据时,可以使用线程池实现一定程度上的并行。但是程池数目不宜过大,从而避免客户端的运行压力过大。
结合上述示例,consumer根据传入的分区到对应的HDFS文件对象,首次读取根据偏移量索引文件定位到偏移量对应的日志文件位置,后续读直接记录文件位置,每次顺序累加,不需要用索引文件去定位。
S702、客户端接收电子设备响应于第三读数据请求发送的下一段数据。
具体的,电子设备在接收到第三读数据请求后,可以响应于第三读数据请求,基于待读取数据的偏移量和下一段数据的偏移量,从存储空间中查找下一段数据,并向客户端发送下一段数据。相应的,客户端接收电子设备响应于第三读数据请求发送的下一段数据。
上述实施例提供的技术方案至少带来以下有益效果:由S701-S702可知,客户端在获取待读取数据的下一段数据时,可以从索引文件中获取到待读取数据的偏移量和下一段数据的偏移量。在这种情况下,客户端可以将待读取数据的偏移量和下一段数据的偏移量添加到第三读数据请求中,以使得电子设备可以根据待读取数据的偏移量和下一段数据的偏移量,快速获取到下一段数据。这样一来,客户端便可以根据每段数据的偏移量获取消息队列中的其他数据,无需重新加载索引文件,提高了数据获取的效率。
在一种可以实现的方式中,结合图7,如图8所示,在接收电子设备响应于第三读数据请求发送的下一段数据之前,该数据获取方法还包括:
S801、客户端向电子设备发送数据预取请求。
其中,数据预取请求用于指示电子设备对下一段数据执行数据预取操作;数据预取请求包括用于指示电子设备执行数据预取操作的数据预取请求标识。
具体的,客户端在获取待读取数据时,还可以向电子设备发送数据预取请求,以使得电子设备对下一段数据执行数据预取操作。后续,当客户端向电子设备发送用于获取下一段数据的读数据请求时,电子设备可以快速的向客户端返回下一段数据,提高了数据获取的效率。
结合上述示例,consumer从HDFS***拉取数据的模式可以参考原生consumer模式构成的管道模式(pipeline),尽量避免用户线程阻塞。
具体的,consumer可以将偏移量转化成文件起始位置,并根据每次拉取的最大消息条数定位到结束位置,每次读取进行预读取构成一个管道,避免要等需要数据时才去读,提高了数据获取的效率。
上述实施例提供的技术方案至少带来以下有益效果:由S801可知,客户端在获取待读取数据时,还可以向电子设备发送数据预取请求,以使得电子设备对下一段数据执行数据预取操作。后续,当客户端向电子设备发送用于获取下一段数据的读数据请求时,电子设备可以快速的向客户端返回下一段数据,提高了客户端的数据获取的效率。
在一种可以实现的方式中,如图9所示,该数据获取方法还包括:
S901、当待读取数据为消息队列中的第J段待读取数据时,客户端向电子设备发送第二数据校验请求。
其中,第二数据校验请求用于确定在目标时间段内,消息队列中是否生成新的待读取数据;目标时间段为读取第J段待读取数据的时间段;J为大于0且小于N的整数。
可选的,第J段待读取数据可以是消息队列中的最后一段待读取数据。
具体的,当待读取数据为消息队列中的最后一段待读取数据时,需要分布式文件***重新打开文件流,这样会浪费大量的人力资源和网络资源,因此,客户端不从电子设备获取消息队列中的待读取数据,而是按照原有的方式,从服务器获取待读取数据。然而,在读取最后一段待读取数据的过程中,电子设备可能生成新的待读取数据。在这种情况下,客户端向电子设备发送第二数据校验请求。
S902、客户端接收电子设备响应于第二数据校验请求发送的数据校验结果。
S903、当数据校验结果用于表示在目标时间段内,消息队列中生成新的待读取数据时,客户端向电子设备发送用于获取第J段待读取数据的第四读数据请求。
结合上述示例,当第J段待读取数据为消息队列中的最后一段待读取数据,电子设备在接收第二数据校验请求后,判断在读取最后一段待读取数据的过程中,是否生成了新的待读取数据。当在读取最后一段待读取数据的过程中,生成新的待读取数据时,当前最后一个待读取数据便不再是最后一段待读取数据。在这种情况下,客户端向电子设备发送用于获取最后一段待读取数据的第四读数据请求。
上述实施例提供的技术方案至少带来以下有益效果:由S901-S903可知,电子设备在接收第二数据校验请求后,判断在读取第J段待读取数据的过程中,是否生成了新的待读取数据。当在读取第J段待读取数据的过程中,生成新的待读取数据时,当前第J段待读取数据便不再是最后一段待读取数据。在这种情况下,客户端向电子设备发送用于获取第J段待读取数据的第四读数据请求。这样一来,客户端可以绕过服务器,直接从电子设备获取消息队列中的数据,降低了服务器的数据处理压力,提高了客户端的数据获取效率。
在一种可以实现的方式中,结合图2,如图10所示,该数据获取方法还包括:
S1001、当从电子设备获取消息队列中的数据发生异常时,客户端输出报警信息。
其中,报警信息包括发生异常数据的日志信息。
结合上述示例,当consumer从HDFS***读取数据时出现异常,则consumer会重新读取数据。重新读取数据的次数可以人为设定。当重新读取的次数满足预设读取次数时,读取数据时依旧出现异常,则输出报警信息,以提示运维人员发生故障。同时,consumer对每种异常都有打点监控,将发生异常的日志信息添加到报警信息中。
上述实施例提供的技术方案至少带来以下有益效果:由S1001可知,客户端可以监控获取待读取数据的过程是否异常,并在发生异常时及时发出告警,提高获取待读取数据的准确性。
在一种可以实现的方式中,上述获取存储有消息队列中的数据的电子设备的位置信息,包括:向服务器发送位置信息获取请求;位置信息获取请求用于请求获取存储有消息队列中的数据的电子设备的位置信息;接收服务器发送的位置信息。这样一来,客户端可以从服务器获取到电子设备的位置信息,以使得后续根据位置信息获取电子设备中的待读取数据,提高了数据获取的效率。
在一种可以实现的方式中,本公开提供的数据获取方法还可以应用于服务器。当数据获取方法还可以应用于服务器时,包括:
接收客户端发送的位置信息获取请求。
其中,位置信息获取请求用于请求获取存储有消息队列中的数据的电子设备的位置信息;位置信息获取请求为客户端从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时发送的;消息队列中的数据通过部署分布式文件***存储于电子设备中。
向客户端发送位置信息,以使得客户端基于电子设备的位置信息,从电子设备获取消息队列中满足预设条件的待读取数据。
其中,预设条件包括:待读取数据在分布式文件***中的存储分区的目录下的文件完整,且待读取数据归属于消息队列中的前M段数据;M为大于0且小于N的整数;N为消息队列中的数据段数。
可以理解的,在实际实施时,本公开实施例所述的客户端/服务器可以包含有用于实现前述对应数据获取方法的一个或多个硬件结构和/或软件模块,这些执行硬件结构和/或软件模块可以构成一个电子设备。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本公开能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
基于这样的理解,本公开实施例还对应提供一种数据获取装置,可以应用于客户端。图11示出了本公开实施例提供的数据获取装置的结构示意图。如图11所示,该数据获取装置可以包括:获取单元1101;
获取单元1101,用于当从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时,获取存储有消息队列中的数据的电子设备的位置信息;消息队列中的数据通过分布式文件***存储于电子设备中;
获取单元1101,还用于基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据。
可选地,获取单元1101,具体用于:
当待读取数据在分布式文件***中的存储分区的目录下的文件完整,且待读取数据归属于消息队列中的前M段数据时,基于电子设备的位置信息,从电子设备获取消息队列中的待读取数据;M为大于0且小于N的整数;N为消息队列中的数据段数。
可选地,获取单元1101,具体用于:
基于电子设备的位置信息,从电子设备获取索引文件;索引文件用于读取待读取数据在分布式文件***中的存储分区的目录下的文件;索引文件包括起始偏移量和消息队列中的数据的偏移量;
向电子设备发送包括起始偏移量和待读取数据的偏移量的第一读数据请求;
接收电子设备响应于第一读数据请求发送的待读取数据。
可选地,待读取数据包括用于校验待读取数据的数据完整性的数据地址校验位;数据地址校验位对应待读取数据的文件存储起始位置和文件存储终止位置;
获取单元1101,还用于基于文件存储起始位置和文件存储终止位置,获取待读取数据中的数据文件;
数据获取装置还包括:处理单元1102和发送单元1103;
处理单元1102,用于根据数据文件,校验待读取数据的数据完整性和待读取数据的偏移量的连续性;
发送单元1103,用于当待读取数据不完整,或者待读取数据的偏移量不连续时,则向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求。
可选地,处理单元1102,还用于构建待读取数据归属的存储分区的日志对象;日志对象用于判断待读取数据归属的存储分区的目录下的文件是否完整;
发送单元1103,还用于向电子设备发送包括日志对象的第一数据校验请求;
数据获取装置还包括接收单元1104;
接收单元1104,用于接收电子设备响应于第一数据校验请求发送的数据校验信息。
可选地,发送单元1103,还用于当数据校验信息用于表示待读取数据归属的存储分区的目录下的文件不完整时,向消息队列归属的服务器发送用于获取待读取数据的第二读数据请求。
可选地,发送单元1103,还用于向电子设备发送第三读数据请求;第三读数据请求用于请求按照先后顺序依次获取消息队列中,除待读取数据以外的其他数据;其他数据的第一段数据为与待读取数据相邻的下一段数据;第三读数据请求包括待读取数据的偏移量和下一段数据的偏移量;第三读数据请求包括用于请求获取其他数据的数据请求标识;
接收单元1104,还用于接收电子设备响应于第三读数据请求发送的下一段数据。
可选地,发送单元1103,还用于向电子设备发送数据预取请求;数据预取请求用于指示电子设备对下一段数据执行数据预取操作;数据预取请求包括用于指示电子设备执行数据预取操作的数据预取请求标识。
可选地,发送单元1103,还用于当待读取数据为消息队列中的第J段待读取数据时,向电子设备发送第二数据校验请求;第二数据校验请求用于确定在目标时间段内,消息队列中是否生成新的待读取数据;目标时间段为读取第J段待读取数据的时间段;J为大于0且小于N的整数;
接收单元1104,还用于接收电子设备响应于第二数据校验请求发送的数据校验结果;
发送单元1103,还用于当数据校验结果用于表示在目标时间段内,消息队列中生成新的待读取数据时,向电子设备发送用于获取第J段待读取数据的第四读数据请求。
可选地,还包括:输出单元1105;
输出单元1105,用于当从电子设备获取消息队列中的数据发生异常时,输出报警信息;报警信息包括发生异常数据的日志信息。
可选地,获取单元1101,具体用于:
向服务器发送位置信息获取请求;位置信息获取请求用于请求获取存储有消息队列中的数据的电子设备的位置信息;
接收服务器发送的位置信息。
本公开实施例还对应提供一种数据获取装置,可以应用于服务器。图12示出了本公开实施例提供的数据获取装置的结构示意图。如图12所示,该数据获取装置可以包括:接收单元1201和发送单元1202;
接收单元1201,用于接收客户端发送的位置信息获取请求;位置信息获取请求用于请求获取存储有消息队列中的数据的电子设备的位置信息;位置信息获取请求为客户端从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时发送的;消息队列中的数据通过分布式文件***存储于电子设备中;
发送单元1202,用于向客户端发送位置信息,以使得客户端基于电子设备的位置信息,从电子设备获取消息队列中满足预设条件的待读取数据;预设条件包括:待读取数据在分布式文件***中的存储分区的目录下的文件完整,且待读取数据归属于消息队列中的前M段数据;M为大于0且小于N的整数;N为消息队列中的数据段数。
如上所述,本公开实施例可以根据上述方法示例对客户端进行功能模块的划分。其中,上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。另外,还需要说明的是,本公开实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。
关于上述实施例中的数据获取装置,其中各个模块执行操作的具体方式、以及具备的有益效果,均已经在前述方法实施例中进行了详细描述,此处不再赘述。
本公开实施例还提供一种客户端,客户端可以是手机、电脑等用户客户端。图13示出了本公开实施例提供的客户端的结构示意图。该客户端可以是数据获取装置可以包括至少一个处理器61,通信总线62,存储器63以及至少一个通信接口64。
处理器61可以是一个处理器(central processing units,CPU),微处理单元,ASIC,或一个或多个用于控制本公开方案程序执行的集成电路。作为一个示例,结合图11,客户端中的处理单元1102实现的功能与图13中的处理器61实现的功能相同。
通信总线62可包括一通路,在上述组件之间传送信息。
通信接口64,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如服务器、以太网,无线接入网(radio access network,RAN),无线局域网(wireless localarea networks,WLAN)等。作为一个示例,
存储器63可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理单元相连接。存储器也可以和处理单元集成在一起。
其中,存储器63用于存储执行本公开方案的应用程序代码,并由处理器61来控制执行。处理器61用于执行存储器63中存储的应用程序代码,从而实现本公开方法中的功能。
在具体实现中,作为一种实施例,处理器61可以包括一个或多个CPU,例如图13中的CPU0和CPU1。
在具体实现中,作为一种实施例,客户端可以包括多个处理器,例如图13中的处理器61和处理器65。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,客户端还可以包括输入设备66和输出设备67。输入设备66和输出设备67通信,可以以多种方式接受用户的输入。例如,输入设备66可以是鼠标、键盘、触摸屏设备或传感设备等。输出设备67和处理器61通信,可以以多种方式来显示信息。例如,输出设备61可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备等。
本领域技术人员可以理解,图13中示出的结构并不构成对客户端的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本公开实施例还提供一种服务器。图14示出了本公开实施例提供的服务器的结构示意图。该服务器可以是数据获取装置。该服务器可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器71和一个或一个以上的存储器72。其中,存储器72中存储有至少一条指令,至少一条指令由处理器71加载并执行以实现上述各个方法实施例提供的数据获取方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
本公开还提供了一种数据获取***,该数据获取***包括客户端和服务器。客户端,用于执行上述图2-图10中,客户端所执行的数据获取方法。服务器,用于执行上述服务器所执行的数据获取方法。
本公开还提供了一种包括指令的计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述计算机可读存储介质中的指令由计算机设备的处理器执行时,使得计算机能够执行上述所示实施例提供的数据获取方法。例如,计算机可读存储介质可以为包括指令的存储器63,上述指令可由客户端的处理器61执行以完成上述方法。又例如,计算机可读存储介质可以为包括指令的存储器72,上述指令可由服务器的处理器71执行以完成上述方法。可选地,计算机可读存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
本公开还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行上述图1-图10任一附图所示的数据获取方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据获取方法,其特征在于,包括:
当从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时,获取存储有所述消息队列中的数据的电子设备的位置信息;所述消息队列中的数据通过分布式文件***存储于所述电子设备中;
基于所述电子设备的位置信息,从所述电子设备获取所述消息队列中的待读取数据。
2.根据权利要求1所述的数据获取方法,其特征在于,所述基于所述电子设备的位置信息,从所述电子设备获取所述消息队列中的待读取数据,包括:
当所述待读取数据在所述分布式文件***中的存储分区的目录下的文件完整,且所述待读取数据归属于所述消息队列中的前M段数据时,基于所述电子设备的位置信息,从所述电子设备获取所述消息队列中的待读取数据;所述M为大于0且小于N的整数;所述N为所述消息队列中的数据段数。
3.一种数据获取方法,其特征在于,包括:
接收客户端发送的位置信息获取请求;所述位置信息获取请求用于请求获取存储有消息队列中的数据的电子设备的位置信息;所述位置信息获取请求为所述客户端从所述服务器获取所述消息队列中的数据的滞后时间大于预设时间阈值时发送的;所述消息队列中的数据通过部署分布式文件***存储于所述电子设备中;
向所述客户端发送所述位置信息,以使得所述客户端基于所述电子设备的位置信息,从所述电子设备获取所述消息队列中满足预设条件的待读取数据;所述预设条件包括:所述待读取数据在所述分布式文件***中的存储分区的目录下的文件完整,且所述待读取数据归属于所述消息队列中的前M段数据;所述M为大于0且小于N的整数;所述N为所述消息队列中的数据段数。
4.一种数据获取装置,其特征在于,包括:获取单元;
所述获取单元,用于当从服务器获取消息队列中的数据的滞后时间大于预设时间阈值时,获取存储有所述消息队列中的数据的电子设备的位置信息;所述消息队列中的数据通过分布式文件***存储于所述电子设备中;
所述获取单元,还用于基于所述电子设备的位置信息,从所述电子设备获取所述消息队列中的待读取数据。
5.一种数据获取装置,其特征在于,包括:接收单元和发送单元;
所述接收单元,用于接收客户端发送的位置信息获取请求;所述位置信息获取请求用于请求获取存储有消息队列中的数据的电子设备的位置信息;所述位置信息获取请求为所述客户端从所述服务器获取所述消息队列中的数据的滞后时间大于预设时间阈值时发送的;所述消息队列中的数据通过分布式文件***存储于所述电子设备中;
所述发送单元,用于向所述客户端发送所述位置信息,以使得所述客户端基于所述电子设备的位置信息,从所述电子设备获取所述消息队列中满足预设条件的待读取数据;所述预设条件包括:所述待读取数据在所述分布式文件***中的存储分区的目录下的文件完整,且所述待读取数据归属于所述消息队列中的前M段数据;所述M为大于0且小于N的整数;所述N为所述消息队列中的数据段数。
6.一种客户端,其特征在于,所述客户端包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1或2所述的数据获取方法。
7.一种服务器,其特征在于,所述服务器包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求3所述的数据获取方法。
8.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,
当所述计算机可读存储介质中的指令由客户端的处理器执行时,使得所述客户端能够执行如权利要求1或2所述的数据获取方法;
或者,当所述计算机可读存储介质中的指令由服务器的处理器执行时,使得所述服务器能够执行如权利要求3所述的数据获取方法。
9.一种计算机程序产品,包括指令,其特征在于,当所述指令在客户端上运行时,使得所述客户端执行如权利要求1或2所述的数据获取方法;
或者,当所述指令在服务器上运行时,使得所述服务器能够执行如权利要求3所述的数据获取方法。
10.一种数据获取***,其特征在于,所述数据获取***包括:客户端和服务器;
所述客户端,用于执行如权利要求1或2所述的数据获取方法;
所述服务器,用于执行如权利要求3所述的数据获取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111193046.6A CN113886329A (zh) | 2021-10-13 | 2021-10-13 | 一种数据获取方法、装置、***、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111193046.6A CN113886329A (zh) | 2021-10-13 | 2021-10-13 | 一种数据获取方法、装置、***、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113886329A true CN113886329A (zh) | 2022-01-04 |
Family
ID=79002744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111193046.6A Pending CN113886329A (zh) | 2021-10-13 | 2021-10-13 | 一种数据获取方法、装置、***、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113886329A (zh) |
-
2021
- 2021-10-13 CN CN202111193046.6A patent/CN113886329A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9740435B2 (en) | Methods for managing content stored in cloud-based storages | |
US8799409B2 (en) | Server side data cache system | |
CN104537076B (zh) | 一种文件读写方法及装置 | |
KR20160135250A (ko) | 연결 해제의 기간을 위한 애플리케이션 데이터의 프리페치 | |
US10432703B2 (en) | On-demand session upgrade in a coordination service | |
CN115277566B (zh) | 数据访问的负载均衡方法、装置、计算机设备及介质 | |
EP3384384A1 (en) | Methods and devices for acquiring data using virtual machine and host machine | |
CN112346871A (zh) | 一种请求处理方法及微服务*** | |
CN112600761A (zh) | 一种资源分配的方法、装置及存储介质 | |
CN103500108A (zh) | ***内存访问方法、节点控制器和多处理器*** | |
US11055223B2 (en) | Efficient cache warm up based on user requests | |
US20170243466A1 (en) | Generating Recommended Maintenance Steps For Industrial Machines Based On Historical Interaction Data With A Mobile Application | |
CN113760638A (zh) | 一种基于kubernetes集群的日志服务方法和装置 | |
CN116361584A (zh) | 页面数据的处理方法、装置、计算机设备及存储介质 | |
CN116521639A (zh) | 一种日志数据的处理方法、电子设备和计算机可读介质 | |
US20190327342A1 (en) | Methods and electronic devices for data transmission and reception | |
CN113886329A (zh) | 一种数据获取方法、装置、***、设备及存储介质 | |
KR102571517B1 (ko) | 트래픽 조정 방법 및 장치 | |
KR101694301B1 (ko) | 스토리지 시스템의 파일 처리 방법 및 그 방법에 따른 데이터 서버 | |
US11178216B2 (en) | Generating client applications from service model descriptions | |
CN112950833B (zh) | 一种门禁设备的授权方法、装置、设备及存储介质 | |
CN111327511B (zh) | 即时通讯方法、***、终端设备与存储介质 | |
US9880912B2 (en) | Information processing system, control method of information processing system, and non-transitory computer-readable storage medium | |
US9037805B2 (en) | Managing a region cache | |
CN114579265A (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 |