覃天威 张剑亮 胡俊威 刘嵩岩 李思江
摘要:随着用户对车联网体验要求的提高,APP 车联网功能使用已成为很多车主的刚需。当其出现故障影响用户使用时,会立即收到用户大量投诉,降低用户满意度,因此需要搭建APP 车联网功能故障监控系统。本文通过对当前业务存在的故障发现晚、故障排查慢、被动接受故障以及海量数据查询慢等问题进行分析,针对性提出了故障实时监控、及时预警、主动发现及大数据处理的系统设计与实现方法。经过系统测试和业务实践表明,该故障监控系统的设计与实现能有效解决业务问题,实现了故障实时监控预警,主动发现故障前兆并避免约50% 的批量故障发生。
關键词:APP ;车联网;故障监控;大数据;报错
中图分类号: TP39 文献标识码:A
0 引言
近年来,随着汽车电子技术的进步与发展,汽车的车载计算机处理器功能越来越强。许多车辆目前已经具备强大的线下计算能力,以处理包括车辆控制、感知计算等各类业务[1]。而搭载车联网功能的汽车日益增多,也使得用户对车联网的体验要求也越来越高,APP 车联网功能的使用已成为部分车主的刚需。如车主通过APP 远程查看车辆位置、里程、电量和油量等,甚至使用远程控制打开空调降温、打开车窗透气或者遥控开闭门锁、起动车辆等用车强相关功能。
当APP 车联网功能的用户数量已经达到了相当规模,该功能一旦出现故障,势必会影响用户的体验,甚至会降低用户的满意度。因此,为了保障APP 车联网功能稳定运行,减少用户投诉,给用户持续带来愉悦的APP 端用车体验,需要搭建APP 车联网功能故障监控系统,以便及时定位到故障,提前做好系统应对措施,减少故障发生率。
2 需求分析
2.1 APP 车联网功能及团队构成现状
当前车联网使用“云——管——端”的架构。“云”是云服务,包括云计算和大数据,它能够基于收集到的大量数据实时进行智能处理和协同规划,进而开展队列控制等操作。“端”是指智能终端,包括汽车、手机(代表行人)和路侧单元等各种交通参与实体,也是执行云端指令的实体。而“管”则是连接“云”和“端”之间的各种管道,包括上、下行通信管道和直通管道,它将各种交通实体连接起来,并保证数据交互的顺畅[2]。
用户使用的手机APP 车联网功能是车联网的重要组成部分,涉及了“云——管——端”,主要包括登录APP、绑定车辆、查看车辆状态(位置、里程、电量和油量等)、远程控制车辆解闭锁(开关空调、开关窗或开关车灯)以及蓝牙钥匙连接(图1)。要保障APP 车联网功能稳定运行,其实就是要保证以上功能持续正常使用。若不可避免会出现个别问题,也应该用尽可能短的时间排查并修复。
2.2 APP 车联网功能故障排查难点
当前,APP 车联网功能故障排查和修复业务存在以下问题。
(1)发生批量故障无法第一时间知晓,滞后于用户投诉时间。同一时间段多个用户投诉同一个问题,才知道APP 车联网功能失效。
(2)收到用户投诉后,问题定位慢。需要先联系用户上传日志,然后开发人员再基于日志报错对应时间分析问题,无法立即知道是哪个系统链路环节异常导致。
(3)无法提前发现批量故障征兆,每次都得等批量故障发生后才知晓。
(4)APP 车联网功能接口调用记录数每日增量> 1 000 万条,直接存储于mysql 数据库中。随着存储数据量逐渐增大后,查询效率变得很慢。
2.3 APP 车联网功能故障解决方案
针对APP 车联网功能故障排查难等问题,项目团队提出如下解决方案。
(1)监控APP 车联网功能接口调用报错次数。对每天的接口报错次数排名,优先解决报错次数多的接口。当同一接口报错次数≥ 10 辆车/min,通过邮件方式通知系统负责人。
(2)APP 车联网功能接口调用报错,实现可视化报表呈现。当收到用户投诉APP 车联功能不可用时,业务人员可登录到系统后台,直观查看到接口报错系统开发方,同时可进一步查看报错详情。因此,无需再联系用户上传日志就能快速定位问题点。
(3)监控APP 车联网功能接口报错趋势。当一个接口调用报错次数在某个时间段呈逐渐增长或者突增趋势时,及时分析原因并解决,提前避免批量故障发生。
(4)引入大数据平台提升数据处理能力和查询效率,以保障随着数据量持续增长至亿级数据记录数,仍能实现10 s 内查询出数据结果。
2.4 APP 车联网功能故障解决技术方案
经调研分析,项目团队决定选用了Kafka(一种分布式的发布、订阅消息系统) 接收来自APP 的云数据, 并对接StructuredStreaming 和StreamSets。这是因为Kafka 目前已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展以及支持流数据处理等多种特性而被广泛使用。越来越多的开源分布式处理系统,如Cloudera、Storm、Spark 和Flink 等,都支持与Kafka 集成[3]。
Apache Hadoop 是目前业界分析海量数据的首选工具[4],因此,项目团队选用Hadoop 分布式系统技术方案解决海量数据查询慢问题。Hadoop 是以Hadoop 分布式文件系统(HadoopDistributed File System, 简称HDFS) 和MapReduce 分布式计算框架为核心,为用户提供底层细节透明的分布式基础设施。HDFS 具有高容错性和高伸缩性等优点,允许用户将Hadoop 部署在廉价的硬件上,构建分布式系统。MapReduce 分布式计算框架则允许用户在不了解分布式系统底层细节的情况下,开发并行、分布的应用程序,充分利用大规模的计算资源,解决传统高性能单机无法解决的大数据处理问题。
项目团队还选用FineBI 作为可视化编辑工具,供业务人员使用。这是因为FineBI 支持超过30 种以上的大数据平台和SQL数据源, 包括Hadoop Hive、SPARK、Presto、Oracle、DB2、MySQL、SQLServer 和MongoDB 等,能满足该系统的数据源对接需求。同时,FineBI 的可视化功能面向业务人员设计,解构了制作可视化分析的流程,可以自定义配置可视化图表,如常见的柱形图、饼图和折线图等,辅以颜色、大小、提示和标签,可以组合成丰富的可视化效果,降低业务人员制作分析的难度。
监控系统不仅要有故障报错数据呈现,更重要的功能是告警和故障处理,这对及时解决问题和故障自愈非常重要[5]。因此,项目团队选用了邮件服务方式作为告警通知提醒,邮件绑定微信后,可以实现微信通知。
3 系统设计与实现
3.1 功能设计
根据需求分析结果,用户需要主动登录系统查看监控数据用于发现问题,同时能够被动收到故障告警通知提醒。因此,将APP 车联网功能故障监控系统功能分为登录、监控和预警3 个主要模块,包括账号密码登录、车联网接口调用明细、车联网接口报错次数- 接口排名、车联网接口报错次数- 系统开发方排名、车联网接口报错趋势以及车联网接口报错告警等功能(图2)。
3.2 数据设计
APP 车联网功能故障监控系统在可视化呈现方面,使用了第三方数据分析工具FinelBI,因此在数据设计方面,可以根据APP车联网问题排查及监控预警的数据字段需要,重点关注车联网接口调用明细的数据表。数据表内容包括用户ID、用户手机号、车架号、系统平台、设备型号、系统版本、APP 版本、调用系统渠道、车型名单、车系名称、事件名称、事件页面、事件位置、接口名称、接口地址、接口调用时间、报错信息、操作结果以及操作参数等字段,具体表结构设计如图3 所示。
3.3 软件设计与实现
3.3.1 数据处理方案分析APP 车联网功能故障监控系统的难点在于亿级数据的统计分析处理,其数据处理方案考虑从2 个方面做调研分析。一方面是选择沿用当前APP 云微服务的MySQL 数据库,该方案系统改动最小,成本最低,但需评估数据处理效率是否能满足业务需求。另一方面是接入Hadoop 大数据平台,该方案能保证大数据处理效率,但系统改动较大,成本更高。
不过调研发现,选择MySQL 数据库做数据统计分析处理,当数据小于1 000 万条时,数据查询耗时能保持10 s 以内,可满足业务需求;但随着查询数据量超过10 亿条时,查询耗时超过60 s,甚至出现报错,无法满足业务需求。而选择Hadoop 大数据平台在处理超过10 亿条数据统计时,查询耗时小于10 s,可满足业务需求。从公司未来大数据发展角度出发,也需要一个大数据平台用于存储和处理公司所有系统产生的大数据。综合以上分析,确定了选择Hadoop 大数据平台作为APP 车联网功能故障监控系统数据处理方案。
3.3.2 系统链路分析
APP 车联网功能故障监控系统链路涉及APP 客户端、APP云、大数据平台和APP 车联网功能故障监控预警系统。当用户登录APP 绑车、查看车辆状态、远程控制车辆以及连接蓝牙钥匙时,会调用相应功能的系统接口。此时APP 客户端会产生一条接口调用数据记录,并上传至APP 云,再由APP 云将数据转发至大数据平台。最后APP 车联网功能故障监控系统访问大数据平台的数据集,实现可视化监控报表呈现和邮件告警(图4)。
APP 客户端:当用户有登录APP、绑车、查看车辆状态、远程控制车辆以及蓝牙钥匙连接等操作时,APP 客户端调用APP 云端提供的车联网功能接口调用明细API,传入用户ID、手机号、车架号、系统平台、设备型号、系统版本、APP 版本、调用系统渠道、车型名称、车系名称、事件名称、事件页面、事件位置、接口名称、接口地址、接口调用时间、报错信息、操作参数、操作结果以及状态(成功传1,失败传0)。
APP 云:收到APP 客户端车联网功能接口调用明细的API请求时,APP 云端通过nginx 代理服务器进行负载均衡,经过网关服务转发至车联网功能微服务,最后将数据转发至大数据平台。大数据平台:大数据平台通过Kafka 接收来自APP 云的数据,用StreamSets 实时采集Kafka 数据,并写入HDFS。
APP 车联网功能故障监控系统:系统基于HDFS 分布式存储和Presto 分布式SQL 查询的大数据处理平台,通过FinelBI 对数据进行灵活编辑并可视化呈現,实现批量故障监控可视化报表。最终通过StructuredStreaming 实时流式处理,调用公有云邮件服务实现告警通知(图5)。
3.4 硬件设计与实现
根据上述分析,APP 车联网功能故障监控系统的硬件由承载APP 客户端的移动终端(如手机或平板电脑)、APP 云服务器集群以及大数据平台服务器集群组成(图6)。当前具有APP 车联网功能版块服务的网联车已超过100 万辆,车联网相关功能接口每天调用次数超过3 400 万次,每月调用超过10 亿次。那么APP 车联网功能故障监控系统的硬件如何设计,才能更好地支撑业务开展。
3.4.1 移动端
由于当前车主用户大部分使用的是苹果、华为、小米、VIVO以及OPPO 手机,因此APP 客户端要求支持Android 和iOS 操作系统的手机及平板安装使用。
3.4.2 APP 云
APP 云主要面向用户承接流量,为了保证用车高峰期用户也都能访问APP 云,同时兼顾业务高可用,避免单台服务器异常导致业务中断,因此该系统一共选用了12 台服务器。其中,4 台服务器搭建nginx 集群,用于负载均衡;4 台服务器搭建网关服务器集群,用于微服务业务转发;还有4 台服务器搭建微服务器集群,用于基础功能微服务、车联网微服务、电商微服务以及内容微服务业务处理。由于该APP 云不涉及大量数据读写,因此选择了性价比较高的4 核CPU、16G 内存、普通IO 磁盘和linux 操作系统的服务器。
3.4.3 大数据平台
Kafka 服务器主要用于接收来自APP 云的接口调用数据并进行转发。该业务出现中断不影响用户端业务运行,且不涉及大数据计算,因此选用1 台4 核CPU、8G 内存、普通IO 磁盘和linux 操作系统的服务器即可。StreamSets 服务器用于采集Kafka 数据写入HDFS,也不涉及大数据计算,因此选用与Kafka相同配置的服务器即可。
由于HDFS+YARN+Presto 涉及大量数据存储和计算处理,除了车联网数据还包含公司其他业务系统大数据存储与计算服务。为保证其稳定性和高效的数据处理能力,需要大内存和高IO硬件投入。因此,选用了1 个主节点和20 个工作节点的架构方案,
4 系统测试与结果
为了验证系统登录、监控和告警模块功能有效性,在测试环境开通测试账号登录系统,使用APP 测试。绑定测试车辆并查看车辆状态,执行远程控制车辆和蓝牙钥匙连接操作。再关闭测试环境查看车辆状态接口,并在1 min 内查看10 辆车的状态。结果是测试账号成功登录系统,能正常查看到车辆的APP 车联网功能调用明细和可视化报表(图8)。当同一接口报错次数≥ 10 辆车/min 时,能正常收到了告警邮件通知(图9)。该功能在实际生产环境中可以屏蔽数据回传延迟和高峰消息阻塞的影响,通过具体事件发生时间统计出该时间窗口内有多少车辆调用报错,而不是将当前时间回传数据都算在当前时间窗口内,避免了用户访问高峰期产生的误差问题,从而实现精准报警。由于大数据平台亿级数据查询效率在测试环境模拟测试成本过高,因此未在测试环境验证查询效率,直接到生产验证。系统上生产环境运行1 个月,产生数据大于10 亿条,数据量达到3.2T,查询结果并成功展示小于10 s(图10)。
实践表明,该系统设计与实现能让系统运维人员快速定位排查问题,第一时间收到告警通知,并基于接口报错趋势分析提前做出系统优化措施,减少50% 批量故障发生。同时,随着数据量增大,依然能保持数据报表在10 s 内查询到结果,80% 查询结果小于5 s。
5 结束语
本文基于APP 车联网功能故障的需求分析,发现业务问题并提出系统解决方案。通过APP 车联网功能故障监控系统的设计与实现,能够对APP 车联网功能故障进行有效的监控和告警通知,面对亿级数据处理时仍能保持高效查询效率,避免了50% 批量故障发生。但在可视化报表跨月查询时发现,耗时是当月查询的2~3 倍,下一步将继续研究报表跨月查询效率提升的方法。
【参考文献】
[1] 李俨, 曹一卿, 陈书平, 等. 5G 与车联网:基于移动通信的车联网技术与智能网联汽车[M]. 北京: 电子工业出版社,2019.
[2] 王平, 王超, 刘富强, 等. 车联网权威指南: 标准、技术及应用[M]. 北京:机械工业出版社,2018.
[3] 朱忠华. 深入理解Kafka :核心设计与实践原理[M]. 北京: 电子工业出版社,2019.
[4] 蔡斌, 陈湘萍. Hadoop 技术内幕:深入解析Hadoop Common 和HDFS 架构设计与实现原理[M]. 北京: 機械工业出版社,2013.
[5] 吴兆松.Zabbix 企业级分布式监控系统[M]. 电子工业出版社,2014.
作者简介:
覃天威,本科,工程师,研究方向为汽车类相关APP 系统设计与开发。