由白玉兰开源开放研究院指导,联合掌门教育、声网、vue北京,举办的第二期前端技术分享活动,已于6.19号落幕,如下为大咖讲师们,现场演讲的整理稿,感谢你们的支持:前端
分享嘉宾——刘伟,掌门教育自研APM项目负责人,如下为刘伟同窗精彩演讲的部份内容:vue
针对数据分析这块,掌门教育内部,后端服务使用的是开源的Apache SkyWalking系统,虽然SkyWalking已经提供了很是方便的SDK,能够知足咱们不少场景下的需求。但对于掌门教育目前的一些定制化的前端业务场景,咱们不少的业务需求依然难以彻底覆盖,以此咱们前端须要一套本身的APM系统。redis
天眼系统主要是针对外部C端用户信息进行记录,目前掌门教育已经有400+个前端项目,接入天眼系统的应用数量也有100+,接近全部项目总数的30%,主要覆盖Web端、H五、App这些应用场景。后端
探针:数据采集、上报是APM系统的发起点,它主要负责在客户端程序中采集数据,并发送到咱们服务器端的收集器。针对探针的设计,最大的难点主要在于咱们如何去设计,并获取咱们须要的数据信息,好比跟用户体验及其相关的95/99线等等。api
收集器、存储器:收集、存储器自己只是一个简单的应用程序,但结合到数据源多样化的topic类型、庞大日志量,以及咱们要保持系统的稳定性、可靠性,这就对咱们提出了更高的技术要求。服务器
数据可视化界面:UI系统是咱们另一个很是核心的应用产品,相似咱们常见的PV、UV指标,都须要在这一层中被暴露出去,向咱们的业务赋能这些关键数据信息。markdown
异常预警:前端异常告警的概念相对于后端应用来讲,理念可能不是很强,好比后端redis-timeout这种异常是很是致命的,前端这样的相似的场景就比较少。但如今,不少极度影响用户使用体验的场景,对于一家互联网公司来讲,也已经愈来愈重要,这就要求咱们可以寻找并提供一种方式、方法去让前端团队可以对这些关键指标进行预警。网络
工单追踪:咱们不少时候,C端用户会报障过来,过去咱们只能提供后端api的调用链来分析问题,但假如用户App自己出现了问题,好比卡顿等等这样的问题,那咱们就须要可以获取到用户的设备状况、网络状况来进行分析。并发
业务指标分析:对于前端应用来讲,一个页面内容的渲染、交互,能够分为不少细小的过程,好比咱们打开一个新页面,须要哪些流程进行处理,每个流程的表现状况如何,这些数据信息若是可以记录下来,而且进行针对性的分析,咱们前端就能够针对性进行优化。性能
咱们目前APM系统,结合了很是多掌门教育定制化场景的数据类型,这些数据类型可能不必定适合每个公司,这取决于你公司具体业务场景。在掌门技术部,咱们不少的上报信息跟产品、项目是强相关的。
通用性数据类型,咱们包括PV、UV,设备信息,流量信息、系统信息,用户App先后台存活信息等等,另外H五、App采集方式的区别也比较大,上报的方式也不同。
第一个问题是数据源的准确性问题。前端数据源的采集相对于后端,每每受到的影响因素不少,好比后端常见的一些访问超时,发生的时候就能够快速的记录下来,而前端会面临着延迟的概念,另外前端采集还会面临不少数据丢失的状况,这种种因素发生的几率很是高,这就对咱们前端数据源的采集带来了不少的挑战。
第二个问题是数据上报时机问题。对于C端用户环境而言,咱们的业务交互和采集数据上报都会占用同一个带宽资源,咱们必需要保证业务的优先级,尽可能不去影响用户使用体验,因此咱们必需要实现必定的调度、控制,好比上报数据间隔变大或者变小,让它自动化,本身自动去发现何时合适去上报数据,同时咱们也会须要必定的延迟上报能力,看看多少许的状况下更合适上报,而不是定时、定量去发送。