一种确保客户端数据采集准确性的方法及客户端

文档序号:717306 发布日期:2021-04-16 浏览:23次 >En<

阅读说明:本技术 一种确保客户端数据采集准确性的方法及客户端 (Method for ensuring data acquisition accuracy of client and client ) 是由 孙夺 施王兴 杜晓祥 于 2021-01-15 设计创作,主要内容包括:本发明实施例公开了一种确保客户端数据采集准确性的方法及客户端,所述方法包括:向服务器端发送请求以获取在服务器端预先配置的需要采集的事件以及事件对应的优先级;将生成的不同优先级的事件数据在内存中进行序列化并存储到磁盘上;由所述磁盘中读取数据并按照优先级从高到低的顺序依次将数据放入待发送队列后发送至服务器端,若发生通信连接中断导致数据发送失败,则将发送失败的数据存储至磁盘中待下次重新发送。采用了数据实时持久化以及多级缓存的方式,在客户端程序崩溃、异常或者网络状况不佳的情况下,能够保证数据不丢失,在程序再次启动时可以将之前缓存的数据发送出来,确保数据采集准确性和完整性。(The embodiment of the invention discloses a method for ensuring the data acquisition accuracy of a client and the client, wherein the method comprises the following steps: sending a request to a server to acquire an event to be acquired and a priority corresponding to the event, wherein the event is pre-configured at the server; serializing the generated event data with different priorities in a memory and storing the event data on a magnetic disk; and reading data from the disk, sequentially putting the data into a queue to be sent according to the priority from high to low, then sending the queue to a server, and if the data is failed to be sent due to the interruption of the communication connection, storing the data failed to be sent into the disk for the next resending. The data real-time persistence and multi-level caching are adopted, so that the data can be ensured not to be lost under the condition that a client program is crashed, abnormal or the network condition is not good, the cached data can be sent out when the program is restarted, and the data acquisition accuracy and integrity are ensured.)

一种确保客户端数据采集准确性的方法及客户端

技术领域

本发明实施例涉及计算机技术领域,具体涉及一种确保客户端数据采集准确性的方法及客户端。

背景技术

传统的客户端数据采集技术,一般直接使用HTTP请求进行数据传输,同时并没有重传机制,因此一旦传输失败,数据就会丢失。同时由于没有持久化方案,一旦客户端处于弱网或者断网的状态下,数据无法即时上传,也会造成数据丢失,这种现象在移动设备上会更加明显。这些缺陷会导致数据的采集完整性和准确性大幅下降。

发明内容

为此,本发明实施例提供一种确保客户端数据采集准确性的方法及客户端,以解决现有的客户端数据采集容易发生数据丢失,导致数据的采集准确性和完整性大幅下降的问题。

为了实现上述目的,本发明实施例提供如下技术方案:

根据本发明实施例的第一方面,提出了一种确保客户端数据采集准确性的方法,所述方法包括:

向服务器端发送请求以获取在服务器端预先配置的需要采集的事件以及事件对应的优先级;

将生成的不同优先级的事件数据在内存中进行序列化并存储到磁盘上;

由所述磁盘中读取数据并按照优先级从高到低的顺序依次将数据放入待发送队列后发送至服务器端,若发生通信连接中断导致数据发送失败,则将发送失败的数据存储至磁盘中待下次重新发送。

进一步地,由所述磁盘中读取数据并按照优先级从高到低的顺序依次将数据放入待发送队列后发送至服务器端,具体还包括:

按照预设时间间隔发送数据,并根据预先配置的最大占用网络带宽对每次发送的最大数据量进行限定,若超出限定网络带宽配额则将数据留到下次发送。

进一步地,由所述磁盘中读取数据并按照优先级从高到低的顺序依次将数据放入待发送队列后发送至服务器端,具体还包括:

对于处于相同优先级的不同事件,按照事件结束时间戳的先后顺序依次将数据放入待发送队列后发送至服务器端。

