CN115134352B - 一种埋点数据上传方法、装置、设备及介质 - Google Patents
一种埋点数据上传方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115134352B CN115134352B CN202210744360.7A CN202210744360A CN115134352B CN 115134352 B CN115134352 B CN 115134352B CN 202210744360 A CN202210744360 A CN 202210744360A CN 115134352 B CN115134352 B CN 115134352B
- Authority
- CN
- China
- Prior art keywords
- queue
- data
- uploading
- buried
- buried point
- 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/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- 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]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及通信技术领域,具体公开了一种埋点数据上传方法、装置、设备及介质,包括:响应于应用程序启动指令,对埋点进行初始化,得到初始化后的埋点;通过初始化后的埋点获取应用程序运行过程中的埋点数据以及埋点数据类型,将埋点数据存储在阻塞队列中;获取当前网络环境,当当前网络环境满足预设的条件时,根据预设的埋点数据类型与并发队列的对应关系,将阻塞队列中的埋点数据存储在并发队列中;将并发队列中满足预设上传条件的埋点数据上传至云端。本发明通过先后将数据存储在阻塞队列和并发队列中,当满足预设的上传条件时将数据上传至云端,避免了数据在无网络时丢失,保证了数据安全,提高了数据上传速率。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种埋点数据上传方法、装置、设备及介质。
背景技术
通信技术飞速发展,数据的传输效率日益增长,用户得以在有限的屏幕空间上体验更加丰富多彩的互联网服务。为了丰富用户的生活,改善用户体验,大大小小各行各业的公司都在互联网化,前赴后继将自家的服务打包成APP(Application,应用程序),送到用户设备上。在汽车智能控制领域,为了将汽车打造成不亚于手机的智能终端,为用户提供便捷实用的智能用车体验,而智能手机作为最贴近用户的设备,为了让汽车离用户更近,部分车企开发了能便捷获取车辆信息与控车功能的APP,供用户安装到手机上以获取车辆信息并进行远程控制。同时,为了更好地服务车主,在用户许可地范围内对车主使用APP内各个功能的数据进行采集,根据这些数据来优化改进APP的功能体验,这些APP内采集的数据会在合适的时候上传至公司云端,供团队分析研究以制定APP改进方向。
在基于安卓(Android)系统开发的APP中,大部分应用都是有埋点的,安卓埋点时至今日早已有许多埋点的SDK(Software Development Kit,软件开发工具包)可直接使用,埋点SDK为众多APP提供了便捷的埋点使用方法,但是现有的埋点SDK存在数据安全和无法根据需求进行修改的问题。
另外,现有技术中,部分技术致力于提高埋点数据的统计分析效率、实现多业务埋点数据库的构建。但是现有的埋点数据上传方法效率过低,无法支持日益强大的埋点数据分析需求。
发明内容
为解决上述技术问题,本申请的实施例提供了一种埋点数据上传方法、装置、设备及介质,能够克服相关技术中存在的数据安全、无法根据需求进行修改以及埋点数据上传效率过低的问题。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请地实践而习得。
于本申请的一个实施例中,一种埋点数据上传方法,包括:
响应于应用程序启动指令,对埋点进行初始化,得到初始化后的埋点;
通过初始化后的埋点获取应用程序运行过程中的埋点数据以及埋点数据类型,将所述埋点数据存储在阻塞队列中;
获取当前网络环境,当所述当前网络环境满足预设的条件时,根据预设的所述埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中;
将所述并发队列中满足预设上传条件的埋点数据上传至云端。
于本申请的一个实施例中,将所述并发队列中满足预设上传条件的埋点数据上传至云端之后,包括:
响应于应用程序关闭指令,删除所述阻塞队列和并发队列中的埋点数据,以释放所述阻塞队列和并发队列中的存储空间。
于本申请的一个实施例中,所述对埋点进行初始化,得到初始化后的埋点之后,包括:
若所述初始化后的埋点中存在应用程序上一次运行时遗留的埋点数据,则将所述遗留的埋点数据存储至所述阻塞队列中。
于本申请的一个实施例中,所述对埋点进行初始化,得到初始化后的埋点,包括:
初始化埋点实例,所述埋点实例用于响应外部操控指令;
创建当前网络环境接收对象,所述当前网络环境接收对象用于实时接收应用程序当前所处网络环境;
创建数据存储队列,所述数据存储队列包括阻塞队列和并发队列;
创建埋点线程,所述埋点线程用于控制所述应用程序运行过程中产生的埋点数据的存储和上传;
根据所述初始化后的埋点实例、当前网络环境接收对象、存储队列和埋点线程得到所述初始化后的埋点。
于本申请的一个实施例中,所述获取当前网络环境,当所述当前网络环境满足预设的条件时,根据预设的所述埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中,包括:
预设时间间隔内在埋点子线程中获取所述当前网络环境;
若所述当前网络环境满足预设的条件,则根据预设的埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中;
若所述当前网络环境不满足预设的条件,则阻塞埋点主线程,当所述当前网络环境变更为满足预设的条件时解除线程阻塞,将所述阻塞队列中的埋点数据存储在所述并发队列中。
于本申请的一个实施例中,将所述并发队列中满足预设上传条件的埋点数据上传至云端,包括:
根据预设的上传条件遍历所述并发队列中的埋点数据,筛选出所述满足预设上传条件的埋点数据;
将所述满足预设上传条件的埋点数据存储在预设的对象中,通过公共网络框架将所述对象上传至云端。
于本申请的一个实施例中,所述方法还包括:
在对埋点进行初始化时,将初始化消息发送至埋点功能内部消息中心,用于控制子线程进行埋点初始化;
在对所述埋点数据进行存储时,所述功能内部消息中心转发数据存储消息,用于控制子线程存储所述埋点数据,并在预设的延时时间后上传所述埋点数据;
在对所述埋点数据进行上传时,所述功能内部消息中心转发数据上传消息,已控制子线程将所述并发队列中满足预设上传条件的埋点数据上传至云端;
在将所述并发队列中满足预设上传条件的埋点数据上传至云端后,所述功能内部消息中心转发数据删除消息,用于控制所述子线程删除所述阻塞队列和并发队列中的埋点数据。
于本申请的一个实施例中,提供了一种埋点数据上传装置,所述装置包括:
初始化模块,用于响应于应用程序启动指令,对埋点进行初始化,得到初始化后的埋点;
第一存储模块,用于通过初始化后的埋点获取应用程序运行过程中的埋点数据以及埋点数据类型,将所述埋点数据存储在阻塞队列中;
第二存储模块,用于获取当前网络环境,当所述当前网络环境满足预设的条件时,根据预设的所述埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中;
埋点数据上传模块,用于将所述并发队列中满足预设上传条件的埋点数据上传至云端。
于本申请的一个实施例中,提供了一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如上所述的埋点数据上传方法。
于本申请的一个实施例中,提供了一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上所述的埋点数据上传方法。
在本申请的实施例所提供的技术方案中,现有技术多基于第三方公司提供的埋点SDK对埋点数据进行采集并上传,该方式不能确保数据的安全性,并且现有的埋点数据上传方法效率较慢,无法满足高效传输的需求。本申请则是响应于应用程序启动指令,对埋点进行初始化,初始化过程中能够检测埋点中是否有遗留数据,以避免数据的丢失,同时还能更新配置文件、创建线程;通过初始化后的埋点获取应用程序运行过程中的埋点数据和埋点数据类型,将埋点数据存储在阻塞队列中;获取当前网络环境,当当前网络环境满足预设的条件时,根据预设的埋点数据类型与并发队列的对应关系,将阻塞队列中的埋点数据存储在并发队列中;将埋点数据先后存储在阻塞队列和并发队列中,根据预设的两个条件对数据进行存储和上传,避免了数据拥堵和线程阻塞,提高了埋点数据上传效率。
应当理解的,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述地附图仅仅是本申请地一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动地前提下还能根据这些附图获得其他地附图。在附图中:
图1是本申请涉及的一种实施环境的示意图;
图2是本申请的一示例性实施例示出的一种埋点数据上传方法的流程图;
图3是本申请的一示例性实施例示出的埋点的生命周期示意图;
图4是本申请的一示例性实施例示出的埋点功能内部消息中心接收的数据类型示意图;
图5是本申请的一示例性实施例示出的埋点数据上传流程示意图;
图6是本申请的一示例性实施例示出的一种埋点数据上传装置的结构示意图;
图7示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在本申请中提及的“多个”是指两个或者两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
在此,介绍与本申请涉及的缩略词和关键术语定义:
埋点:又名事件追踪(Event Tracking),主要针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程,在需要检测用户行为数据的地方加上一段代码,采集相关埋点数据到云端,最终在云端呈现。埋点在应用中特定的流程收集一些信息,用来跟踪应用使用的状况,后续用来进一步优化产品或是提供运营的数据支撑,包括访问数(Visits),访客数(Visitor),停留时长(Time On Site),页面浏览数(Page Views)和跳出率(Bounce Rate)。这样的信息收集可以大致分为两种:页面统计(track this virtualpage view),统计操作行为(track this button by an event)。
LinkedBlockingQueue:是一个单向链表实现的阻塞队列。该队列按FIFO(先进先出)排序元素,新元素插入到队列的尾部,并且队列获取操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。此外,LinkedBlockingQueue还是可选容量的(防止过度膨胀),即可以指定队列的容量。如果不指定,默认容量大小等于Integer.MAX_VALUE。
阻塞队列:当阻塞队列为空时,获取数据(take)的操作是阻塞的;当阻塞队列为满时,添加(put)操作时阻塞的。
ConcurrentLinkedQueue:ConcurrentLinkedQueue是一个基于链接节点的无界线程安全的队列,按照先进先出原则对元素进行排序。新元素从队列尾部插入,而获取队列元素,则需要从队列头部获取。一个基于链接节点的无界线程安全队列。此队列按照FIFO(先进先出)原则对元素进行排序。队列的头部是队列中时间最长的元素。队列的尾部是队列中时间最短的元素。
线程:thread,是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
目前,埋点数据的获取大多采用第三方的SDK实现,主要有代码埋点、可视化埋点、无埋点三种方法。第三方埋点存在数据泄露分红险,且无法支持之后的数据驱动,用户画像等的实现还是需要依赖自己研发的埋点实现。在埋点设计时,除了埋点方式外,埋点数据的上传方式也将影响着后续的数据分析结果。目前在将埋点数据上传时常用的方案包括:传统XHR请求(XMLHttpRequest,可扩展超文本传输请求)、Image对象(嵌入的图像)和BeaconAPI(信标接口),上述三种常用的埋点数据上传方式会对数据量进行限制,同时在页面关闭时有可能导致数据上传失败。
本申请实施例提出的埋点数据上传方法、装置、设备及介质涉及以上记载的阻塞队列和并发队列,以下将对这些实施例进行详细说明。
首先请参阅图1,图1是本申请涉及的一种实施环境的示意图。该实施环境包括终端设备101、102、103,网络104和云端105。网络104可以在终端设备101、102、103和云端之间提供通信链路的介质。网络104可以包括各类连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104和云端105交互,以接收或发送数据等。其中,终端设备101、102、103可以是具有显示屏并且支持网页浏览、执行应用程序的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机、台式计算机、可穿戴设备、虚拟现实设备、智能家居、智能语音交互设备、智能家电、车载终端等等。本发明实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
云端105可以是提供各种服务的云端,例如获取终端设备101、102、103所采集的埋点数据进行存储并分析的云端。
云端105可以是独立的物理云端,也可以是多个物理云端构成的云端集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云云端等,本公开对此不做限制。
终端设备101、102、103可例如,响应于应用程序启动指令,对埋点进行初始化,得到初始化后的埋点;通过初始化后的埋点获取应用程序运行过程中的埋点数据,将所述埋点数据存储在阻塞队列中;获取当前网络环境,当所述当前网络环境满足预设的条件时,根据预设的埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中;将所述并发队列中满足预设上传条件的埋点数据上传至云端。
图2是本申请的一示例性实施例示出的一种埋点数据上传方法的流程图。本申请实施例所提供的方法可以由任意具备计算处理能力的电子设备来执行,例如该方法可以由上述图1实施例中的终端设备101、102、103来执行,也可以由云端105和终端设备101、102、103共同执行。在下面的实施例中,以终端设备101、102、103为执行主体为例进行举例说明,但本公开并不限定于此。
在一些实施例中,在执行以下埋点数据上传方法之前,终端设备101、102、103可以通过通过预先设计的埋点方案在前端或后端设置埋点。
参照图2,本申请实施例提供的埋点数据上传方法可以包括以下步骤。
在步骤S210中,响应于应用程序启动指令,对埋点进行初始化,得到初始化后的埋点。
在本申请的一实施例中,对埋点数据进行采集之前需要先进行埋点初始化,得到处理后的埋点。本实施例中,还对埋点的生命周期进行了预先定义,参见图3,图3是本申请的一示例性实施例示出的埋点的生命周期示意图。APP存在三种完整的状态,包括“APP启动”、“APP运行中”、“APP退出”,这三种状态分别对应三种埋点组件的生命周期,即为“初始化”、“录入数据”、“释放内存”。初始化即为本实施例中的埋点初始化,录入数据即为采集埋点数据并上传至云端,释放内存是在APP关闭后,释放埋点数据存储内存。生命周期的定义,能够方便埋点相关功能的正常使用,并兼顾终端设备的耗能,做到APP退出的同时也能清理埋点数据所占用的内存。
本实施例中,初始化过程供APP启动时调用,会初始化埋点相关的文件(读写埋点数据)、广播(监听网络变化)、线程(处理上传网络)、消息(handler)等;录入数据过程供APP埋点时调用的方法,所有埋点数据从此处开始进入埋点处理流程;释放内存即为数据销毁过程,供APP关闭时调用,用于妥善处理当前埋点数据,销毁埋点相关内存对象,释放部分内存。
在本申请的一实施例中,步骤S210具体包括如下步骤:
初始化埋点实例,所述埋点实例用于响应外部操控指令;
创建当前网络环境接收对象,所述当前网络环境接收对象用于实时接收应用程序当前所处网络环境;
创建数据存储队列,所述数据存储队列包括阻塞队列和并发队列;
创建埋点线程,所述埋点线程用于控制所述应用程序运行过程中产生的埋点数据的存储和上传;
根据所述初始化后的埋点实例、当前网络环境接收对象、存储队列和埋点线程得到所述初始化后的埋点。
在本申请的一实施例中,步骤S210之后还包括以下步骤:
若所述初始化后的埋点中存在上一次应用程序运行时遗留的埋点数据,则将所述遗留的埋点数据存储至所述阻塞队列中。
传统的埋点方案里存在埋点SDK未初始化完成前,无法有效保留埋点数据的弊端;本实施例中在埋点初始化未完成前支持先将埋点数据临时存储在阻塞队列中,待初始化完成,则从阻塞队列中取出埋点数据写入本地文件中,待后续上传至云端。
在步骤S220中,通过初始化后的埋点获取应用程序运行过程中的埋点数据以及埋点数据类型,将埋点数据存储在阻塞队列中。
在本申请的一实施例中,将采集到的埋点数据先存储在阻塞队列LinkedBlockingQueue中,阻塞队列LinkedBlockingQueue可存储上一次应用程序运行时遗留的埋点数据,也可存储本次应用程序运行时采集的埋点数据。
在步骤S230中,获取当前网络环境,当当前网络环境满足预设的条件时,根据预设的所述埋点数据类型与并发队列的对应关系,将阻塞队列中的埋点数据存储在并发队列中。
在本申请的一实施例中,当前网络环境满足预设的条件时,可将阻塞队列中上一次应用程序运行时遗留的埋点数据和本次执行应用程序时采集的埋点数据转移至并发队列中。本实施例中,当网络可用时将阻塞队列头部的数据存储至并发队列中,当网络不可用时进行同步锁阻塞,不在阻塞队列的尾部添加数据。
在本申请的一实施例中,步骤S230具体包括如下步骤:
预设时间间隔内在埋点子线程中获取所述当前网络环境;
若所述当前网络环境满足预设的条件,则根据预设的埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中;
若所述当前网络环境不满足预设的条件,则阻塞埋点主线程,当所述当前网络环境变更为满足预设的条件时解除线程阻塞,将所述阻塞队列中的埋点数据存储在所述并发队列中。
考虑到将埋点数据上传至云端时需要网络,为了减少因网络不可用而导致的数据上传失败,进而数据丢失,本实施例中在上传前若检测到没有网络,则主动阻塞线程,直到接收到网络可用的广播时解除线程阻塞。本实施例中并发队列采用ConcurrentLinkedQueue,通过ConcurrentLinkedQueue存储阻塞队列中转移的埋点数据。
在步骤S240中,将所述并发队列中满足预设上传条件的埋点数据上传至云端。
在本申请的一实施例中,步骤S240具体包括如下步骤:
根据预设的上传条件遍历所述并发队列中的埋点数据,筛选出所述满足预设上传条件的埋点数据;
将所述满足预设上传条件的埋点数据存储在预设的对象中,通过公共网络框架将所述对象上传至云端。
在本实施例中,当埋点数据满足预设的上传条件时,直接遍历ConsurrentLinkedQueue内数据,然后放入预先设置好的map对象中,通过公共网络框架将包含埋点数据的map对象最为入参上传到云端。
在本申请的一实施例中,在步骤S240之后,还包括以下步骤:
响应于应用程序关闭指令,删除所述阻塞队列和并发队列中的埋点数据,以释放所述阻塞队列和并发队列中的存储空间。
本实施例中根据预先定义的生命周期,在埋点数据上传完成后,APP关闭时将埋点数据删除,以释放存储空间。
在本申请的一实施例中,本申请中的埋点数据上传方法还包括以下内容:
在对埋点进行初始化时,将初始化消息发送至埋点功能内部消息中心,用于控制子线程进行埋点初始化;
在对所述埋点数据进行存储时,所述功能内部消息中心转发数据存储消息,用于控制子线程存储所述埋点数据,并在预设的延时时间后上传所述埋点数据;
在对所述埋点数据进行上传时,所述功能内部消息中心转发数据上传消息,已控制子线程将所述并发队列中满足预设上传条件的埋点数据上传至云端;
在将所述并发队列中满足预设上传条件的埋点数据上传至云端后,所述功能内部消息中心转发数据删除消息,用于控制所述子线程删除所述阻塞队列和并发队列中的埋点数据。
本实施例中,当对埋点进行初始化时,埋点功能内部消息中心已经准备正式承担起内部消息按需转发的任务。参见图4,图4是本申请的一示例性实施例示出的埋点功能内部消息中心接收的数据类型示意图。埋点功能内部现有以下4大消息:UPLOAD_DIRECT_MSG,用于读取本地数据并准备上传;
RECORD_DATA_MSG,用于存储数据,延时预设时间后准备上传;
ALIGIN_DATA_MSG,用于将本地已上传数据删除;INIT_DATA_MSG,用于初始化日志线程,读取埋点数据并上传云端。
示例性的,在埋点功能初始化的时候,第4条消息“INIT_DATA_MSG”会被发送,在埋点功能内部消息中心接受到该消息后,会开始创建埋点线程,以便处理埋点数据并判断是否上传远端。本实施例中之所以启用消息中心,是因为部分行为触发需要延时进行,而安卓系统自带的handler用来处理这类消息即高效又便捷,比传统的让线程休眠的方式更加友好。
在本申请的一实施例中,对埋点数据上传流程进行详细说明。参见图5,图5是本申请的一示例性实施例示出的埋点数据上传流程示意图。阻塞队列LinkedBlockingQueue在网络不可用时进行同步锁阻塞,避免数据丢失,当网络可用时从中提取一条数据到ConsurrentLinkedQueue中;当满足预设的上传条件或APP关闭时,将ConsurrentLinkedQueue中存储的本地埋点数据上传到云端;或者将埋点数据根据数据类型存储到对应的ConsurrentLinkedQueue中,当达到预设的上传数量时,将ConsurrentLinkedQueue中的埋点数据上传到云端。在子线程中循环上述步骤,直到APP关闭。
应当注意,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的埋点数据上传方法。参见图6,图6是本申请的一示例性实施例示出的一种埋点数据上传装置的结构示意图。该埋点数据上传装置,包括初始化模块610、第一存储模块620、第二存储模块630、埋点数据上传模块640。
其中,初始化模块610,用于响应于应用程序启动指令,对埋点进行初始化,得到初始化后的埋点;
第一存储模块620,用于通过初始化后的埋点获取应用程序运行过程中的埋点数据以及埋点数据类型,将所述埋点数据存储在阻塞队列中;
第二存储模块630,用于获取当前网络环境,当所述当前网络环境满足预设的条件时,根据预设的所述埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中;
埋点数据上传模块640,用于将所述并发队列中满足预设上传条件的埋点数据上传至云端。
需要说明的是,上述实施例所提供的装置与上述实施例所提供的方法属于同一构思,其中各个模块和单元执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。
在本申请的一实施例中,还提供了一种电子设备,包括一个或多个处理器,以及存储装置,其中,存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得所述电子设备实现如上所述的埋点数据上传方法。
图7示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图7示出的电子设备的计算机系统700仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(Central Processing Unit,CPU)701,其可以根据存储在只读存储器(Read-Only Memory,ROM)702中的程序或者从存储部分708加载到随机访问存储器(Random Access Memory,RAM)703中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 703中,还存储有系统操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(Input/Output,I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不相同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
在本申请的一实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前的埋点数据上传方法。该计算机可读存储介质可以是上述实施例中描述的终端设备中所包含的,也可以是单独存在,而未装配入该终端设备中。
在本申请的一实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的埋点数据上传方法。
在本申请的一实施例中,还提供了一种计算机系统,包括中央处理单元(CentralProcessing Unit,CPU),其可以根据存储在只读存储器(Read-Only Memory,ROM)中的程序或者从存储部分加载到随机访问存储器(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM中,还存储有系统操作所需的各种程序和数据。CPU、ROM以及RAM通过总线彼此相连。输入/输出(Input/Output,I/O)接口也连接至总线。
以下部件连接至I/O接口:包括键盘、鼠标等的输入部分;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分。通信部分经由诸如因特网的网络执行通信处理。驱动器也根据需要连接至I/O接口。可拆卸介质,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储部分。
上述内容,仅为本申请的较佳示例性实施例,并非用于限制本申请的实施方案,本领域普通技术人员根据本申请的主要构思和精神,可以十分方便地进行相应的变通或修改,故本申请的保护范围应以权利要求书所要求的保护范围为准。
Claims (7)
1.一种埋点数据上传方法,其特征在于,所述方法包括:
响应于应用程序启动指令,对埋点进行初始化,得到初始化后的埋点;
通过初始化后的埋点获取应用程序运行过程中的埋点数据以及埋点数据类型,将所述埋点数据存储在阻塞队列中;
获取当前网络环境,当所述当前网络环境满足预设的条件时,根据预设的所述埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中;
将所述并发队列中满足预设上传条件的埋点数据上传至云端;
所述对埋点进行初始化,得到初始化后的埋点,包括:
初始化埋点实例,所述埋点实例用于响应外部操控指令;
创建当前网络环境接收对象,所述当前网络环境接收对象用于实时接收应用程序当前所处网络环境;
创建数据存储队列,所述数据存储队列包括阻塞队列和并发队列;
创建埋点线程,所述埋点线程用于控制所述应用程序运行过程中产生的埋点数据的存储和上传;
根据所述初始化后的埋点实例、当前网络环境接收对象、存储队列和埋点线程得到所述初始化后的埋点;
所述获取当前网络环境,当所述当前网络环境满足预设的条件时,根据预设的所述埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中,包括:
预设时间间隔内在埋点子线程中获取所述当前网络环境;
若所述当前网络环境满足预设的条件,则根据预设的埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中;
若所述当前网络环境不满足预设的条件,则阻塞埋点主线程,当所述当前网络环境变更为满足预设的条件时解除线程阻塞,将所述阻塞队列中的埋点数据存储在所述并发队列中;
将所述并发队列中满足预设上传条件的埋点数据上传至云端,包括:
根据预设的上传条件遍历所述并发队列中的埋点数据,筛选出所述满足预设上传条件的埋点数据;
将所述满足预设上传条件的埋点数据存储在预设的对象中,通过公开网络框架将所述对象上传至云端。
2.根据权利要求1所述的埋点数据上传方法,其特征在于,将所述并发队列中满足预设上传条件的埋点数据上传至云端之后,包括:
响应于应用程序关闭指令,删除所述阻塞队列和并发队列中的埋点数据,以释放所述阻塞队列和并发队列中的存储空间。
3.根据权利要求1所述的埋点数据上传方法,其特征在于,所述对埋点进行初始化,得到初始化后的埋点之后,包括:
若所述初始化后的埋点中存在应用程序上一次运行时遗留的埋点数据,则将所述遗留的埋点数据存储至所述阻塞队列中。
4.根据权利要求1至3任一项所述的埋点数据上传方法,其特征在于,所述方法还包括:
在对埋点进行初始化时,将初始化消息发送至埋点功能内部消息中心,用于控制子线程进行埋点初始化;
在对所述埋点数据进行存储时,所述功能内部消息中心转发数据存储消息,用于控制子线程存储所述埋点数据,并在预设的延时时间后上传所述埋点数据;
在对所述埋点数据进行上传时,所述功能内部消息中心转发数据上传消息,已控制子线程将所述并发队列中满足预设上传条件的埋点数据上传至云端;
在将所述并发队列中满足预设上传条件的埋点数据上传至云端后,所述功能内部消息中心转发数据删除消息,用于控制所述子线程删除所述阻塞队列和并发队列中的埋点数据。
5.一种埋点数据上传装置,其特征在于,所述装置包括:
初始化模块,用于响应于应用程序启动指令,对埋点进行初始化,得到初始化后的埋点;
第一存储模块,用于通过初始化后的埋点获取应用程序运行过程中的埋点数据以及埋点数据类型,将所述埋点数据存储在阻塞队列中;
第二存储模块,用于获取当前网络环境,当所述当前网络环境满足预设的条件时,根据预设的所述埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中;
埋点数据上传模块,用于将所述并发队列中满足预设上传条件的埋点数据上传至云端;
所述对埋点进行初始化,得到初始化后的埋点,包括:
初始化埋点实例,所述埋点实例用于响应外部操控指令;
创建当前网络环境接收对象,所述当前网络环境接收对象用于实时接收应用程序当前所处网络环境;
创建数据存储队列,所述数据存储队列包括阻塞队列和并发队列;
创建埋点线程,所述埋点线程用于控制所述应用程序运行过程中产生的埋点数据的存储和上传;
根据所述初始化后的埋点实例、当前网络环境接收对象、存储队列和埋点线程得到所述初始化后的埋点;
所述获取当前网络环境,当所述当前网络环境满足预设的条件时,根据预设的所述埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中,包括:
预设时间间隔内在埋点子线程中获取所述当前网络环境;
若所述当前网络环境满足预设的条件,则根据预设的埋点数据类型与并发队列的对应关系,将所述阻塞队列中的埋点数据存储在所述并发队列中;
若所述当前网络环境不满足预设的条件,则阻塞埋点主线程,当所述当前网络环境变更为满足预设的条件时解除线程阻塞,将所述阻塞队列中的埋点数据存储在所述并发队列中;
将所述并发队列中满足预设上传条件的埋点数据上传至云端,包括:
根据预设的上传条件遍历所述并发队列中的埋点数据,筛选出所述满足预设上传条件的埋点数据;
将所述满足预设上传条件的埋点数据存储在预设的对象中,通过公开网络框架将所述对象上传至云端。
6.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求1至4中任意一项所述的埋点数据上传方法。
7.一种计算机可读介质,其特征在于,其上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1至4中任一项所述的埋点数据上传方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210744360.7A CN115134352B (zh) | 2022-06-27 | 2022-06-27 | 一种埋点数据上传方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210744360.7A CN115134352B (zh) | 2022-06-27 | 2022-06-27 | 一种埋点数据上传方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115134352A CN115134352A (zh) | 2022-09-30 |
CN115134352B true CN115134352B (zh) | 2023-06-20 |
Family
ID=83379941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210744360.7A Active CN115134352B (zh) | 2022-06-27 | 2022-06-27 | 一种埋点数据上传方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115134352B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115941669A (zh) * | 2022-11-22 | 2023-04-07 | 中国第一汽车股份有限公司 | 一种多应用埋点数据上传方法、装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825731A (zh) * | 2019-09-18 | 2020-02-21 | 平安科技(深圳)有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN111309550A (zh) * | 2020-02-05 | 2020-06-19 | 江苏满运软件科技有限公司 | 应用程序的数据采集方法、系统、设备和存储介质 |
CN111752803A (zh) * | 2020-06-28 | 2020-10-09 | 厦门美柚股份有限公司 | 埋点数据收集上报的方法、装置及介质 |
CN114185776A (zh) * | 2021-11-30 | 2022-03-15 | 平安付科技服务有限公司 | 应用程序的大数据埋点方法、装置、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112418580A (zh) * | 2019-08-22 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 一种风险控制方法、计算机设备及可读存储介 |
-
2022
- 2022-06-27 CN CN202210744360.7A patent/CN115134352B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825731A (zh) * | 2019-09-18 | 2020-02-21 | 平安科技(深圳)有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN111309550A (zh) * | 2020-02-05 | 2020-06-19 | 江苏满运软件科技有限公司 | 应用程序的数据采集方法、系统、设备和存储介质 |
CN111752803A (zh) * | 2020-06-28 | 2020-10-09 | 厦门美柚股份有限公司 | 埋点数据收集上报的方法、装置及介质 |
CN114185776A (zh) * | 2021-11-30 | 2022-03-15 | 平安付科技服务有限公司 | 应用程序的大数据埋点方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
基于Kafka、Disruptor技术对传统ETL的改进;王梓;梁正和;吴莹莹;;计算机技术与发展(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115134352A (zh) | 2022-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10521393B2 (en) | Remote direct memory access (RDMA) high performance producer-consumer message processing | |
CN108108286A (zh) | 数据收集方法和装置、服务器、存储介质 | |
CN111800462B (zh) | 微服务实例处理方法、装置、计算机设备及存储介质 | |
US10572319B2 (en) | Optimization of message oriented middleware monitoring in heterogenenous computing environments | |
CN110413822B (zh) | 离线图像结构化分析方法、装置、系统和存储介质 | |
CN115134352B (zh) | 一种埋点数据上传方法、装置、设备及介质 | |
CN111158779B (zh) | 一种数据处理方法和相关设备 | |
CN106933589B (zh) | 一种基于配置的消息队列组件及其集成的方法 | |
CN110347571A (zh) | 一种崩溃日志采集方法、分析方法及相关装置 | |
CN105354090B (zh) | 虚拟设备的管理方法和装置 | |
CN109150956A (zh) | 一种推送sdk的实现方法、装置、设备和计算机存储介质 | |
CN113784049B (zh) | 安卓系统虚拟机的摄像头调用方法、电子设备和存储介质 | |
CN110868324A (zh) | 一种业务配置方法、装置、设备和存储介质 | |
CN113051055A (zh) | 一种任务处理方法和装置 | |
CN111966508A (zh) | 一种消息的批量发送方法、装置、计算机设备和存储介质 | |
CN111596864A (zh) | 一种数据延时删除的方法、装置、服务器及存储介质 | |
US8498622B2 (en) | Data processing system with synchronization policy | |
CN116107988A (zh) | 车载日志系统、车载日志存储方法、设备、介质及车辆 | |
CN113779021B (zh) | 数据处理方法、装置、计算机系统及可读存储介质 | |
CN116955225A (zh) | 数据缓存方法、装置、电子设备和可读介质 | |
CN109254856A (zh) | 智能pos服务端提供接口给客户端的方法 | |
CN109189705A (zh) | 一种usb扩展方法、装置、设备、存储介质及系统 | |
CN115134254A (zh) | 一种网络模拟方法、装置、设备及存储介质 | |
CN106484536B (zh) | 一种io调度方法、装置和设备 | |
CN110365839A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |