CKafka一站式搭建数据流转链路,助力长城车联网平台降低运维成本
关于长城智能新能源
长城汽车是一家全球化智能科技公司,业务包括汽车及零部件设计、研发、生产、销售和服务,旗下拥有哈弗、魏牌、欧拉、坦克及长城皮卡。2022年,长城汽车全年销售1,067,523辆,连续7年销量超100万辆。长城汽车面向全球用户提供智能、绿色出行服务,加速向全球化智能科技公司进阶,智能化车型渗透率达86.17%,车联网作为智能化两大应用方向之一,在这个过程中快速发展。
长城车联网平台涵盖车内总线数据上报、远程、车机配置下发、推送文件、推送消息、运营关怀等全新车联网业务,实现车机端和业务平台解耦并高效完成业务对接整合。
主要场景包括:
● 车端数据上报——电机、位置、发动机、整车数据、电池,报警等,通过 tbox 上报车联网平台,针对上报数据进行实时数据处理、计算、推理,以便提供车况查询、告警等智能化服务。
● 远程控制——手机 APP/智能设备集成车联网平台能力,实现远控、诊断。
以下是车联网平台架构图(示意)。
车联网平台架构图(示意)
爆炸式增长带来的挑战
车联网平台目前已接入数百万辆车,峰值在线达百万辆。车端上报信号数据量大、上传频率高,数据呈爆炸式增长,海量数据实时处理与分析面临严重挑战。
对系统提出以下要求:
1、处理时效要求高
查询时效性、分析决策、监控告警
2、数据量大,稳定
分布式、平行扩展、低耦合、高可用性、数据安全
物联网设备通常性能比较弱,很难去使用流行的传统的消息中间件。基本上 IOT 设备里面,都是用 MQTT 来去做消息的传输。但 MQTT 存在以下缺点:
只是排队,而不是流处理
无法处理使用量激增(没有缓冲)
大多数 MQTT 代理不支持高可伸缩性
异步处理(通常脱机很长时间)
缺乏与企业其他部分的良好集成
单一基础设施(通常位于边缘)
不能对事件进行再处理
只有 MQTT 数据有可能来不及处理就被丢掉,同时也满足不了海量数据实时处理与分析带来的挑战。
解决方案
作为分布式消息队列的 Kafka,因多分区、零拷贝、批处理、顺序读写等设计和特性能够实现高吞吐量的数据处理。同时作为一个事件流平台,它结合消息传递、存储和数据处理来构建高度可伸缩、可靠、安全和实时的基础设施。从车联网的角度来看具有以下优点:
流处理,不仅仅是排队
高吞吐量
大规模的
高可用性
长期存储和缓冲
再处理的事件
与企业的其他部分良好集成
Kafka 和 MQTT 的结合是构建可伸缩、可靠和安全的车联网基础设施的天成之选,因此长城车联网平台选择 Kafka 作为数据处理核心组件。
MQTT 的 Broker 集群后对接 Kafka 集群,先通过 MQTT 从设备采集数据,采集后再转储到 Kafka,供后续引擎分析处理。即使处理的速度没有采集的速度快,数据也不会丢失,因为已转储到 Kafka。长城正是用这种方式实现了车联网设备状态的持续监控和分析。
但自建 Kafka 带来日益加重的研发和运维成本:
首先,解决问题的研发运维人员需要具备扎实的计算机功底(熟悉计算机网络、IO 等),需对 Kafka 的底层原理、各种配置参数项等具有深刻理解,可以进行 Kafka 集群参数调优,快速处理突发故障、恢复集群抖动和动态进行集群扩缩容等。
其次,一方面需要投入更多的人力、物力成本,另一方面需要时刻监控集群的健康状况,及时排除问题以保障业务的稳定运行。
最后,自建消息队列在扩展性、可维护性能方面存在不足,当业务的消息数据量到达一定程度后,自建的消息队列集群就会引发各种各样的问题,问题的解决又带来很大的挑战。
举几个简单例子:
集群发生异常时,因为监控指标不全,日志输出不合理等原因,排查定位问题困难,只能靠暂停业务、重启 Kafka 集群解决问题,对业务影响较大。
Kafka 的集群扩容复杂度高,在业务高峰进行迁移的时候,出现分区迁移卡死。
自建集群的 ZK 运维难度大,ZK 负载高,导致ZK频繁断连。
与腾讯云技术团队沟通, CKafka(Cloud Kafka)作为云上 Kafka 版本,具有完善的监控告警系统和运维工单系统,在性能、扩展性、业务安全保障、运维等方面具有很强优势,可以在享受低成本、高性能、丰富功能的同时,免除繁琐运维工作。
车联网平台利用高性能、高吞吐、可拓展的分布式消息队列引擎 CKafka,实现业务解耦、削峰填谷、数据的异步处理,达到业务的高可靠性。
数据上报场景
车辆产生的实时数据(如 GPS 位置、速度、油耗等)通过 CKafka 进行收集、传输、分发,实现一份数据多个流向满足多个场景需求。
实时计算部分
通过 Flink 提供的 Kafka 连接器,流数据经过 Flink 算子进行处理落入高性能列式数据库 Clickhouse,用于实时更新数据的分析。该流程可提供一次精确的处理语义,同时 CKafka 多分区提供更高的吞吐量,减少数据倾斜和热点。
车辆故障、异常行为等车辆的状态数据,通过实时分析可以快速发现并处理车辆的问题。
离线分析部分
通过 Flume 等日志收集系统,可将 CKafka 中海量日志数据进行高效收集、聚合、移动,最后存储到 HDFS 或者 Hbase。在生产处理环节中,当生产与处理速度不一致时,CKafka 可以充当缓存角色。拥有 Partition 结构以及采用 Append 追加数据,使 CKafka 具有优秀的吞吐能力;同时其拥有 Replication 结构,使 CKafka 具有很高的容错性。
车辆数据经过离线分析和挖掘,分析结果可以用于优化车辆性能、提高驾驶安全、降低能耗等。
指令下发场景
在指令下发场景中,CKafka 承接远程指令和响应结果,为上下游多个系统提供异步接耦、削峰填谷的能力,同时消息持久化及可回溯的产品特性能保障指令状态的最终一致性。
使用 CKafka 后的业务收益
与自建 Kafka 相比,CKafka 有完善的监控告警系统和运维工单系统,CKafka 研发专家随时答疑解惑,迅速解决客户问题,省心省力。
CKafka 在性能、扩展性、业务安全保障、运维等方面具有超强优势,让客户在享受低成本、超强功能的同时,免除繁琐运维工作。当 CKafka 集群的流量和磁盘容量超过告警阈值,后端会及时扩容设备,对客户端无感知。解决开源 Kafka 长期以来迁移数据的痛点,配置升级无感知,轻松应对业务高峰。
除了可拓展性之外,CKafka 支持同地域自定义多可用区部署,跨地域灾备,提升业务容灾能力。
未来展望
针对降低存储成本、快速应对突发流量峰值的两个核心诉求,CKafka 将演进按量存储形态,并推出弹性带宽能力。
按量存储
按照实际使用存储空间弹性计费,无需考虑预留存储空间,更加灵活易运维,且成本更低。
弹性带宽
在既定带宽规格上,提供一定范围的上浮空间(即弹性能力)。
若遇到突发的流量毛刺,集群不会触发限流,而是在规定范围内弹性扩缩容,超出原有带宽部分的流量按量计费。
通过合理的架构设计和灵活的产品能力,CKafka 帮助用户在云上以更低成本托管高吞吐、高可用、易用免运维的消息队列 Kafka 服务,一站式搭建数据流转链路。后续也期待与出行行业客户有更多合作,分享更多云上最佳实践。
往期推荐
滴滴史上最严重服务故障,罪魁祸首是底层软件 or “降本增笑”?
点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦
微信扫码关注该文公众号作者