进一步地,由所述磁盘中读取数据并按照优先级从高到低的顺序依次将数据放入待发送队列后发送至服务器端,具体还包括:

在每次数据发送过程中,若存在数据发送失败,则将发送失败的数据存储到发送失败缓存文件中,并在数据发送时优先发送失败数据,其次再根据优先级顺序发送数据。

进一步地,若发生通信连接中断导致数据发送失败,则将发送失败的数据存储至磁盘中待下次重新发送,具体还包括:

在每次数据发送过程中,优先发送当前通信连接下的数据,且在数据量不超过每次限定网络带宽配额的前提下,再将之前通信连接中断产生的旧连接下的失败数据进行再次重新发送。

进一步地,将生成的不同优先级的数据在内存中进行数据序列化并存储到磁盘上,具体还包括:

将存储的不同优先级的数据文件进行分文件处理,并设置单个文件大小,若单个文件大小超出限制,则新建一个文件继续存储数据。

进一步地,所述方法还包括:

按照预设时间间隔检查对内存和磁盘的占用,若对内存或磁盘的占用超出预先配置的最大占用内存空间或最大占用磁盘空间,则优先丢弃之前通信连接中断产生的旧连接下的失败数据,其次按优先级由低到高的顺序丢弃数据,对相同优先级下的不同事件,按照事件结束时间戳从先到后的顺序丢弃数据。

进一步地,向服务器端发送请求以获取在服务器端预先配置的需要采集的事件以及事件对应的优先级,具体还包括:

在网络可用的情况下,按照预设时间间隔向服务器端发送ping请求,如果发现服务端事件配置有更新则发送更新请求,更新本地数据采集策略。

根据本发明实施例的第二方面,提出了一种客户端,所述客户端包括:

请求模块,用于向服务器端发送请求以获取在服务器端预先配置的需要采集的事件以及事件对应的优先级;

数据存储模块,用于将生成的不同优先级的事件数据在内存中进行序列化并存储到磁盘上;

数据发送模块,用于由所述磁盘中读取数据并按照优先级从高到低的顺序依次将数据放入待发送队列后发送至服务器端,若发生通信连接中断导致数据发送失败,则将发送失败的数据存储至磁盘中待下次重新发送。

根据本发明实施例的第三方面,提出了一种计算机存储介质,所述计算机存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于被一种客户端执行如上所述的一种确保客户端数据采集准确性的方法。

本发明实施例具有如下优点:

本发明实施例提出的一种确保客户端数据采集准确性的方法及客户端,所述方法包括:向服务器端发送请求以获取在服务器端预先配置的需要采集的事件以及事件对应的优先级;将生成的不同优先级的事件数据在内存中进行序列化并存储到磁盘上;由所述磁盘中读取数据并按照优先级从高到低的顺序依次将数据放入待发送队列后发送至服务器端,若发生通信连接中断导致数据发送失败,则将发送失败的数据存储至磁盘中待下次重新发送。采用了数据实时持久化以及多级缓存的方式,在客户端程序崩溃、异常或者网络状况不佳的情况下,能够保证数据不丢失,在程序再次启动时可以将之前缓存的数据发送出来,确保数据采集准确性和完整性。

附图说明

为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创

图1为本发明实施例1提供的一种确保客户端数据采集准确性的方法的流程示意图;

图2为本发明实施例1提供的一种确保客户端数据采集准确性的方法中数据存储结构示意图;

图3为本发明实施例1提供的一种确保客户端数据采集准确性的方法中数据采集流程示意图;

图4为本发明实施例1提供的一种确保客户端数据采集准确性的方法中数据发送流程示意图;

图5为本发明实施例2提供的一种客户端的结构示意图。

具体实施方式

以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例1提出了一种确保客户端数据采集准确性的方法,如图1所示,该方法包括以下步骤:

S110、向服务器端发送请求以获取在服务器端预先配置的需要采集的事件以及事件对应的优先级。

