一种异步数据采集方法及系统
技术领域
本发明涉及数据采集及分析领域,尤其涉及一种异步数据采集方法及系统。
背景技术
数据采集,又称数据获取,是利用一种装置或系统,是从系统外部采集数据并输入到系统内部的一个接口。在互联网行业快速发展的今天,数据采集已经被广泛应用于互联网及分布式领域,比如摄像头,麦克风,都是数据采集工具。对于财务软件来说,进行数据采集,目前主要有三种埋点方式,代码埋点,可视化埋点,无埋点。
代码埋点是工作量最大也是最详细的,前端需要将埋点的代码写到页面和UI上,但是可以定制一些额外的信息,比如列表序号等等。
可视化和无埋点适应性不强,不能取到一些额外的信息。因为SaaS平台、代账公司针对数据的需求非常大,而且要求的维度和口径非常细,并要求业务系统无感,因此对数据的采集分析提出了很多挑战:
(1)业务系统无感:异步采集、与业务系统保持完全独立;
(2)代码埋点:通过对element配置,实现各element的类型、所属页面等信息获取,且可捕获目标值args,实现对时间的精确分析;
(3)无埋点:辅助进行全范围的时间捕捉,供以分析产品设计意料之外的用户行为。
同时,财务软件因用户范围而定制的如企业版、代账版,软件自身的各独立业务模块如税表系统、记账系统、报税系统,AB测试版本、灰度版本,广告渠道来源等情况对数据采集系统提出了汇总统计分析的挑战:
(1)多版本公用页面如何通过单个埋点采集不同数据;
(2)多个系统的数据如何进行聚合,并进行关联查询分析。
发明内容
本发明的目的是为了解决现有技术中存在的缺点,而提出的一种异步数据采集方法及系统,相比于传统的方案,本发明旨在通过异步的数据采集,实现对业务系统无关、且尽可能记录所有附加信息,并贯穿后续的数仓、报表系统,形成全流程的汇总分析。
为实现上述目的,本发明采用了如下技术方案:
一种异步数据采集方法及系统,包括WEB端、服务器模块、MySql模块、数仓中台模块和运营分析系统,所述WEB端用于撰写代码进行埋点操作,引入SDK;所述服务器模块用于存储与调用工作日志;所述MySql模块为数据库模块,用于存储数据;所述数仓中台模块用于接收与存储收集到的数据,并将数据送入运营分析系统;所述运营分析系统用于处理数仓中台模块送入的数据,并将分析报表呈现给用户。
进一步的,所述WEB端通过页面流量埋点或点击事件埋点引入SDK,所述WEB端与数仓中台模块数据连接,将埋点数据送入数仓中台模块。
进一步的,所述服务器模块与数仓中台模块数据连接,服务器模块将接口调用日志、报错日志和debug日志送入数仓中台模块。
进一步的,所述MySql模块与数仓中台模块数据连接,所述MySql模块将账套申报表、账号明细表和发票明细表送入数仓中台模块备份。
进一步的,所述数仓中台模块与运营分析系统数据连接,所述数仓中台模块将埋点数据、日志和数据库备份汇总整理后发送给运营分析系统。
进一步的,所述运营分析系统面向用户进行数据分析,实现多个系统数据的聚合。包括数据仪表盘模块、用户行为分析模块、云迹日志查询模块和业务数据分析模块,所述数据仪表盘将数据分析结果呈现给用户,用户行为分析模块将从数仓中台模块接收到的事件信息进行分析,云迹日志查询模块实现历史数据中的日志调用与查询功能,业务数据分析模块对MySql模块中的业务数据进行汇总统计分析。
所述异步数据采集方法,具体步骤如下所述:
整个埋点方案分为前端SDK上报及后端配置存储两部分。
进一步的,前端SDK采集上报流程包括:
步骤S1:用户登入页面;
步骤S2:提前进行埋点字段设计,引入页面埋点配置表;
步骤S3:页面埋点初始化:采用代码埋点或无埋点方案,根据页面埋点配置表引入SDK,提供埋点数据采集方法;
步骤S4:事件捕捉:针对代码埋点方案,在触发事件内部调用SDK;针对无埋点方案,进行全局事件捕捉,根据事件明细信息里的数据来进行对应的操作,比如带回指定dom元素的数据,也可不做任何操作,只记录本次埋点记录;
步骤S5:将触发埋点的事件信息或全局捕捉的事件信息缓存入localStorage;
步骤S6:localStorage缓存的用户事件进行批量上报:每次触发埋点事件后通过埋点数判断是否需要提交数据,若localStorage缓存的用户事件超过10条,则批量上报事件;若localStorage缓存的用户事件不满10条,则事件信息继续缓存入localStorage,等待下一次触发埋点事件。
步骤S7:用户登出。
优选的,代码埋点,需要在具体埋点的地方写好代码,即引入一个SDK。
优选的,无埋点,有相对统一而又独特的标识符,批量处理埋点。
优选的,针对代码埋点,需要开发人员在具体触发的事件内部调用埋点的方法,并将对应的业务数据提交。针对无埋点,需要开发人员提前将事件id作为trackId属性的value写入对应的dom标签里,用以在统一拦截时辨识,拦截后可以根据事件明细信息里的数据来进行对应的操作,比如带回指定dom元素的数据,也可不做任何操作,只记录本次埋点记录。
优选的,两种方案的共同点是,都需要一套公用的埋点数据采集方法,既sdk,提供埋点数据采集存储方法,数据批量上传方法等。上述第二种情况的根据配置关系批量埋点的方法也写入sdk。
优选的,对于公共页面在不同的地方展示,需要根据父页面给当前页面设置不同的pageId,sdk会去获取对应的数据。
优选的,数据提交原则如下:数据达到10条提交一次,当前提交失败后,1分钟内不提交,连续失败5次,本次会话不再提交数据。数据缓存在localStorage中。
进一步的,后端配置存储流程包括:
步骤S1:获取所有埋点明细信息的接口:通过传参appid,返回该appid下在各个页面的事件明细,包括事件id,事件类型,目标dom的定位信息,目标dom的类型,带回的信息等;
步骤S2:批量上传埋点数据的接口;
步骤S3:localStorage缓存的用户事件的批量上报,需支持跨域;服务端接收数据落库;
步骤S4:通过版本号配置表、埋点元素配置表、事件类型配置表、页面类型配置表配置所有埋点元素并支持热更;通过appid、version、channel等配置管理,实现一点多用,同步采集且区分来源;
步骤S5:数据存储及查询备用:数据直接落库存入ODS层hdfs文件,在数仓中台经过脱敏后,提供应用层数据可进行访问,对接前端BI报表;通过ODS层数据汇总,依业务需求对多版本、多系统数据源进行宽表聚合并存储为hdfs,以供BI系统调用分析,从而实现多个系统数据的聚合,同时实现关联查询分析。
优选地,用户登陆之后,在不影响用户使用的情况下,客户载入系统后如打开页面后,埋点获取数据才开始执行。进一步的,埋点字段设计如下所述:
(1)基础字段设计:
(2)业务拓展字段设计:
优选地,Session、L1_session、L2_session的组合设计,更精确定位用户在页面停留、跳出等细节行为的分析鉴定;
优选地,Event_type字段的设计有助于产品设计人员迅速定位各事件类型中异常的element;
优选地,Args字段的设计充分捕捉用户在下拉菜单、筛选等类型事件的操作行为。
与现有技术相比,本发明的有益效果为:
1.相比于传统的方案,旨在通过异步的数据采集,实现对业务系统无关、且尽可能记录所有附加信息,并贯穿后续的数仓、报表系统,形成全流程的汇总分析;
2.用户登陆之后,在不影响用户使用的情况下,客户载入系统后如打开页面后,埋点获取数据才开始执行,上报策略:获取的数据先放到客户本地空间,达到一定的量之后再上报,用户动作会做序列化,即存入后端表,当有遗漏时,可以做追踪,后续数据处理比对的过程;
3.前端通过SDK埋点获得,后端是通过后端配置获取,告诉从后端直接获取,从而到达了埋点和无埋点结合,从而实现了业务系统无感,即不能影响客户正常的系统使用(如性能下降等)。
4.串联中台数仓的宽表处理,实现多独立系统、业务软件的数据汇总聚合,交付BI系统统计分析。
附图说明
图1为本发明实施例1的数据采集分析流程图;
图2为本发明实施例1的前端SDK采集上报流程图。
具体实施方式
为使对本发明的目的、构造、特征、及其功能有进一步的了解,兹配合实施例详细说明如下。
请参见图1,一种异步数据采集方法及系统,包括WEB端、服务器模块、MySql模块、数仓中台模块和运营分析系统,所述WEB端用于撰写代码进行埋点操作,引入SDK;所述服务器模块用于存储与调用工作日志;所述MySql模块为数据库模块,用于存储数据;所述数仓中台模块用于接收与存储收集到的数据,并将数据送入运营分析系统;所述运营分析系统用于处理数仓中台模块送入的数据,并将分析报表呈现给用户。
进一步的,所述WEB端通过页面流量埋点或点击事件埋点引入SDK,所述WEB端与数仓中台模块数据连接,将埋点数据送入数仓中台模块。
进一步的,所述服务器模块与数仓中台模块数据连接,服务器模块将接口调用日志、报错日志和debug日志送入数仓中台模块。
进一步的,所述MySql模块与数仓中台模块数据连接,所述MySql模块将账套申报表、账号明细表和发票明细表送入数仓中台模块备份。
进一步的,所述数仓中台模块与运营分析系统数据连接,所述数仓中台模块将埋点数据、日志和数据库备份汇总整理后发送给运营分析系统。
进一步的,所述运营分析系统面向用户进行数据分析,实现多个系统数据的聚合。包括数据仪表盘模块、用户行为分析模块、云迹日志查询模块和业务数据分析模块,所述数据仪表盘将数据分析结果呈现给用户,用户行为分析模块将从数仓中台模块接收到的事件信息进行分析,云迹日志查询模块实现历史数据中的日志调用与查询功能,业务数据分析模块对MySql模块中的业务数据进行汇总统计分析。
所述异步数据采集方法,具体步骤如下所述:
整个埋点方案分为前端SDK上报及后端配置存储两部分。
请参见图2,前端SDK采集上报流程包括:
步骤S1:用户登入页面;
步骤S2:提前进行埋点字段设计,引入页面埋点配置表;
步骤S3:页面埋点初始化:采用代码埋点或无埋点方案,根据页面埋点配置表引入SDK,提供埋点数据采集方法;
步骤S4:事件捕捉:针对代码埋点方案,在触发事件内部调用SDK;针对无埋点方案,进行全局事件捕捉,根据事件明细信息里的数据来进行对应的操作,比如带回指定dom元素的数据,也可不做任何操作,只记录本次埋点记录;
步骤S5:将触发埋点的事件信息或全局捕捉的事件信息缓存入localStorage;
步骤S6:localStorage缓存的用户事件进行批量上报:每次触发埋点事件后通过埋点数判断是否需要提交数据,若localStorage缓存的用户事件超过10条,则批量上报事件;若localStorage缓存的用户事件不满10条,则事件信息继续缓存入localStorage,等待下一次触发埋点事件。
步骤S7:用户登出。
具体的,代码埋点,需要在具体埋点的地方写好代码,即引入一个SDK。
具体的,无埋点,有相对统一而又独特的标识符,批量处理埋点。
具体的,针对代码埋点,需要开发人员在具体触发的事件内部调用埋点的方法,并将对应的业务数据提交。针对无埋点,需要开发人员提前将事件id作为trackId属性的value写入对应的dom标签里,用以在统一拦截时辨识,拦截后可以根据事件明细信息里的数据来进行对应的操作,比如带回指定dom元素的数据,也可不做任何操作,只记录本次埋点记录。
具体的,两种方案的共同点是,都需要一套公用的埋点数据采集方法,既sdk,提供埋点数据采集存储方法,数据批量上传方法等。上述第二种情况的根据配置关系批量埋点的方法也写入sdk。
具体的,对于公共页面在不同的地方展示,需要根据父页面给当前页面设置不同的pageId,sdk会去获取对应的数据。
具体的,数据提交原则如下:数据达到10条提交一次,当前提交失败后,1分钟内不提交,连续失败5次,本次会话不再提交数据。数据缓存在localStorage中。
请进一步参见图1和图2,后端配置存储流程包括:
步骤S1:获取所有埋点明细信息的接口:通过传参appid,返回该appid下在各个页面的事件明细,包括事件id,事件类型,目标dom的定位信息,目标dom的类型,带回的信息等;
步骤S2:批量上传埋点数据的接口;
步骤S3:localStorage缓存的用户事件的批量上报,需支持跨域;服务端接收数据落库;
步骤S4:通过版本号配置表、埋点元素配置表、事件类型配置表、页面类型配置表配置所有埋点元素并支持热更;通过appid、version、channel等配置管理,实现一点多用,同步采集且区分来源;
步骤S5:数据存储及查询备用:数据直接落库存入ODS层hdfs文件,在数仓中台经过脱敏后,提供应用层数据可进行访问,对接前端BI报表;通过ODS层数据汇总,依业务需求对多版本、多系统数据源进行宽表聚合并存储为hdfs,以供BI系统调用分析,从而实现多个系统数据的聚合,同时实现关联查询分析。
优选地,用户登陆之后,在不影响用户使用的情况下,客户载入系统后如打开页面后,埋点获取数据才开始执行。
进一步的,埋点字段设计如下所述:
(3)基础字段设计:
(4)业务拓展字段设计:
具体地,Session、L1_session、L2_session的组合设计,更精确定位用户在页面停留、跳出等细节行为的分析鉴定;
具体地,Event_type字段的设计有助于产品设计人员迅速定位各事件类型中异常的element;
具体地,Args字段的设计充分捕捉用户在下拉菜单、筛选等类型事件的操作行为。
本发明已由上述相关实施例加以描述,然而上述实施例仅为实施本发明的范例。必需指出的是,已揭露的实施例并未限制本发明的范围。相反地,在不脱离本发明的精神和范围内所作的更动与润饰,均属本发明的专利保护范围。