CN117724860A - 一种数据处理方法和电子设备 - Google Patents
一种数据处理方法和电子设备 Download PDFInfo
- Publication number
- CN117724860A CN117724860A CN202310783103.9A CN202310783103A CN117724860A CN 117724860 A CN117724860 A CN 117724860A CN 202310783103 A CN202310783103 A CN 202310783103A CN 117724860 A CN117724860 A CN 117724860A
- Authority
- CN
- China
- Prior art keywords
- data
- dotting
- dotting data
- priority
- 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
- 238000003672 processing method Methods 0.000 title abstract description 21
- 238000000034 method Methods 0.000 claims abstract description 113
- 238000012545 processing Methods 0.000 claims abstract description 91
- 238000004891 communication Methods 0.000 claims description 56
- 230000005540 biological transmission Effects 0.000 claims description 49
- 238000004590 computer program Methods 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 6
- 238000007726 management method Methods 0.000 description 54
- 230000008569 process Effects 0.000 description 36
- 239000010410 layer Substances 0.000 description 25
- 238000010586 diagram Methods 0.000 description 20
- 230000003993 interaction Effects 0.000 description 20
- 230000006870 function Effects 0.000 description 19
- 238000005538 encapsulation Methods 0.000 description 12
- 230000005236 sound signal Effects 0.000 description 11
- 238000012360 testing method Methods 0.000 description 10
- 230000006399 behavior Effects 0.000 description 8
- 230000001960 triggered effect Effects 0.000 description 8
- 238000007405 data analysis Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000012805 post-processing Methods 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 230000003416 augmentation Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000000725 suspension Substances 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Abstract
本申请公开了一种数据处理方法和电子设备,涉及数据处理技术领域,包括:电子设备获取预设打点事件对应的打点数据,其中,打点数据中标记了优先级,优先级与打点事件相关。电子设备根据打点数据的优先级,将打点数据存储至预设的存储空间;在电子设备满足启动上报打点数据条件时,电子设备按照打点数据的优先级将打点数据读取至上报缓存中。电子设备将上报缓存中的打点数据发送至其他设备。本申请中,电子设备根据打点数据的优先级对打点数据进行传输,实现优先级高的打点数据的优先读取至上报缓存中并优先上报的效果,提高优先级高的打点数据的存储及上报成功率,避免点位数据的丢失。
Description
技术领域
本申请实施例涉及大数据处理技术领域,尤其涉及一种数据处理方法和电子设备。
背景技术
为了更好地统计终端类产品的性能稳定性及用户行为数据,提高终端类产品的故障检测定位能力与可维护性,方便产品研发测试等人员进行问题跟踪、评估版本质量,需要终端类产品具备大数据打点上报的能力。
终端类产品的大数据打点上报的方式包括很多,示例性地,终端类产品可通过程序开发工具包(software development kit,SDK)进行打点保存,并将保存的打点数据上报至上层设备,实现大数据打点上报操作。
然而现有的大数据打点上报方法,打点丢点率较高,关键点位的丢失会使得打点数据不完整,降低了提供给上层设备的终端类产品的打点数据的有效性。
发明内容
本申请实施例提供一种数据处理方法和电子设备,通过对打点数据进行分级读取以及分级传输,可以将关键点位对应的优先级较高的打点数据优先发送至其他设备,提高关键点位的打点数据的传输成功率,避免关键点位的打点数据的丢失,提高了传输的打点数据的有效性。
为达到上述目的,本申请的实施例采用如下技术方案。
第一方面,提供了一种数据处理方法,该方法包括:
电子设备获取预设打点事件对应的打点数据,其中,打点数据中标记了优先级,优先级与打点事件相关。
电子设备根据打点数据的优先级,将打点数据存储至预设的存储空间;在电子设备满足启动发送打点数据条件时,电子设备按照打点数据的优先级,将预设的存储空间中的打点数据读取至上报缓存中;电子设备将上报缓存中的打点数据发送至其他设备。
本申请中,电子设备可以是具有直接与上层设备通信能力的设备,比如,电子设备可以是手机、平板电脑、计算机设备等设备;电子设备还可以是需要通过中间设备与上层设备进行通信的设备,比如,电子设备可以为蓝牙设备、可穿戴设备等,中间设备可以为手机、平板电脑、计算机设备等设备。其他设备可以包括中间设备,还可以包括服务器以及web端等上层设备。
本申请中设备行为的优先级可以分为高优先级对应的第一优先级、低优先级对应的第二优先级;电子设备在生成打点数据时可以通过增设用于表征优先级的字段来表征打点数据对应的设备行为的优先级,以便基于优先级进行打点数据的处理。
本申请中,电子设备根据打点数据的优先级对打点数据进行读取以及发送,实现优先级高的打点数据的优先读取至上报缓存中并优先进行数据传输处理,提高优先级高的打点数据的存储及传输成功率,避免优先级高的点位数据的丢失。此外,将打点数据读取至上报缓存中进行传输,可以减少传输打点数据过程中对于设备文件的读次数,降低设备文件输入/输出(Input/Output,I/O)的功耗,优化电子设备处理打点数据时处理器的性能。
在第一方面的一种可能的实现方式中,该方法还包括:
电子设备监测到预设打点事件时,根据预设的数据格式生成与预设打点事件对应的打点数据;电子设备将打点数据存储至预设消息队列中;预设消息队列为链表的数据结构。电子设备从消息队列中获取预设打点事件对应的打点数据。
在第一方面的另一种可能的实现方式中,预设消息队列采用CAS无锁机制。
本申请中,电子设备将打点数据存储至消息队列中,将打点数据先写入消息队列中,在系统任务调度来临时,可从消息队列中对所保存的打点数据进行统一管理,解决了设备应用多线程同时打点可能导致的数据存储冲突问题,降低丢点率。此外,消息队列采用的是CAS机制,CAS机制可实现高性能消息队列的处理,可解决多线程条件下使用锁造成性能损耗的问题,且,消息队列使用的是链表的数据结构,可以跟随设备应用的打点需要动态分配内存。相比于直接将打点数据写入文件中,可避免读写文件时,多条线程并发导致的线程挂起/线程锁死的问题,同时也可减少对文件的读写的次数,降低文件的读写压力,降低蓝牙设备的读写功耗。
在第一方面的另一种可能的实现方式中,该方法还包括:
电子设备将打点数据暂存至环形内存缓存中;在环形内存缓存中的打点数据的数量大于或等于第一阈值时,电子设备根据环形内存缓存中的打点数据的优先级,将环形内存缓存中的打点数据存储至预设的存储空间。
其中,第一阈值根据环形内存缓存的大小确定。
本申请中,电子设备将消息队列中的打点数据暂存至环形内存缓存RingBuffer中,环形内存缓存RingBuffer的读取优先级高于存储空间(设备文件)的读取优先级,在RingBuffer有打点数据时,可以优先读取RingBuffer的数据,进一步减少对设备文件的读操作,优化对设备文件的读操作性能。
在第一方面的另一种可能的实现方式中,满足启动发送打点数据条件包括第一定时器的触发周期到达;或者,预设的存储空间和环形内存缓存中的打点数据的数量大于或等于第二阈值。
其中,第二阈值大于第一阈值。
本申请中,在第一定时器的触发周期到达时,电子设备执行启动发送打点数据的操作;或者,在预设的存储空间与环形内存缓存中的打点数据的数量大于或等于第二阈值时,执行启动发送打点数据的操作。这样,在打点数据产生频繁的状态下,电子设备可以及时进行打点数据的发送;在打点数据产生不频繁的情况下,以第一定时器的触发周期进行打点数据的发送,可有效地优化电子设备传输打点数据的性能。
在第一方面的另一种可能的实现方式中,预设的存储空间包括第一存储空间和第二存储空间,优先级包括第一优先级和第二优先级,第一优先级对应第一存储空间,第二优先级对应第二存储空间,电子设备根据环形内存缓存中的打点数据的优先级,将环形内存缓存中的打点数据存储至预设的存储空间,包括:
电子设备根据环形内存缓存中的打点数据的优先级,将第一优先级对应的打点数据存储至第一存储空间,将第二优先级对应的打点数据存储至第二存储空间。
本实施例中,根据打点数据的优先级以及存储空间的优先级,可以实现高优先级打点数据与低优先级打点数据的分级存储,可以提高后续的分级读取与分级传输的效率。
在第一方面的另一种可能的实现方式中,第一优先级高于第二优先级,环形内存缓存的优先级高于第一存储空间的优先级;电子设备按照打点数据的优先级,将预设的存储空间中的打点数据读取至上报缓存中,包括:
电子设备按照优先级由高到低的顺序,从环形内存缓存、第一存储空间以及第二存储空间中读取打点数据至上报缓存中。
其中,第一存储空间与第二存储空间可以均为文件。第一存储空间为关键点位文件;第二存储空间为普通点位文件。
本申请中,RingBuffer的读取优先级高于第一存储空间的读取优先级。也即,在电子设备从RingBuffer与存储空间(第一存储空间、第二存储空间)中读取待发送的打点数据时,优先读取RingBuffer中的待发送的打点数据,其次第一存储空间中的待发送的打点数据,最后读取第二存储空间中的待发送的打点数据。以此,实现重要的关注的打点数据的优先读取以及优先进行数据发送处理,保证优先级高的打点数据的发送成功率,降低打点数据的丢失了。
在第一方面的另一种可能的实现方式中,电子设备按照优先级由高到低的顺序,从环形内存缓存、第一存储空间以及第二存储空间中读取打点数据至上报缓存中,包括:
在存储空间和环形内存缓存中的打点数据的数量大于第三阈值时,电子设备按照优先级由高到低的顺序,从环形内存缓存、第一存储空间以及第二存储空间中读取打点数据至上报缓存中。
其中,第三阈值用于表征发送打点数据的数量的下限值。
本申请中,电子设备从RingBuffer与存储空间(第一存储空间、第二存储空间)中读取大于等于第三阈值的待发送的打点数据时,批量读取打点数据,可以减少对存储空间的访问次数,降低设备文件输入/输出(Input/Output,I/O)的功耗,降低蓝牙设备的处理器的占用。
在第一方面的另一种可能的实现方式中,在电子设备满足启动发送打点数据条件时,方法还包括:
电子设备获取链路状态;链路状态用于表征链路可用或链路不可用;电子设备根据链路状态确定链路可用时,按照打点数据的优先级,将存储空间中的打点数据读取至上报缓存中。
本申请中,电子设备在进行打点数据的发送处理时,需要判断当前是否有可用链路,在确定存在可用链路的情况下,执行打点数据的读取、发送流程;若不存在可用链路,则无法执行打点数据的发送,这种情况下,电子设备可以等待下一次满足启动发送打点数据的条件时,再进行打点数据的读取以及发送处理。这样一来,可以及时释放电子设备处理打点数据的资源,优化电子设备的处理性能。
在第一方面的另一种可能的实现方式中,该方法还包括:
电子设备获取链路状态;链路状态用于表征链路可用或链路不可用;
如果链路状态表征链路可用,电子设备获取可用链路的业务状态;业务状态包括繁忙状态或空闲状态;电子设备根据可用链路的业务状态,确定上报缓存中的打点数据的上报周期;在上报周期到达时,电子设备将上报缓存中的打点数据发送至其他设备。
在第一方面的另一种可能的实现方式中,如果可用链路的业务状态为空闲状态,上报周期为第一周期;如果可用链路的业务状态为繁忙状态,上报周期为第二周期;第一周期小于第二周期。
本申请中,电子设备可以根据其业务状态繁忙或空闲,动态调整上报周期。比如,业务繁忙时,上报周期就长一点;业务空闲时,上报周期就短一点。示例性地,业务状态处于空闲状态时,上报周期可以为50ms;业务状态处于繁忙状态时,为了不影响蓝牙设备的业务执行,上报周期可以为2000ms。
本申请中,电子设备通过识别可用链路的业务状态,针对可用链路处于繁忙状态或空闲状态调整上报周期,尤其是针对电子设备处于业务进行中,也即,可用链路处于繁忙状态时,可以保证电子设备处于业务繁忙时,打点数据仍能够正常上传,且不影响蓝牙设备的业务的正常运行,同时也降低了丢点率。
在第一方面的另一种可能的实现方式中,电子设备将上报缓存中的打点数据发送至其他设备,包括:
在电子设备的第一周期或第二周期到达时,电子设备通过可用链路将上报缓存中的打点数据发送至其他设备。
本申请中,电子设备通过识别可用链路的业务状态,针对可用链路处于繁忙状态或空闲状态调整上报周期,尤其是针对电子设备处于业务进行中,也即,可用链路处于繁忙状态时,可以保证电子设备处于业务繁忙时,打点数据仍能够正常上传,且不影响蓝牙设备的业务的正常运行,同时也降低了丢点率。
在第一方面的另一种可能的实现方式中,该方法还包括:
电子设备获取已发送至其他设备的打点数据的数量;如果已发送的打点数据的数量大于第四阈值,停止发送打点数据操作,在电子设备重新满足启动发送打点数据条件时,电子设备按照打点数据的优先级,将存储空间中的打点数据读取至上报缓存中。
其中,第四阈值用于表征发送打点数据的数量的上限值。
本申请中,若电子设备已发送的打点数据的数量大于或等于第四阈值,说明在本次打点数据的发送流程中,电子设备已发送了较多的打点数据,为了不影响电子设备的其他业务进行,电子设备可以暂时停止打点数据的发送,等待下一次满足启动发送打点数据条件时,进行新的打点数据的发送处理。
在第一方面的另一种可能的实现方式中,打点数据中标记了数据传输通道;电子设备将上报缓存中的打点数据发送至其他设备,包括:
电子设备基于打点数据对应的数据传输通道,将上报缓存中的打点数据传输至目标应用,以使所述目标应用将所述上报缓存中的打点数据发送至所述其他设备;目标应用包括电子设备中用于进行打点数据传输的应用。
其中,数据传输通道包括与电子设备系统适配的第一通道和电子设备中三方应用提供的第二通道。
本申请中,考虑到电子设备产品的多样性,基于打点数据对应的数据传输通道,通过目标应用进行打点数据的传输,可以使得打点数据的处理更有效、效率更高。
在第一方面的另一种可能的实现方式中,该方法还包括:
电子设备接收参数配置信息,基于参数配置信息更新参数配置;参数配置信息包括环形内存缓存的存储空间、第一定时器的触发周期、第一阈值、第二阈值、第三阈值、第四阈值、第一周期和第二周期中至少一项。
本申请中,电子设备可以基于接收到的参数配置信息,对各个参数的设定值进行参数配置。示例性地,参数配置信息包括RingBuffer的存储空间大小,比如,RingBuffer的设定值可以2K;第一定时器的触发周期,比如,第一定时器的触发周期的设定值可以为60s;第三阈值的数值,比如,第三阈值的设定值可以为4;第四阈值的数值,比如,第四阈值的设定值可以为512条;空闲状态的上报周期以及繁忙状态的上报周期,比如,空闲状态下的上报周期可以设定为50ms,繁忙状态下的上报周期可以设定为2000ms。
本申请中,各个参数的配置值可基于不同的电子设备进行个性化配置,使得打点数据的采集、存储以及发送流程更适用于电子设备本身的性能,进一步降低丢点率,提高打点数据的有效性,提升打点数据的发送速度和效率,降低电子设备进行打点数据传输的功耗,优化电子设备进行打点数据传输的性能。
在第一方面的另一种可能的实现方式中,电子设备将上报缓存中的打点数据发送至其他设备,包括:
电子设备对打点数据进行数据后处理,将数据后处理后的打点数据发送至其他设备;数据后处理包括数据编码转化、数据序列化处理、数据封装处理。
本申请中,电子设备可以根据与服务器等上层设备的通信协议对要发送的打点数据进行数据后处理,实现后处理后的打点数据的成功传输。
第二方面,提供了一种电子设备,该电子设备包括存储器、通信模块和一个或多个处理器;所述存储器、所述通信模块与所述处理器耦合;所述存储器中存储有计算机程序代码,所述计算机程序代码包括计算机指令,当所述计算机指令被所述处理器执行时,使得所述电子设备执行如上述第一方面中任一项所述的方法。
第三方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在电子设备上运行时,使得电子设备可以执行上述第一方面中任一项所述的方法。
第四方面,提供了一种包含指令的计算机程序产品,当其在电子设备上运行时,使得电子设备可以执行上述第一方面中任一项所述的方法。
第五方面,本申请实施例提供了一种芯片,芯片包括处理器,处理器用于调用存储器中的计算机程序,以执行如第一方面的方法。
可以理解地,上述提供的第二方面所述的电子设备,第三方面所述的计算机可读存储介质,第四方面所述的计算机程序产品,第五方面所述的芯片所能达到的有益效果,可参考第一方面及其任一种可能的设计方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种蓝牙设备-手机-服务器-web端交互的场景示意图;
图2为本申请实施例提供的一种web端的大数据看板显示设备打点数据分析结果的界面示意图;
图3为本申请实施例提供的一种手机-服务器-web端交互的场景示意图;
图4为本申请实施例提供的一种电子设备100的结构示意图;
图5为本申请实施例提供的一种电子设备300的结构示意图;
图6为本申请实施例提供的一种电子设备的系统架构示意图;
图7为本申请实施例提供的一种数据处理方法中蓝牙设备-手机-服务器-web端的模块交互示意图;
图8为本申请实施例提供的一种数据处理方法的流程示意图;
图9为本申请实施例提供的另一种数据处理方法的流程示意图;
图10为本申请实施例提供的另一种数据处理方法的流程示意图;
图11为本申请实施例提供的一种数据处理方法中手机-服务器-web端的模块交互示意图;
图12为本申请实施例提供的一种电子设备1000的结构示意图;
图13为本申请实施例提供的一种芯片系统的结构示意图。
具体实施方式
在本申请实施例的描述中,以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请以下各实施例中,“至少一个”、“一个或多个”是指一个或两个以上(包含两个)。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。术语“连接”包括直接连接和间接连接,除非另外说明。“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了更好地统计终端类产品的性能稳定性及用户行为数据,提高终端类产品的故障检测定位能力与可维护性,方便产品研发测试等人员进行问题跟踪、评估版本质量,需要终端类产品具备大数据打点传输(上报)的能力。其中,数据打点(也称数据埋点)指的是针对设备或应用进行用户行为数据的采集,采集到的这些数据可称为打点数据(也称埋点数据)。服务器可获取某一设备或某一应用的打点数据进行打点数据的分析。
终端类产品的上报打点数据的方式包括很多,示例性地,终端类产品可通过内置的软件开发工具包(software development kit,SDK)实现打点数据的采集、保存以及上报功能。比如,在终端类产品产生行为数据时,SDK可进行数据打点,并将打点数据上报至上层设备,实现打点数据的上报操作。SDK构建了大数据打点上报的特性,提供对外接口,可供产品按需集成使用。
有些终端类产品不具有与上层设备直接通信的能力,需要通过中间设备进行打点数据的上报。示例性地,基于终端-中间设备-服务器-网站(web)端的交互场景,来说明设备之间的数据打点上报的流程。图1给出了一种终端为蓝牙设备、中间设备为手机的的交互示意图。如图1所示,蓝牙设备中集成SDK(示例性地,SDK为wearSDK),蓝牙设备的应用侧可调用SDK的接口进行数据打点,并将打点数据写入文件中存储。在蓝牙设备的操作系统调度执行打点上报线程时,SDK从文件中读取已存储的打点数据,通过蓝牙模块将打点数据上报给手机(中间设备)。手机通过蓝牙模块接收打点数据,通过相应的打点应用处理打点数据,并通过网络将打点数据上报给服务器。服务器将打点数据存入数据库中。web端可从服务器数据库中读取关于蓝牙设备的打点数据,并对打点数据进行数据统计处理,得到关于蓝牙设备的打点数据分析结果;可选地,web端还可以将打点数据分析结果可视化呈现,供产品研发测试等人员查阅使用。比如,可在大数据看板中展示关于蓝牙设备的打点数据分析结果。
示例性地,图2给出了一种web端在显示界面显示打点数据分析结果的示意图。如图2,显示界面可显示关于被测设备(蓝牙设备)的测试总时长、平均时长标准、测试平均时长、总时长标准等测试参数;显示界面还可显示被测设备(蓝牙设备)的测试结论,比如,出现死机/重启类问题概率、出现蓝牙连接类问题的概率、出现用户体验(user experience,UX)性能失效问题的概率、出现机盒通信类问题的概率、出现无声/双耳不同步的问题的概率、其他报错类的概率等等数据。其中,UX性能包含数据安全、数据处理、策略游戏、图像处理和I/O性能等。
在现有的打点数据上报的方法中,终端在采集打点数据以及上报打点数据的过程中,蓝牙设备实时上报打点数据,在蓝牙设备业务繁忙时,可能会造成打点数据丢失,导致数据打点丢点率较高,关键点位(比如,设备使用时长统计、通信故障、连接故障等)的丢失会导致延长迭代时间、掩盖版本实际质量问题、影响产品的过点交付目标等,严重时还可能对产品性能优化造成影响。且,现有技术中针对每一条打点数据的处理过程中,需要频繁读写文件(或flash),并唤醒蓝牙进行打点数据的上报,使得终端进行打点数据上报时功耗较高。此外,现有技术的打点数据上报流程,在面对同时处理多条打点数据时,不能较好处理多线程并发打点的问题,很容易造成线程挂起/线程锁死的问题,影响终端处理器的性能。
本申请实施例提供了一种数据处理方法,电子设备基于预设打点事件获取打点数据,其中,打点数据中标记了优先级。电子设备根据打点数据的优先级对打点数据进行分类存储,将打点数据存储至设备文件中。在电子设备满足启动上报打点数据条件时,比如,第一定时器到达触发周期或者设备文件中的打点数据的数量超过第一阈值时,电子设备基于打点数据的优先级从高到底的顺序,将多条打点数据读取至上报缓存中;在电子设备的上报周期到达时,比如,第二定时器到达触发周期时,电子设备基于打点数据的优先级从高到底的顺序,从上报缓存中依次向上层设备上报打点数据。本实施例中,电子设备根据打点数据的优先级对打点数据进行存储以及上报,实现优先级高的打点数据的优先读取至上报缓存中并优先进行数据上报处理,提高优先级高的打点数据的存储及上报成功率,避免优先级高的点位数据的丢失。此外,将待上报的打点数据读取至上报缓存中进行依次上报,可以减少上报打点数据过程中对于设备文件的读次数,降低设备文件输入/输出(Input/Output,I/O)的功耗,优化电子设备处理打点数据时处理器的性能。
本实施例提供的数据处理方法的适用场景包括电子设备(终端类产品)与上层设备的交互场景。示例性地,电子设备可以是包含通信模块的设备,比如,电子设备可以为蓝牙设备、可穿戴设备、手机、平板电脑、计算机设备、增强现实(augmented reality,AR)\虚拟现实(virtual reality,VR)设备、车载电脑等等。在本实施例中,电子设备包括可直接与上层设备通信进行打点数据上报的第一类设备,比如,第一类设备可以包括手机、平板电脑、计算机设备等;电子设备还包括需要通过中间设备向上层设备上报打点数据的第二类设备,比如,第二类设备可以包括蓝牙设备、可穿戴设备、智能家电等设备。其中,上层设备包括服务器、web端等,服务器可以为独立服务器或服务器集群等。可选地,中间设备可以为第一类设备。
在一些实施例中,第二类设备不具有远程通信能力,需要通过中间设备(近场设备)向服务器等上层设备进行打点数据的传输。示例性地,第二类设备与中间设备的通常使用P2P(peer to peer)的方式进行点对点的数据传输,其通信方式包括无线保真(wirelessfidelity,Wi-Fi)网络、蓝牙(blue tooth,BT)等。中间设备、第一类设备具有远程通信能力,中间设备、第一类设备与服务器等上层设备通常基于服务器-客户机(Client-Server,C/S)架构进行数据传输,其通信方式包括消息队列遥测传输(message queuing telemetrytransport,MQTT)、全球移动通讯系统(global system for mobile communications,GSM)等等。
如图3所示,图3给出了一种第一类设备与上层设备交互的示意图。其中,第一类设备为手机;上层设备包括服务器和web端。
图3中,手机中集成SDK(示例性地,SDK为wearSDK),手机的应用侧可调用SDK的接口进行数据打点,并将打点数据写入文件中存储。在手机的操作系统调度执行打点上报线程时,SDK从文件中读取已存储的打点数据,通过打点应用对打点数据进行处理,并通过网络将打点数据上报给服务器。服务器将打点数据存入数据库中。web端可从服务器数据库中读取关于手机的打点数据,并对打点数据进行数据统计处理,得到关于手机的打点数据分析结果,并将打点数据分析结果可视化呈现,供产品研发测试等人员查阅使用等等。
可选地,本实施例提供的数据处理方法也可适用于如图1所示的交互场景中。其中,电子设备为蓝牙设备(第二类设备),中间设备为手机,上层设备为服务器和web端。
参考图4,图4给出了一种电子设备为第二类设备的结构示意图。电子设备100中包括处理器110,应用模块120,操作系统模块130,存储模块140,通信模块150,天线1,通用串行总线(universal serial bus,USB)接口160,音频模块170,扬声器170A,受话器170B,麦克风170C,充电管理模块180,电源管理模块181,电池182等。
本发明实施例示意的结构并不构成对电子设备100的限定。可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元。例如,处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
在本实施例中,处理器110还可以包括SDK,SDK用于进行电子设备的打点数据的采集与上报。
应用模块120面向用户,在用户使用电子设备的过程中,产生关于电子设备的行为的打点数据。
操作系统模块130,用于进行电子设备中的任务调度,在SDK得到操作系统模块130的调度后,执行打点数据的处理操作。
存储模块140,用于存储打点数据。示例性地,存储模块可以包括文件存储、缓存存储出、队列存储等多种方式。
通信模块150可以提供蓝牙、局域网(local area network,WLAN;比如,无线保真(wireless fidelity,Wi-Fi)网络)、紫蜂技术(ZigBee technology)等多种通信方式中一种或多种。天线1用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。
充电管理模块180用于从充电器接收充电输入。充电管理模块180可以通过USB接口160接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块180可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块180为电池182充电的同时,还可以通过电源管理模块181为电子设备100供电。
电源管理模块181用于连接电池182,充电管理模块180与处理器110。电源管理模块181接收所述电池182和/或充电管理模块180的输入,为处理器110,存储模块140和通信模块150等供电。电源管理模块181也可以设置于处理器110中。在一些实施例中,电源管理模块181和充电管理模块180也可以设置于同一个器件中。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C以及应用处理器等实现音频功能。例如音乐播放,录音等。
可选地,请参考图5,其示出本申请实施例提供一种电子设备为第一类设备的结构框图。其中,电子设备300可以包括处理器310,外部存储器接口320,内部存储器321,通用串行总线(universal serial bus,USB)接口330,充电管理模块340,电源管理模块341,电池342,天线1,天线2,射频模块350,通信模块360,音频模块370,扬声器370A,受话器370B,麦克风370C,耳机接口370D,传感器模块380,显示屏394等。
本发明实施例示意的结构并不构成对电子设备300的限定。可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器310可以包括一个或多个处理单元。例如,处理器310可以包括A),解调处理器,GPU,ISP,控制器,存储器,视频编解码器,DSP,基带处理器,和/或NPU等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
在本实施例中,处理器310还可以包括SDK,SDK用于进行电子设备的打点数据的采集与上报。
上述控制器可以是指挥电子设备300的各个部件按照指令协调工作的决策者。是电子设备300的神经中枢和指挥中心。控制器根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器310中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器310中的存储器为高速缓冲存储器,可以保存处理器310刚用过或循环使用的指令或数据。如果处理器310需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器310的等待时间,因而提高了系统的效率。
在本实施例中,处理器110还可以包括SDK,SDK用于进行电子设备的打点数据的采集与上报。
在一些实施例中,处理器310可以包括接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuit sound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,SIM接口,和/或USB接口等。
本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备300的结构限定。电子设备300可以采用本发明实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块340用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块340可以通过USB接口330接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块340可以通过电子设备300的无线充电线圈接收无线充电输入。充电管理模块340为电池342充电的同时,还可以通过电源管理模块341为电子设备300供电。
电源管理模块341用于连接电池342,充电管理模块340与处理器310。电源管理模块341接收所述电池342和/或充电管理模块340的输入,为处理器310,内部存储器321,外部存储器接口320,显示屏394,摄像头393,和通信模块360等供电。电源管理模块341还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在一些实施例中,电源管理模块341也可以设置于处理器310中。在一些实施例中,电源管理模块341和充电管理模块340也可以设置于同一个器件中。
电子设备300的无线通信功能可以通过天线1,天线2,射频模块350,通信模块360,调制解调器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备300中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将蜂窝网天线复用为无线局域网分集天线。在一些实施例中,天线可以和调谐开关结合使用。
射频模块350可以提供应用在电子设备300上的包括2G/3G/4G/5G等无线通信的解决方案的通信处理模块。射频模块350可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。射频模块350由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调器进行解调。射频模块350还可以对经调制解调器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,射频模块350的至少部分功能模块可以被设置于处理器310中。在一些实施例中,射频模块350的至少部分功能模块可以与处理器310的至少部分模块被设置在同一个器件中。
调制解调器可以包括调制器和解调器。调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器370A,受话器370B等)输出声音信号,或通过显示屏394显示图像或视频。在一些实施例中,调制解调器可以是独立的器件。在一些实施例中,调制解调器可以独立于处理器310,与射频模块350或其他功能模块设置在同一个器件中。
通信模块360可以提供应用在电子设备300上的包括无线局域网(wireless localarea networks,WLAN)(如Wi-Fi网络),蓝牙(blue tooth,BT),全球导航卫星系统(globalnavigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR),紫蜂技术(ZigBeeTechnology)等无线通信的解决方案的通信处理模块。通信模块360可以是集成至少一个通信处理模块的一个或多个器件。通信模块360经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器310。通信模块360还可以从处理器310接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备300的天线1和射频模块350耦合,天线2和通信模块360耦合,使得电子设备300可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括GSM,通用分组无线服务(general packet radio service,GPRS),码分多址接入(code division multiple access,CDMA),宽带码分多址(wideband codedivisionmultiple access,WCDMA),时分码分多址(time-division code division multipleaccess,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(satellite based augmentationsystems,SBAS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(BeiDou navigation satellite system,BDS),准天顶卫星系统(Quasi-Zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentationsystems,SBAS)。
电子设备300通过GPU,显示屏394,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏394和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器310可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏394用于显示图像,视频等。例如,显示屏394可以显示来电提醒界面和语音通话界面。本申请实施例中,如果电子设备300接收到对端在第一应用中发起的应用内呼叫请求,电子设备300的显示屏394可以显示包括第一应用的业务信息的语音通话界面。显示屏394包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。在一些实施例中,电子设备300可以包括1个或N个显示屏394,N为大于1的正整数。
电子设备300可以通过ISP,摄像头393,视频编解码器,GPU,显示屏以及应用处理器等实现拍摄功能。
ISP用于处理摄像头393反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头393中。
摄像头393用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary Metal-Oxide-Semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备300可以包括1个或N个摄像头393,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备300在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备300可以支持一种或多种视频编解码器。这样,电子设备300可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备300的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口320可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备300的存储能力。外部存储卡通过外部存储器接口320与处理器310通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器321可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器310通过运行存储在内部存储器321的指令,从而执行电子设备300的各种功能应用以及数据处理。存储器321可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备300使用过程中所创建的数据(比如音频数据,电话本等)等。此外,存储器321可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,其他易失性固态存储器件,通用闪存存储器(universal flashstorage,UFS)等。
电子设备300可以通过音频模块370,扬声器370A,受话器370B,麦克风370C,耳机接口370D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块370用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块370还可以用于对音频信号编码和解码。在一些实施例中,音频模块370可以设置于处理器310中,或将音频模块370的部分功能模块设置于处理器310中。
扬声器370A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备300可以通过扬声器370A收听音乐,或收听免提通话。
受话器370B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备300接听电话或语音信息时,可以通过将受话器370B靠近人耳接听语音。
麦克风370C,也称“话筒”,“传声器”,用于将声音信号转换为音频电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风370C发声,将声音信号输入到麦克风370C。电子设备300可以设置至少一个麦克风370C。在一些实施例中,电子设备300可以设置两个麦克风370C,除了采集声音信号,还可以实现降噪功能。在一些实施例中,电子设备300还可以设置三个,四个或更多麦克风370C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口370D用于连接有线耳机。耳机接口370D可以是USB接口330,也可以是3.5mm的开放移动终端平台(open mobile terminal Platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
电子设备300的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的系统为例,示例性说明电子设备300的软件结构。
图6是本发明实施例的电子设备300的软件结构框图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图6所示,应用程序包可以包括目标应用、相机,图库,日历,电话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
其中,目标应用为面向用户的、用于产生打点数据的应用。可选地,目标应用还可以具备处理打点数据,将打点数据上报至服务器的能力。该目标应用可以为电子设备的系统应用,也可以为电子设备中的第三方应用。在本实施例中,目标应用可以为打点上报应用。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图6所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器和通知管理器。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
本申请实施例中,描述界面布局的数据文件可以存储在数据库中。视图系统在构建界面时,可以通过内容提供器来获取存储的数据文件,并根据获取的数据文件显示界面。在一些实施例中,在构建界面时,还可以对内容提供器中存放的数据文件进行修改。
电话管理器用于提供电子设备300的通信功能。例如,通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:openGL ES),二维图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维和三维图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。二维图形引擎是二维绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
在一些实施例中,应用于图1所示的电子设备-中间设备-服务器-web端的交互场景中。本实施例以电子设备为第二类设备,比如蓝牙设备,以中间设备为手机来举例说明。示例性地,可参考图7所示的数据处理方法的系统架构图。
如图7所示,图7中包括蓝牙设备、手机、服务器以及web端。其中,蓝牙设备中包括设备应用、SDK、设备操作系统、设备文件以及设备蓝牙模块。SDK中包括任务调度模块、参数配置模块、链路管理模块、文件管理模块以及数据传输模块。手机包括手机蓝牙模块、目标应用(系统应用和三方应用)、打点上报应用、网络模块。服务器包括云端(数据库)。Web端包括大数据网站(大数据看板)。
结合图7所示的架构,本实施例中从蓝牙设备打点数据的采集、蓝牙设备打点数据的存储处理、蓝牙设备打点数据的上报处理、以及打点数据在手机、服务器、web端的处理几个部分描述本申请实施例提供的数据处理方法。
其中,蓝牙设备采集打点数据的过程(图7中序号1-序号5的步骤),可参考图8。图8给出了一种更具体的交互示意图,包括:
1.在用户使用蓝牙设备时,蓝牙设备的设备应用会产生关于蓝牙设备的事件记录。
在一些实施例中,用户在使用电子设备时会产生关于电子设备的事件,可以根据实际使用场景以及不同使用场景下可能产生的事件记录,确定预设打点事件。事件记录用于表示电子设备在使用过程中各模块、各业务/应用的产生的数据记录,事件记录可以包括电子设备的各个模块工作状态的数据记录、各业务/应用的运行状态的数据记录等等。
比如,在用户使用电子设备过程中,事件记录可以包括电子设备的电源模块上电/开机产生的数据记录、电子设备的电源模块下电/关机产生的数据记录、电子设备运行应用/业务产生的数据记录、电子设备的通信模块建立通信连接产生的数据记录、电子设备某个模块异常或故障产生的数据记录等等,从电子设备产生的事件记录中选择一部分或全部事件作为预设打点事件,预设打点事件对应的是数据可用于进行电子设备性能分析。
示例性地,预设的打点事件可以为电子设备开机或关机、电子设备运行应用/业务、电子设备的各个模块的运行情况等等。电子设备运行应用/业务这类打点事件中包括事件记录可以为电子设备启动应用1的开始时间、使用应用1的时长、关闭应用1的结束时间等数据。电子设备的各个模块的运行情况这类打点事件中包括事件记录可以为,比如,关于电池模块包括电子设备的电池使用时长、电子设备的电池的剩余电量等等,关于通信模块包括数据传输的开始时间、数据传输速率、数据传输的结束时间等数据。
以电子设备为蓝牙设备为例,蓝牙设备的预设打点事件可以包括,蓝牙设备上电、蓝牙设备的通信模块与其他设备建立通信连接、蓝牙设备进行业务等等。
示例性地,蓝牙设备为蓝牙耳机时,预设打点事件可以包括用户从耳机盒中取出蓝牙耳机(蓝牙耳机开机)、蓝牙耳机与手机蓝牙连接(蓝牙耳机的通信模块进行通信连接);或者,在蓝牙耳机与手机蓝牙连接后,通过蓝牙耳机播放音乐或进行通话(蓝牙耳机进行播放音乐的业务或通话业务);或者,用户将蓝牙耳机充电(蓝牙耳机的电池模块进行充电)等等。预设打点事件可以包括蓝牙设备在工作过程中产生的行为记录与异常故障记录,打点事件对应的打点数据可用于进行蓝牙设备的工作性能分析。
示例性地,蓝牙设备还可以为智能家居中的某一智能家电,比如,空调。预设打点事件可以包括用户开启空调电源(空调上电),对空调进行运行模式以及温度的设定(空调相关模块的工作情况)等。空调的预设打点事件对应的事件记录包括空调的开启时间、运行时长、运行模式、最高温度、最低温度、空调的关闭事件等数据。
2.蓝牙设备的设备应用基于预设打点事件的事件记录生成打点数据。
可选地,蓝牙设备的设备应用可基于预设的数据格式,基于预设打点事件的事件记录生成对应的打点数据。打点数据均具有唯一的事件身份标识号(identity document,ID),且,打点数据均对应与蓝牙设备SDK提供的对外接口。预设的数据格式可以包括事件ID、分类编码、一级编码、二级编码、三级编码等。其中,分类编码指的是最上层的业务模块,如电源模块、蓝牙模块、微控制单元(microcontroller unit,MCU)管理模块等;一级、二级编码为各业务模块的细分模块,三级编码作为二级编码模块的扩展字段,可按需使用。
可选地,在上报打点数据的过程中,为了提高数据上报的效率与成功率,本实施例中,在预设的数据格式中约定了打点数据的上报优先级。优先级可由设备应用在蓝牙设备产生预设打点事件时,基于打点事件进行其对应的打点数据的优先级的设定。或者,设备应用还可以获取预设对应关系,基于预设对应关系,确定预设打点事件对应的打点数据的优先级。其中,预设对应关系为分类编码与优先级的对应关系。比如,预设对应关系可以包括电源模块所对应的打点事件的优先级为高,蓝牙模块所对应的打点事件的优先级为中等等。设备应用在产生预设打点事件后,根据打点事件对应的分类编码以及预设对应关系,确定当前打点事件对应的打点数据的优先级。也即,打点数据的优先级可以是通过设备应用实时设定的,也可以是设备应用基于预设对应关系设定的。
在打点数据的上报过程中,SDK会按照打点数据的优先级由高到低的顺序上报打点数据。示例性地,预设的数据格式可以表示为:WearSdkBiRecordCode(unsigned charcatalogId,unsigned char info1,unsigned char info2,unsigned int info3,unsignedchar priority);其中,catalogId为分类编码,info1为一级编码,info2为二级编码,info3为三级编码,priority为优先级。在打点数据需要具有其他可用信息时,预设的数据格式还可以包括其他字段,本实施例对此不做限定。
示例性地,以蓝牙耳机出盒使用时长举例,其对应的打点数据中的分类编码为电源模块,一级编码为出盒电量,二级编码为出盒使用时长,三级编码为使用时长的具体数值,优先级为高。设备应用可以将这些参数对应的数值通过函数WearSdkBiRecordCode()传递给SDK。SDK接收到该数据便可记录蓝牙耳机关于出盒使用时长的打点数据。可选地,SDK还可以对该打点数据添加相应的时间信息,将添加时间信息后的打点数据保存至指定存储空间。比如,将添加时间信息后的打点数据存储至指定的栈中;或者,保存至文件中;或者,保存至缓存中等等。
在本实施例中,打点数据的预设的数据格式中增加了优先级的参数定义,优先级可以区分关键点位(关注的事件记录)与普通点位(普通的事件记录),对于关键点位和普通点位,在其数据格式中的优先级进行区分处理,在后续基于优先级的打点数据上报处理过程中,可提高关键点位的存储及上传成功率,避免关键点位的丢失。
3.SDK从存储空间中获取打点数据,将打点数据保存到SDK的消息队列中。
其中,消息队列为SDK内部的消息队列,SDK将打点数据从指定存储空间中移出,存储至消息队列中,可便于SDK统一管理设备应用的打点数据。
可选地,SDK也可以将打点数据从指定存储空间中读出,直接写入设备的文件中。
本实施例中,SDK将指定存储空间的打点数据存储至内部的消息队列中,可以更好地进行消息队列中每一条打点数据的处理。SDK采用的是比较并交换(compare and swap,CAS)无锁机制,CAS机制可实现高性能消息队列的处理。SDK通过消息队列可解决多线程条件下使用锁造成性能损耗的问题,由蓝牙设备的处理器保证操作的原子性,支撑设备应用与SDK间的多线程数据交互,SDK的消息队列使用的是链表的数据结构,可以跟随设备应用的打点需要动态分配内存。相比于直接将打点数据写入文件中,可避免读写文件时,多条线程并发导致的线程挂起/线程锁死的问题,同时也可减少对文件的读写的次数,降低文件的读写压力,降低蓝牙设备的读写功耗。
4.设备操作系统进行设备任务的切换与线程的调度。
在本实施例中,SDK集成在蓝牙设备中,内部逻辑的运行在轮询线程中完成,需要依赖设备操作系统进行任务的切换与线程的调度。SDK的任务调度模块负责内部定时器的调度、消息队列的数据处理与业务处理等。
5.SDK得到设备操作系统的任务调度时,开启打点数据的上报处理。
在本实施例中,SDK在得到设备操作系统的调度后,处理消息队列中的打点数据。SDK将消息队列中的打点数据搬运到环形内存缓存(RingBuffer)中,暂存打点数据。RingBuffer作为打点数据的暂存空间,使用一段固定长度的内存作为环形缓冲区,在内存用尽后,剩余未存的数据从这段内存的起始位置开始存放,不用频繁的分配内存,适合缓存数据流。
经过上述步骤1-5,SDK在设备产生打点数据时,可通过打点接口以及预设的打点数据格式生成打点数据,将打点数据写入消息队列;在得到设备操作系统的任务调度后,处理消息队列中的打点数据,将打点数据暂存至环形内存缓存中,等待后续对打点数据的处理。
在本实施例中,SDK通过消息队列缓存打点数据,实现了统一管理应用侧的打点数据的目的,解决了设备应用多线程同时打点可能导致的数据存储冲突问题,降低丢点率。
在一些实施例中,图9给出了一种蓝牙设备打点数据的存储与上报处理的过程示意(对应于图7中序号6-序号13的步骤),参考图9,包括:
6.SDK判断RingBuffer中暂存的打点数据的数量,如果RingBuffer中暂存的打点数据的数量没有被上报且超过第一阈值时,SDK将RingBuffer中暂存的打点数据写入文件中。
在本实施例中,SDK将RingBuffer中暂存的打点数据写入文件中,可以避免暂存的打点数据丢失。SDK可以调用SDK内部的文件管理模块,将打点数据写入到文件。文件管理模块负责统一管理SDK相关文件的读写操作,屏蔽其它模块直接感知对设备文件的操作。
这里第一阈值可以根据实际RingBuffer的存储空间确定,比如,RingBuffer的存储空间大小可以为2k、4k、6k等,第一阈值可以与RingBuffer的存储空间大小一样,比如,第一阈值可以为2k。也即,RingBuffer中的打点数据满了之后,SDK将RingBuffer中的打点数据写入文件;第一阈值也小于RingBuffer的存储空间,比如,第一阈值可以为1k、2k、3k等,比如,在RingBuffer中的打点数据的数量达到2k时,SDK将RingBuffer中的打点数据写入文件。RingBuffer的存储空间大小也可以根据实际蓝牙设备的打点数据的产生频率和产生数量设定。
在SDK将RingBuffer中的打点数据写入文件的过程中,SDK可以根据打点数据的优先级,将不同优先级的大打点数据存入对应的文件中。也即,文件管理模块中包括与优先级对应的不同的文件模块,比如,包括与高优先级对应的关键点位文件和与低优先级对应的普通点位文件。SDK存打点数据至文件中时,可先获取打点数据的优先级的参数字段,判断打点数据的优先级;将优先级高的打点数据存入关键点位文件中,将优先级低的打点数据存入普通点位文件中。
可选地,SDK的文件管理模块可以对打点数据进行存入文件的标记,比如,将优先级高的打点数据标记为存入关键点位文件;将优先级地的打点数据标记为存入普通点位文件。
7.SDK的文件管理模块调用设备的文件读写接口,将打点数据保存到设备文件中。
SDK的文件管理模块可以根据打点数据的标记,将打点数据存入至对应的设备文件中。或者,SDK的文件管理模块可以直接根据打点数据的优先级字段,将打点数据存入至对应的设备文件中。
8.SDK中定义了第一定时器,第一定时器用于触发启动打点数据的上报操作。
在本实施例中,第一定时器的触发由SDK的任务调度模块控制。在SDK得到设备操作系统的任务调度后,SDK的任务调度模块触发第一定时器。第一定时器的默认周期可以为60秒,可选地,第一定时器的周期还可以根据蓝牙设备的打点数据的产生频率确定,比如,打点数据产生频率高,那么第一定时器的周期可以短点,可以为20s、30s、40s、50s等;打点数据产生频率低,那么第一定时器的周期可以长点,比如,可以为60s、70s、80s、90s等。
9.第一定时器在触发后,SDK判断蓝牙设备的当前链路状态。
SDK需要通过空闲链路上报打点数据,在第一定时器触发后,SDK可以先判断是否有可用链,如果存在可用链路,则继续执行打点数据的上报流程;如果没有可用链路,则等待下次第一定时器触发。其中,没有可用链路的情况可能包括蓝牙设备与手机的通信连接暂时断开。
可选地,在一些实施例中:
10.SDK的文件管理模块在监控到设备文件中保存的打点数据的数量超过第二阈值,SDK也可以触发启动打点数据的上报流程。
类似地,参考9中的方法,在SDK确定设备文件中保存的未上报的打点数据的数量超过第二阈值,SDK通过链路管理模块,从设备应用中获取链路状态,判断是否存在可用链路。若存在可用链路,则继续执行打点数据的上报流程;若没有可用链路,则等待文件管理模块的下次触发。
可选地,第二阈值可以根据设备文件的存储空间的大小确定;也可以根据蓝牙设备的打点数据的产生频率和产生数量确定。第二阈值为可设定参数。
11.若SDK确定存在可用链路,SDK生成用于缓存待上报的打点数据的上报缓存(ReportCache)。
在本实施例中,若SDK确定存在可用链路,SDK生成用于缓存待上报的打点数据的上报缓存(ReportCache),从上报缓存中进行打点数据的上报,可减少对设备文件的读写操作,优化对设备文件的操作性能。
12.SDK将RingBuffer中的打点数据读取到ReportCache中。
在本实施例中,若SDK确定存在可用链路,SDK还可以将RingBuffer中的打点数据缓存到ReportCache中。
13.SDK将设备文件中的打点数据读取到ReportCache中。
可选地,为了进一步优化对设备文件的读写操作。在SDK确定存在可用链路时,SDK还可以对待上报的打点数据的数量进行判断。这里,待上报的打点数据包括设备文件中的待上报的打点数据与RingBuffer中待上报的打点数据。若待上报的打点数据的数量小于第三阈值,则等待下一次第一定时器触发,重新执行判断待上报的打点数据的数量是否小于第三阈值的操作。若待上报的打点数据的数量等于或大于第三阈值,SDK生成上报缓存(ReportCache),将待上报的打点数据缓存至ReportCache中。这里,第三阈值用于表征待上报的打点数据的最小值(下限值);比如,第三阈值可以为4、5、6,第三阈值为大于0的自然数。比如,待上报的打点数据最少为4条时,才触发SDK将待上报的打点数据缓存至ReportCache的操作;若少于4条,则等待下一次第一定时器触发。第三阈值的值可以根据蓝牙设备的打点数据的产生频率和产生数量确定。
在本实施例中,增加第三阈值的判断,可以进一步地实现对待上报的打点数据的批量处理,在待上报的打点数据的数量小于第三阈值时,不进行上报,节省蓝牙设备SDK的处理资源。此外,将不小于第三阈值的待上报的打点数据缓存至ReportCache,等待后续的打点数据的上报操作,每次从设备文件中读取多条待上报的打点数据缓存至ReportCache,避免蓝牙设备处于空闲状态时,产生的打点数据较少时仍频繁唤醒蓝牙的问题,可减少对设备文件的读访问,进一步优化设备文件的读功耗;同时,可提高打点数据的上报速度,降低蓝牙设备的整体功耗。
可选地,在将待上报的打点数据读取至ReportCache过程中,SDK还可以根据打点数据的优先级进行分批读取。结合6的描述,优先级高的打点数据会被写入关键点位文件,优先级低的打点数据会被写入普通点位文件。那么,关键点位文件的读取优先级就高于普通点位文件的读取优先级。
此外,由于RingBuffer中的打点数据比设备文件(关键点位文件、普通点位文件)中的打点数据的时效性更强,本实施例中,RingBuffer的读取优先级高于关键点位文件的读取优先级。也即,在SDK从RingBuffer与设备文件(关键点位文件、普通点位文件)中读取大于等于第三阈值的待上报的打点数据时,优先读取RingBuffer中的待上报的打点数据,其次读取关键点位文件中的待上报的打点数据,最后读取普通点位文件中的待上报的打点数据。以此,实现重要的关注的打点数据的优先读取至ReportCache中,优先进行数据上报处理。
本实施例中,SDK优先上报RingBuffer中的数据,其次上报关键打点文件中的数据,最后上报普通打点文件中的数据,减少写入文件的次数,降低设备文件输入/输出(Input/Output,I/O)的功耗,降低蓝牙设备的处理器的占用。
在一些实施例中,图10给出了一种蓝牙设备打点数据的上报处理的过程示意(对应于图7中序号14-序号20的步骤),参考图10,包括:
14.SDK中定义了第二定时器,第二定时器用于触发执行打点数据的依次上报操作。
在本实施例中,第二定时器的触发由SDK的任务调度模块控制。在SDK得到设备操作系统的任务调度后,SDK的任务调度模块触发第二定时器。第二定时器的默认周期可以为50ms,可选地,第二定时器的周期还可以根据蓝牙设备的业务状态确定,比如,蓝牙设备的业务状态处于空闲状态时,第二定时器的周期可以短点,可以为50ms;蓝牙设备的业务状态处于繁忙状态时,为了不影响蓝牙设备的业务执行,第二定时器的周期可以长点,比如,可以为2000ms。第二定时器的周期为SDK在打点数据的获取以及上报过程中基于蓝牙设备的业务状态动态调整得到。
15.第二定时器在触发后,SDK判断蓝牙设备的当前链路状态。
在本实施例中,第二定时器触发后,SDK执行依次上报打点数据的操作,SDK需要再次查询是否有可用链路进行打点数据的上报。与9中类似地,SDK可以通过链路管理模块从设备应用中获取链路状态。若无可用链路,后续流程不继续进行,等待下次第二定时器触发。若有可用链路,SDK继续执行依次上报打点数据的操作。
16.SDK基于链路状态,调整第二定时器的周期。
在SDK确定当前存在可用链路时,基于可用链路的链路状态,调整第二定时的周期。示例性地,SDK可以基于可用链路的链路状态判断当前可用链路处于空闲还是繁忙状态。比如,设备应用在执行设备业务时会占用链路,比如,设备应用在执行听音乐或通话等业务时,可用链路的链路状态处于繁忙状态;设备应用没有执行任何业务时,比如,只是开机后与手机通信连接,此时,可用链路的链路状态处于空闲状态。
SDK根据链路状态动态调整第二定时器的周期,也即,调整依次上报打点数据的间隔时间。示例性地,可用链路处于空闲状态时,表示蓝牙设备当前无业务进行,此时,第二定时器的周期可以为第一周期,比如,第一周期可以为50ms、100ms;比如,每隔50ms第二定时器被触发,每隔50ms上报一条ReportCache中的打点数据。可用链路处于繁忙状态时,表示蓝牙设备当前有业务进行,为了不影响蓝牙设备的业务执行,此时第二定时器的周期可以设定为第二周期,比如,第二周期可以为1000ms、2000ms、3000ms;比如,每隔2000ms第二定时器被触发,每隔2000ms上报一条ReportCache中的打点数据。第二定时器的在可用链路的空闲状态或繁忙状态下的周期可根据蓝牙设备的实际情况确定。本实施例中,第一周期小于第二周期。
在本实施例中,SDK通过识别可用链路的业务状态,针对可用链路处于繁忙状态或空闲状态调整第二定时器的周期,尤其是针对蓝牙设备处于业务进行中,可用链路处于繁忙状态时,可以保证蓝牙设备处于业务繁忙时,打点数据仍能够正常上传,且不影响蓝牙设备的业务的正常运行,同时也降低了丢点率。
可选地,若SDK本次依次上报打点数据的操作中,上报的打点数据的数量超过第四阈值,也即,本次的上报流程中,SDK上报的打点数据的数量已经达到第四阈值,这种情况下,SDK可以结束上报流程,等待下一次第一定时器的触发或者等待设备文件中保存的打点数据的数量超过第二阈值(参考上述9和10提供的实施例)。其中,第四阈值为上报打点数据数量的上限值,示例性地,第四阈值可以为256、512等,第四阈值大于第三阈值,第四阈值为大于0的自然数。
可选地,SDK在基于可用链路状态确定第二定时器的周期后,还可以确定打点数据的上报通道。
其中,手机中可以包括第一通道和第二通道。SDK可以在向手机上报打点数据时,指定打点数据的上报通道。其中,第一通道可以理解为与手机、蓝牙设备等产品的配套的打点数据上报通道;第二通道可以理解为手机中第三方上报通道。若存在第一通道,则优先指定通过第一通道上报打点数据;若不存在第一通道,则指定通过第二通道上报打点数据。
可选地,在SDK通过蓝牙模块将打点数据上报至手机之前,还可以对打点数据进行常规化的数据处理。
17.SDK对打点数据进行编码转化。
示例性地,SDK按照预设的蓝牙设备对应的打点编码格式对打点数据进行编码转化。
18.SDK对编码转化后的打点数据进行序列化处理,得到序列化处理后的打点数据。
其中,序列化处理指的是基于SDK内部的序列化框架,将打点数据进行序列化处理,将打点数据转换为可以传输的形式。
19.SDK将序列化处理后的打点数据,按照预设的通信协议进行数据封装处理,得到数据封装后的打点数据。
示例性地,蓝牙设备为蓝牙耳机时,SDK可以按照蓝牙耳机与手机交互的业务通信协议对序列化处理后的打点数据进行数据封装处理,得到数据封装后的打点数据。蓝牙设备为智能手表时,SDK可以按照智能手表与手机交互的业务通信协议对序列化处理后的打点数据进行数据封装处理,得到数据封装后的打点数据。
20.SDK通过数据传输模块,将数据封装后的打点数据传输给设备蓝牙模块。
在一些实施例中,图7中序号21-序号29的步骤为蓝牙设备将打点数据传输至手机以及手机与服务器、web端处理打点数据的过程,包括:
22.SDK通过设备蓝牙模块与手机蓝牙进行蓝牙数据传输,将数据封装后的打点数据上报至手机中。
进一步地,手机的蓝牙模块根据接收到的打点数据中指定的数据传输通道,传输给与数据传输通道对应的目标应用。数据传输通道包括第一通道和第二通道。其中,第一通道对应第一目标应用,第一目标应用可以理解为与手机、蓝牙设备等产品的配套的系统应用;第二通道对应第二目标应用,第二目标应用可以理解为手机中第三方应用。目标应用为管理与手机连接的蓝牙设备的应用。
23.手机的蓝牙模块根据接收到的打点数据中指定的第一通道,将打点数据传输给与第一通道对应的第一目标应用。
24.手机的第一目标应用将接收到的打点数据,通过第一通道传输给打点上传应用。
在一些实施例中,第一目标应用负责接收由手机的蓝牙模块接收到的打点数据;手机中的打点上传应用负责将打点数据通过网络上报至服务器。
25.手机的蓝牙模块根据接收到的打点数据中指定的第二通道,将打点数据传输给与第二通道对应的第二目标应用。
26.手机的第二目标应用将接收到的打点数据,通过第二通道传输给打点上传应用。
在一些实施例中,第二目标应用负责接收由手机的蓝牙模块接收到的打点数据;手机中的打点上传应用负责将打点数据通过网络上报至服务器。
27.打点上传应用通过网络将打点数据上报至服务器。
28.手机与服务器通过网络交互进行打点数据的数据传输。
29.web端从服务器的云端(服务器)中获取蓝牙设备的打点数据。可选地,web端可将蓝牙设备的打点数据进行数据统计分析,并将分析结果可视化呈现。
在一些实施例中,针对上述SDK进行打点数据的采集、存储以及上报的过程中,可对涉及到的参数进行初始化配置。
21.SDK接收参数配置信息,更新相应的参数配置。
其中,参数配置信息包括RingBuffer的存储空间大小,比如,RingBuffer的设定值可以2K;第一定时器的触发周期,比如,第一定时器的触发周期的设定值可以为60s;第三阈值的数值,比如,第三阈值的设定值可以为4;第四阈值的数值,比如,第四阈值的设定值可以为512条;空闲状态的第二定时器的上报周期以及繁忙状态的第二定时器的上报周期,比如,空闲状态下第二定时器的上报周期可以设定为50ms,繁忙状态下第二定时器的上报周期可以设定为2000ms。本实施例对各个参数的设定值不做具体限定,各个参数的设定值可基于不同的蓝牙设备(电子设备)进行个性化配置,使得打点数据的采集、存储以及上报流程更适用于电子设备本身的性能,进一步降低丢点率,提高打点数据的有效性,提升打点数据的上报速度和效率,降低电子设备进行打点数据上报的功耗,优化电子设备进行打点数据上报的性能。
在本实施例中,在电子设备-服务器-web端的交互场景下,以电子设备为手机,结合手机-服务器-web端的架构,说明本实施例提供的数据处理方法,示例性地,可参考图11所示的架构图。
图11所示的场景中包括手机、服务器以及web端。手机包括SDK、设备操作系统、设备文件、设备应用、目标应用(系统应用和三方应用)、打点上报应用以及网络模块。其中,SDK中包括数据传输模块、链路管理模块、文件管理模块、任务调度模块以及参数配置模块。服务器包括云端(数据库),web端包括大数据网站(大数据看板)。其中,手机可通过网络模块与服务器进行数据传输。
图11所示出的手机-服务器-web端的交互场景中,手机的SDK进行打点数据的采集、存储以及SDK对打点数据进行序列化处理之前的数据处理方法(图11中序号1-序号17表征的数据处理过程)与图7所示的蓝牙设备-手机-服务器-web端的交互场景中蓝牙设备的SDK进行打点数据的采集、存储以及对打点数据进行序列化处理之前的数据处理方法(图7中序号1-序号17表征的数据处理过程)相同,可复用图7序号1-序号17提供的数据处理方法,包括:
1.设备应用在用户使用蓝牙设备时,产生蓝牙设备的事件记录。
可参考图7提供的实施例中关于序号1表征的数据处理过程的描述。
2.设备应用基于蓝牙设备的事件记录生成打点数据。
可参考图7提供的实施例中关于序号2表征的数据处理过程的描述。
3.SDK将打点数据保存到SDK的消息队列中。
可参考图7提供的实施例中关于序号3表征的数据处理过程的描述。
4.设备操作系统进行设备任务的切换与线程的调度。
可参考图7提供的实施例中关于序号4表征的数据处理过程的描述。
5.SDK得到设备操作系统的任务调度时,开启打点数据的上报处理。
可参考图7提供的实施例中关于序号5表征的数据处理过程的描述。
6.SDK判断RingBuffer中暂存的打点数据的数量,如果RingBuffer中暂存的打点数据的数量没有被上报且超过第一阈值时,SDK将RingBuffer中暂存的打点数据写入文件中。
可参考图7提供的实施例中关于序号6表征的数据处理过程的描述。
7.SDK的文件管理模块调用设备的文件读写接口,将打点数据保存到设备文件中。
可参考图7提供的实施例中关于序号7表征的数据处理过程的描述。
8.SDK定义第一定时器,第一定时器用于触发启动打点数据的上报操作。
可参考图7提供的实施例中关于序号8表征的数据处理过程的描述。
9.第一定时器在触发后,SDK判断蓝牙设备的当前链路状态。
可参考图7提供的实施例中关于序号9表征的数据处理过程的描述。
10.SDK的文件管理模块在监控到设备文件中保存的打点数据的数量超过第二阈值,SDK也可以触发启动打点数据的上报流程。
可参考图7提供的实施例中关于序号10表征的数据处理过程的描述。
11.若SDK确定存在可用链路,SDK生成用于缓存待上报的打点数据的上报缓存(ReportCache)。
可参考图7提供的实施例中关于序号11表征的数据处理过程的描述。
12.SDK将RingBuffer中的打点数据读取到ReportCache中。
可参考图7提供的实施例中关于序号12表征的数据处理过程的描述。
13.SDK将设备文件中的打点数据读取到ReportCache中。
可参考图7提供的实施例中关于序号13表征的数据处理过程的描述。
14.SDK中定义了第二定时器,第二定时器用于触发执行打点数据的依次上报操作。
可参考图7提供的实施例中关于序号14表征的数据处理过程的描述。
15.第二定时器在触发后,SDK判断蓝牙设备的当前链路状态。
可参考图7提供的实施例中关于序号15表征的数据处理过程的描述。
16.SDK基于链路状态,调整第二定时器的周期。
可参考图7提供的实施例中关于序号16表征的数据处理过程的描述。
17.SDK对打点数据进行编码转化。
可参考图7提供的实施例中关于序号17表征的数据处理过程的描述。
18.SDK对编码转化后的打点数据进行序列化处理,得到序列化处理后的打点数据。
可参考图7提供的实施例中关于序号18表征的数据处理过程的描述。
30.SDK将序列化处理后的打点数据,按照预设的通信协议进行数据封装处理,得到数据封装后的打点数据。
本实施例中,与图7所示的场景中19不同,图11中手机的SDK在对打点数据进行序列化处理后,按照预设的通信协议进行数据封装处理,得到数据封装后的打点数据。这里的预设的通信协议为手机预设的业务通信协议,不同于7所示的19中按照手机与蓝牙设备之间的业务通信协议来封装打点数据。
31.SDK将数据封装后的打点数据传输给数据传输模块。
32.SDK的数据传输模块基于打点数据中指定的上报通道,传输给与上报通道对应的目标应用(系统应用或三方应用)。
第一通道对应第一目标应用,第一目标应用可以理解为与手机、蓝牙设备等产品的配套的系统应用;第二通道对应第二目标应用,第二目标应用可以理解为手机中第三方应用。目标应用为管理与手机连接的蓝牙设备的应用。
24.手机的第一目标应用将接收到的打点数据,通过第一通道传输给打点上传应用。
可参考图7提供的实施例中关于序号24表征的数据处理过程的描述。
26.手机的第二目标应用将接收到的打点数据,通过第二通道传输给打点上传应用。
可参考图7提供的实施例中关于序号26表征的数据处理过程的描述。
27.打点上传应用通过网络将打点数据上报至服务器。
28.手机与服务器通过网络交互进行打点数据的数据传输。
29.web端从服务器的云端(服务器)中获取蓝牙设备的打点数据。可选地,web端可将蓝牙设备的打点数据进行数据统计分析,并将分析结果可视化呈现。
本实施例中,数据处理方法可应用于不同的电子设备与服务器的打点数据的交互场景中,可有效地解决现有的打点数据上报方法中丢点率高的问题,基于本实施例提供的数据处理方案,通过SDK的消息队列可缓存打点数据,可屏蔽多线程并发调用对打点数据存储的影响,降低丢点率;基于本实施例提供的上报缓存ReportCache,SDK可以每次从设备文件中读取多条打点数据到ReportCache中,减少对设备文件的读写次数,提高打点数据的上报速度,降低设备文件的读功耗。在生成打点数据时,基于预设的数据格式添加了用于表征打点数据优先级的字段,基于优先级将打点数据进行优先级高低的分类存储,在上报打点数据时,基于打点数据的优先级进行读取,提高优先级高的打点数据的存储及上报成功率,避免优先级高的点位数据的丢失。此外,在依次上报打点数据时,会根据当前电子设备的链路状态,区分电子设备的业务繁忙状态与业务空闲状态,适应调整依次上报打点数据的周期(第二定时器的触发周期),既能保证设备一直处于业务繁忙时,打点能够正常上传,又不影响业务的正常运行,降低丢点率。
图12示出了上述实施例中所涉及的电子设备的一种可能的结构示意图。图12所示的电子设备1000包括处理器1001、通信模块1002以及存储模块1003。
其中,处理器1001可以是中央处理器(central processing unit,CPU),数字信号处理器(digital signal processor,DSP),专用集成电路(application-specificintegrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。处理器可以包括应用处理器和基带处理器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。存储模块1005可以是存储器。
例如,处理器1001可以为如图5所示的处理器310;通信模块1002可以为如图5所示的摄像头393,存储模块1003可以为如图5所示的内部存储器321。本申请实施例所提供的电子设备可以为图5所示的电子设备300。
本申请实施例还提供一种芯片系统(例如,片上系统(system on a chip,SoC)),如图13所示,该芯片系统包括至少一个处理器701和至少一个接口电路702。处理器701和接口电路702可通过线路互联。例如,接口电路702可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路702可用于向其它装置(例如处理器701或者电子设备的摄像头)发送信号。示例性的,接口电路702可读取存储器中存储的指令,并将该指令发送给处理器701。当所述指令被处理器701执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中电子设备200或电子设备300执行的各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述方法实施例中电子设备200或电子设备300执行的各个功能或者步骤。例如,该计算机可以是上述电子设备200或电子设备300。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种数据处理方法,其特征在于,包括:
电子设备获取预设打点事件对应的打点数据;所述打点数据中标记了优先级,所述优先级与所述预设打点事件相关;
所述电子设备根据所述打点数据的优先级,将所述打点数据存储至预设的存储空间;
在所述电子设备满足启动发送打点数据条件时,所述电子设备按照所述打点数据的优先级,将所述预设的存储空间中的打点数据读取至上报缓存中;
所述电子设备将所述上报缓存中的打点数据发送至其他设备。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述电子设备监测到所述预设打点事件时,根据预设的数据格式生成与所述预设打点事件对应的打点数据;
所述电子设备将所述打点数据存储至预设消息队列中;所述预设消息队列为链表的数据结构;
所述电子设备获取预设打点事件对应的打点数据,包括:
所述电子设备从所述消息队列中获取所述预设打点事件对应的打点数据。
3.根据权利要求2所述的方法,其特征在于,所述预设消息队列采用比较并交换CAS无锁机制。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述电子设备将所述打点数据暂存至环形内存缓存中;
所述电子设备根据所述打点数据的优先级,将所述打点数据存储至所述预设的存储空间,包括:
在所述环形内存缓存中的打点数据的数量大于或等于第一阈值时,所述电子设备根据所述环形内存缓存中的打点数据的优先级,将所述环形内存缓存中的打点数据存储至所述预设的存储空间。
5.根据权利要求4所述的方法,其特征在于,所述满足启动发送打点数据条件包括:第一定时器的触发周期到达;或者,所述预设的存储空间和所述环形内存缓存中的打点数据的数量大于或等于第二阈值;所述第二阈值大于所述第一阈值。
6.根据权利要求4所述的方法,其特征在于,所述预设的存储空间包括第一存储空间和第二存储空间,所述优先级包括第一优先级和第二优先级,所述第一存储空间对应第一优先级,所述第二存储空间对应第二优先级,
所述电子设备根据所述环形内存缓存中的打点数据的优先级,将所述环形内存缓存中的打点数据存储至所述预设的存储空间,包括:
所述电子设备根据所述环形内存缓存中的打点数据的优先级,将第一优先级对应的打点数据存储至所述第一存储空间,将第二优先级对应的打点数据存储至所述第二存储空间。
7.根据权利要求6所述的方法,其特征在于,所述第一优先级高于所述第二优先级,所述环形内存缓存的优先级高于所述第一存储空间的优先级;所述电子设备按照所述打点数据的优先级,将所述预设的存储空间中的打点数据读取至上报缓存中,包括:
所述电子设备按照优先级由高到低的顺序,从所述环形内存缓存、所述第一存储空间以及所述第二存储空间中读取所述打点数据至所述上报缓存中。
8.根据权利要求7所述的方法,其特征在于,所述电子设备按照优先级由高到低的顺序,从所述环形内存缓存、所述第一存储空间以及所述第二存储空间中读取所述打点数据至所述上报缓存中,包括:
在所述存储空间和所述环形内存缓存中的打点数据的数量大于第三阈值时,所述电子设备按照优先级由高到低的顺序,从所述环形内存缓存、所述第一存储空间以及所述第二存储空间中读取所述打点数据至上报缓存中;所述第三阈值用于表征发送打点数据的数量的下限值。
9.根据权利要求1所述的方法,其特征在于,在所述电子设备满足启动发送打点数据条件时,所述方法还包括:
所述电子设备获取链路状态;所述链路状态用于表征链路可用或链路不可用;
所述电子设备按照所述打点数据的优先级,将所述存储空间中的打点数据读取至上报缓存中,包括:
所述电子设备根据所述链路状态确定链路可用时,按照所述打点数据的优先级,将所述存储空间中的打点数据读取至所述上报缓存中。
10.根据权利要求1-8中任一项所述的方法,其特征在于,所述方法还包括:
所述电子设备获取链路状态;所述链路状态用于表征链路可用或链路不可用;
如果所述链路状态表征链路可用,所述电子设备获取可用链路的业务状态;所述业务状态包括繁忙状态或空闲状态;
所述电子设备根据所述可用链路的业务状态,确定所述上报缓存中的打点数据的上报周期;
所述电子设备将所述上报缓存中的打点数据发送至其他设备,包括:
在所述上报周期到达时,所述电子设备将所述上报缓存中的打点数据发送至所述其他设备。
11.根据权利要求10所述的方法,其特征在于,如果所述可用链路的业务状态为空闲状态,所述上报周期为第一周期;如果所述可用链路的业务状态为繁忙状态,所述上报周期为第二周期;所述第一周期小于所述第二周期。
12.根据权利要求1-11中任一项所述的方法,其特征在于,所述方法还包括:
所述电子设备获取已发送至所述其他设备的打点数据的数量;
如果所述已发送的打点数据的数量大于或等于第四阈值,停止发送打点数据操作,在所述电子设备重新满足启动发送打点数据条件时,所述电子设备按照所述打点数据的优先级,将所述存储空间中的打点数据读取至所述上报缓存中;所述第四阈值用于表征发送打点数据的数量的上限值。
13.根据权利要求1-12中任一项所述的方法,其特征在于,所述打点数据中标记了数据传输通道;所述电子设备将所述上报缓存中的打点数据发送其他设备,包括:
所述电子设备基于所述打点数据对应的数据传输通道,将所述上报缓存中的打点数据传输至目标应用,以使所述目标应用将所述上报缓存中的打点数据发送至所述其他设备;所述目标应用包括所述电子设备中用于进行打点数据传输的应用。
14.根据权利要求1-13中任一项所述的方法,其特征在于,所述方法还包括:
所述电子设备接收参数配置信息,基于所述参数配置信息更新参数配置;所述参数配置信息包括环形内存缓存的存储空间、第一定时器的触发周期、第一阈值、第二阈值、第三阈值、第四阈值、第一周期和第二周期中至少一项。
15.一种电子设备,其特征在于,所述电子设备包括存储器、通信模块和一个或多个处理器;所述存储器、所述通信模块与所述处理器耦合;所述存储器中存储有计算机程序代码,所述计算机程序代码包括计算机指令,当所述计算机指令被所述处理器执行时,使得所述电子设备执行如权利要求1-14中任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-14中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310783103.9A CN117724860A (zh) | 2023-06-28 | 2023-06-28 | 一种数据处理方法和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310783103.9A CN117724860A (zh) | 2023-06-28 | 2023-06-28 | 一种数据处理方法和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117724860A true CN117724860A (zh) | 2024-03-19 |
Family
ID=90198466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310783103.9A Pending CN117724860A (zh) | 2023-06-28 | 2023-06-28 | 一种数据处理方法和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117724860A (zh) |
-
2023
- 2023-06-28 CN CN202310783103.9A patent/CN117724860A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020259649A1 (zh) | 一种蓝牙寻物的方法及电子设备 | |
CN112527476B (zh) | 资源调度方法及电子设备 | |
CN112181616B (zh) | 任务处理方法及相关装置 | |
CN114079893A (zh) | 蓝牙通信方法、终端设备及计算机可读存储介质 | |
CN114079892A (zh) | 蓝牙通信方法、可穿戴设备及系统 | |
WO2022262492A1 (zh) | 数据下载方法、装置和终端设备 | |
CN114449576A (zh) | 一种应用数据的发送方法、装置及设备 | |
WO2023160179A9 (zh) | 倍率切换方法和倍率切换装置 | |
CN116700913A (zh) | 嵌入式文件系统的调度方法、设备及存储介质 | |
CN111104209A (zh) | 一种处理任务的方法及相关设备 | |
WO2022100141A1 (zh) | 插件管理方法、系统及装置 | |
CN114079642B (zh) | 一种邮件处理方法及电子设备 | |
CN117724860A (zh) | 一种数据处理方法和电子设备 | |
CN114257502B (zh) | 一种日志上报方法及装置 | |
CN116418995A (zh) | 编解码资源的调度方法及电子设备 | |
WO2023005783A1 (zh) | 数据处理方法及电子设备 | |
CN117130765B (zh) | 计算资源的配置方法和电子设备 | |
CN116009960B (zh) | 一种目标微服务迁移方法、系统和电子设备 | |
WO2024007970A1 (zh) | 线程调度方法及电子设备 | |
CN113613230B (zh) | 一种扫描参数的确定方法及电子设备 | |
WO2023051036A1 (zh) | 加载着色器的方法和装置 | |
CN115087134B (zh) | 一种蓝牙连接的方法和电子设备 | |
CN117667506A (zh) | 一种图库克隆方法、系统和电子设备 | |
CN116095219A (zh) | 通知显示方法和终端设备 | |
CN117130765A (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 |