用户可以在服务端配置需要采集的事件,并配置事件的优先级,优先级可分为1-3级。事件是用户行为等一系列操作或者APP内自身发生的变化,被人为定义出来,比如登录APP的登录事件、退出登录APP的退出事件等,数据是以事件的形式进行传输的。客户端启动时会向服务器请求需要采集的事件以及对应的优先级。

进一步地,步骤S110具体还包括:客户端运行期间,在网络可用的情况下,按照预设时间间隔向服务器端发送ping请求,如果发现服务端事件配置有更新则发送更新请求,更新本地数据采集策略。时间间隔可以设置为20S。

通过在服务器配置采集的事件和事件优先级,可以动态地更新客户端采集策略,无需重启客户端,保证了采集策略变化即时生效,数据即时采集及传输。

S120、将生成的不同优先级的事件数据在内存中进行序列化并存储到磁盘上。

客户端每次发送数据之前,会先将内存内的数据进行序列化,并存储到磁盘上,发送数据时从磁盘直接读取。数据存储结构如图2所示,存储的数据既包括当前连接的数据,也包括旧连接的数据,旧连接的数据可能包括多个,数据按照不同的优先级进行存储,相同的优先级下的不同事件分别在不同的文件块中进行存储,发送失败缓存文件用于存储发送失败的数据。将存储的不同优先级的数据文件进行分文件处理,并设置单个文件大小,若单个文件大小超出限制,则新建一个文件继续存储数据。

采用了按数据优先级划分文件的存储方式,优先传输高优先级数据,因此在网络状况不佳的情况下,依然能够保证高优先级数据及时发送,而当本地内存或磁盘等资源不足时,也可以优先删除低优先级数据。

进一步地,该方法还包括:按照预设时间间隔检查对内存和磁盘的占用,若对内存或磁盘的占用超出预先配置的最大占用内存空间或最大占用磁盘空间,则优先丢弃之前通信连接中断产生的旧连接下的失败数据,其次按优先级由低到高的顺序丢弃数据,对相同优先级下的不同事件,按照事件结束时间戳从先到后的顺序丢弃数据。客户端默认每200毫秒,检查采集系统对内存和磁盘的占用。该时间间隔可进行配置,最小200毫秒。若内存和磁盘大小超出限制,则优先丢弃旧连接的数据,其次丢弃低优先级数据,再次丢弃最高优先级最早的数据。

数据采集流程如图3所示,在数据生成后在内存中进行数据序列化,序列化后数据加入临时缓存队列,检测临时缓存队列中中是否有数据,每200毫秒执行一次操作,若有数据,则根据事件的优先级找到对应的存储队列,检测存储队列尾节点大小是否超过配置大小,若超过则新建一个存储节点并设置为尾节点,然后将数据写入尾节点,并检测总存储文件是否超过配置阈值,若超过,优先丢弃旧连接的数据,其次丢弃低优先级数据,再次丢弃最高优先级最早的数据。

通过提供多个可配置功能参数,方便用户根据自身设备和程序特点进行配置。可配置程序最大占用磁盘空间,最大占用内存空间和最大占用网络带宽。最大占用磁盘空间和最大占用内存空间的配置,当本方案占用资源大小达到配置值时,则优先丢弃旧连接的数据,其次丢弃本次连接低优先级数据,再次丢弃本次连接最高优先级最早的数据。本方案每200毫秒发送一次数据,会根据配置的最大网络带宽占用决定每次发送数据的大小,从而达到不影响程序内其他网络传输速度的目的。

S130、由磁盘中读取数据并按照优先级从高到低的顺序依次将数据放入待发送队列后发送至服务器端,若发生通信连接中断导致数据发送失败,则将发送失败的数据存储至磁盘中待下次重新发送。

进一步地,步骤S130具体还包括:按照预设时间间隔发送数据,并根据预先配置的最大占用网络带宽对每次发送的最大数据量进行限定,若超出限定网络带宽配额则将数据留到下次发送。客户端每200毫秒发送一次数据,每次发送的最大数据量为单位事件带宽限制/发送频率。若本次待发送数据量超过可发送的最大数据量,则数据留到下一次再进行发送。避免单次发送数据过多,过度占用网络带宽。

