玉器网站模版,鸿蒙系统开发教程,回收那个网站做推广好,文创产品设计概念塑云科技#xff1a;性能突破#xff0c;基于KafKaOTSMaxCompute 完成了一次物联网系统技术重构
背景#xff1a;创业团队#xff0c;专注于氢能燃料电池生态链的运营支撑#xff0c;当前主要的业务组成为新能源车整车实时运营监控分析#xff0c;加氢站实时运营监控分析…塑云科技性能突破基于KafKaOTSMaxCompute 完成了一次物联网系统技术重构
背景创业团队专注于氢能燃料电池生态链的运营支撑当前主要的业务组成为新能源车整车实时运营监控分析加氢站实时运营监控分析车辆安全运营支撑。 系统面临的主要挑战高频数据的实时解析、存储、分析。拿整车实时运营监控分析来讲每辆车以每秒1K的原始报文上报要求做到秒级延迟的解析应答以及入库。同时需要针对解析后的每车每秒33K的报文进行快速查询以及后继的分析。考虑到未来车辆接入的量需要在考虑性能的基础上以最经济的方式进行系统设计。按照每车每秒33K的解析后报文每车每月预计生成30G的报文数据车辆按照每天运行10小时计算。 原有系统存在的问题如下罗列部分
1. 系统架构中未对OLAP和OLTP系统的范围进行清晰界定使用JAVA程序对OTS的表定时进行任务统计代码复杂并且性能极差并且影响到服务器上其他OLTP系统的正常运行。
2. 存储的解析后的报文数据未针对OTS的计价规则进行针对性优化一个大JSON串中冗余的KEY过多KEY的长度超长平均30个字符串。
3. OTS阿里云tablestore按照公司进行分表设计存在单个实例下表数量超过OTS限制64表的风险。
4. OTS以车月作为分区键单个分区30G过大超过OTS建议的1G推荐大小。
5. OTS单车的分区连续分布未做散列不能在物理机器层面最优并发性能。
6. 没有针对最核心的读取场景按天按车查询报文进行编码层面的优化。 在做系统优化之前首先要做的就是架构层面的梳理对产品中需要使用到的中间件产品的适用范围进行了明确的界定。数据在各个环节的流转进行明确的定义如下 这里主要的改进
一、引入KAFKA作为多个环节异步解耦的基础支撑提升对终端的报文快速回复。
二、引入MaxCompute 作为OLAP系统的基础支撑。将复杂的业务分析转交给MaxCompute 来处理。
三、针对OTS的计价原则对OTS的模型进行了重构此文暂不讨论 MaxCompute作为阿里云强大的数据分析利器因为之前的经历相对比较熟悉。所以在这次的改造中特别针对性能、成本、可运维等方面做了较多的思考。
这里首先讲一讲基于成本的考虑。首先根据数据的使用频度将数据切分为在线、离线、归档三类。车辆终端上报的报文数据作为归档数据选择OSS的归档存储。在线数据设定N月的生命周期主要包括报文解析之后需要实时查询的数据离线数据主要包括基于解析的报文数据进行离线分析统计之后形成的各类中间结果、报表数据。
针对数据的使用场景界定数据类型之后这里主要考虑离线数据使用OSS还是MaxComputeODPS或者是OTS来存储的问题。根据三类产品的存储计算成本我做了一个粗略对比如下 这里已经考虑通过压缩的方式存储OTS减少计价存储的情况。当然MaxCompute的计价是按照实际压缩存储之后的容量计算。MaxCompute官方文档介绍的是5:1的压缩比而我们的数据因为本身的特点实测可以到7~8 1的压缩比所以最后数据方案反倒是MaxCompute直接存储离线数据性价比最高。同时也符合数据靠近计算的原则。
经过测试使用OTS外部表作为数据载体的计算性能一般当前MaxCompute对OTS的外部表的Map Reduce计算直觉觉得是基于OTS的分片并且缺少分区的概念每次都是基于全表扫描这点可以从MaxCompute的任务详情可以观测出来。
技术选型确定以后剩下的是如何利用MaxCompute为业务提供可靠、稳定数据服务。这里特别需要强调的是数仓的建模、数据集成、工作运维的使用。
数据集成主要这方面主要体现MYSQL跟MaxCompute的双向同步这个不需要特别讲主要是设计上需要考虑到数据的重复同步的设计即可。关于工作运维则是更多地体现在对任务的运行状况的监控以及重跑的支持。
数仓的建模主要考虑的还是成本和模型的复用。首先针对海量、质量不高的底层数据进行分层建模。保证上层的业务模型只依赖中间结果。这里带来的直接效益就是计算成本的大幅下降每每看到有些开发同事动不动就对着一个上百G的原始表做各种查询的时候心是痛的….其次是中间模型为系统补数带来更快的性能毕竟因为一些业务或者数据的原因需要重跑部分报表这个时候如果需要重新扫描原始数据的时候首先就是费钱非常费钱。其次就是耗时非常耗时。
在离线统计分析的重构完成之后系统充分利用MaxCompute的并行计算能力并且借助其强大的函数尤其是窗口函数的支持我们实现比较不错的分析能力客户的一个核心部件的数据统计分析之前一个专业的工作人员分析一个部分需要耗时一天还容易出错。借助平台的分析能力可以在10分钟内计算完将近1000个部件的数据分析工作。类似下面的曲线图分析每次数据波动期间的均值之前几乎无法人工计算即便是JAVA编码也是一个非常复杂的编码工作通过平台的支持系统处理得游刃有余。 一次计流水账式的总结且当做一次经验的沉淀
原文链接 本文为云栖社区原创内容未经允许不得转载。