进一步地,步骤S130具体还包括:对于处于相同优先级的不同事件,按照事件结束时间戳的先后顺序依次将数据放入待发送队列后发送至服务器端。不同的事件可以配置为相同的优先级,比如APP登录事件和退出事件对于APP运营来说均是同等重要,相同优先级的不同事件对应的数据,事件结束时间戳在后的可以优先发送。

进一步地,步骤S130具体还包括:在每次数据发送过程中,若存在数据发送失败,则将发送失败的数据存储到发送失败缓存文件中,并在数据发送时优先发送失败数据,其次再根据优先级顺序发送数据。准备待发送数据时,优先发送当前连接的数据,其次检查是否有发送失败数据,若有发送失败数据则优先发送失败数据,再次是根据优先级依次获取数据。

进一步地,步骤S130具体还包括:在每次数据发送过程中,优先发送当前通信连接下的数据,且在数据量不超过每次限定网络带宽配额的前提下,再将之前通信连接中断产生的旧连接下的失败数据进行再次重新发送。

数据发送流程如图4所示,每200毫秒发送一次数据,根据配置网络宽带限制获取本次传输配额,优先发送当前连接的数据,首先检查当前连接是否有发送失败数据,若有发送失败数据则将发送失败缓存文件加入到待发送队列发送到服务器,再按照优先级顺序从高到低将数据放入待发送队列发送到服务器,若此时待发送队列的大小仍未超出网络带宽配额,则将存储的旧连接数据按照事件顺序由新到旧依次放入待发送队列发送到服务器,直至达到网络带宽配额。

通过多层级的持久化缓存方式,在数据生成后即时序列化存储到本地存储设备上,除非程序在数据生成到存储完成的极短时间内崩溃,否则数据都不会丢失。并且使用了连接→数据优先级→数据块的多级缓存策略,使各部分数据在读写时互不干扰,同时在数据量过大需要丢弃数据时,提供了现成的丢弃策略。

采用了存储多个连接数据的机制,因此当程序发生崩溃时,可以将程序崩溃前的数据进行持久化,待程序再次启动时,可以将之前连接的数据也传输上来。既可以保证崩溃之前数据采集的完整,也可以作为客户端程序崩溃分析的数据基础,可以为APM等服务提供数据支撑。

本发明实施例提出的一种确保客户端数据采集准确性的方法,采用了数据实时持久化以及多级缓存的方式,在客户端程序崩溃、异常或者网络状况不佳的情况下,能够保证数据不丢失,在程序再次启动时可以将之前缓存的数据发送出来,确保数据采集准确性和完整性;并实现了对磁盘空间大小、内存空间大小和网络带宽的灵活配置,可以避免由资源占用过多引起的程序异常。

与上述实施例1相对应的,本发明实施例2提出了一种客户端,如图5所示,该客户端包括:

请求模块210,用于向服务器端发送请求以获取在服务器端预先配置的需要采集的事件以及事件对应的优先级;

数据存储模块220,用于将生成的不同优先级的事件数据在内存中进行序列化并存储到磁盘上;

数据发送模块230,用于由磁盘中读取数据并按照优先级从高到低的顺序依次将数据放入待发送队列后发送至服务器端,若发生通信连接中断导致数据发送失败,则将发送失败的数据存储至磁盘中待下次重新发送。

本发明实施例2提出的一种客户端中各部件所执行的功能均已在上述实施例1中做了详细介绍,因此这里不做过多赘述。

与上述实施例相对应的,本发明实施例3提出了一种计算机存储介质,计算机存储介质中包含一个或多个程序指令,一个或多个程序指令用于被一种客户端执行如上的一种确保客户端数据采集准确性的方法。

虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种数据预取的方法及相关设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类