塑云科技基于 KafKa+OTS+MaxCompute 完成物联网系统技术重构

塑云科技:性能突破,基于KafKa+OTS+MaxCompute 完成了一次物联网系统技术重构

背景:创业团队,专注于氢能燃料电池生态链的运营支撑,当前主要的业务组成为新能源车整车实时运营监控分析,加氢站实时运营监控分析,车辆安全运营支撑。

 

系统面临的主要挑战:高频数据的实时解析、存储、分析。拿整车实时运营监控分析来讲,每辆车以每秒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.       没有针对最核心的读取场景(按天按车查询报文)进行编码层面的优化。

 

在做系统优化之前,首先要做的就是架构层面的梳理,对产品中需要使用到的中间件产品的适用范围进行了明确的界定。数据在各个环节的流转进行明确的定义如下:

d00aa19ce5a3cb925276aa37f2e600d971844c9f

 

这里主要的改进

一、引入KAFKA作为多个环节异步解耦的基础支撑,提升对终端的报文快速回复。

二、引入MaxCompute 作为OLAP系统的基础支撑。将复杂的业务分析转交给MaxCompute 来处理。

三、针对OTS的计价原则,对OTS的模型进行了重构(此文暂不讨论)

 

MaxCompute作为阿里云强大的数据分析利器,因为之前的经历相对比较熟悉。所以在这次的改造中特别针对性能、成本、可运维等方面做了较多的思考。

这里首先讲一讲基于成本的考虑。首先根据数据的使用频度将数据切分为在线、离线、归档三类。车辆终端上报的报文数据作为归档数据选择OSS的归档存储。在线数据设定N月的生命周期,主要包括报文解析之后需要实时查询的数据,离线数据主要包括基于解析的报文数据进行离线分析统计之后形成的各类中间结果、报表数据。

针对数据的使用场景界定数据类型之后,这里主要考虑离线数据使用OSS还是MaxCompute(ODPS)或者是OTS来存储的问题。根据三类产品的存储计算成本我做了一个粗略对比如下:

5f57d83a815a615619a7e2a0d630f48112e6a31b

 

这里已经考虑通过压缩的方式存储OTS减少计价存储的情况。当然MaxCompute的计价是按照实际压缩存储之后的容量计算。MaxCompute官方文档介绍的是5:1的压缩比,而我们的数据因为本身的特点,实测可以到7~8 :1的压缩比,所以最后数据方案反倒是MaxCompute直接存储离线数据性价比最高。同时也符合数据靠近计算的原则。

经过测试使用OTS外部表作为数据载体的计算性能一般(当前MaxCompute对OTS的外部表的Map Reduce计算直觉觉得是基于OTS的分片,并且缺少分区的概念,每次都是基于全表扫描,这点可以从MaxCompute的任务详情可以观测出来)。

技术选型确定以后,剩下的是如何利用MaxCompute为业务提供可靠、稳定数据服务。这里特别需要强调的是数仓的建模、数据集成、工作运维的使用。

数据集成主要这方面主要体现MYSQL跟MaxCompute的双向同步,这个不需要特别讲,主要是设计上需要考虑到数据的重复同步的设计即可。关于工作运维则是更多地体现在对任务的运行状况的监控以及重跑的支持。

数仓的建模主要考虑的还是成本和模型的复用。首先针对海量、质量不高的底层数据进行分层建模。保证上层的业务模型只依赖中间结果。这里带来的直接效益就是计算成本的大幅下降(每每看到有些开发同事动不动就对着一个上百G的原始表做各种查询的时候,心是痛的…).其次是中间模型为系统补数带来更快的性能,毕竟因为一些业务或者数据的原因需要重跑部分报表,这个时候如果需要重新扫描原始数据的时候,首先就是费钱,非常费钱。其次就是耗时,非常耗时。

在离线统计分析的重构完成之后,系统充分利用MaxCompute的并行计算能力,并且借助其强大的函数尤其是窗口函数的支持,我们实现比较不错的分析能力,客户的一个核心部件的数据统计分析,之前一个专业的工作人员分析一个部分需要耗时一天,还容易出错。借助平台的分析能力,可以在10分钟内计算完将近1000个部件的数据分析工作。类似下面的曲线图分析每次数据波动期间的均值,之前几乎无法人工计算,即便是JAVA编码也是一个非常复杂的编码工作,通过平台的支持,系统处理得游刃有余。

42de544d32b6637f27e6c78d756223733041bbd8

一次计流水账式的总结,且当做一次经验的沉淀

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是Docker?看这一篇文章就够了

作者 | 码农的荒岛求生来源 | 程序员小灰(ID: chengxuyuanxiaohui)程序员,应该怎样理解docker?容器技术的起源假设你们公司正在秘密研发下一个“今日头条”APP,我们姑且称为明日头条,程序员自己从头到尾搭建…

基于MaxCompute 衣二三帮助客户找到合适自己的衣服

摘要:本文由衣二三CTO程异丁为大家讲解了如何基于MaxCompute构建智能化运营工具。 衣二三作为亚洲最大的共享时装平台,MaxCompute是如何帮助它解决数据提取速度慢、数据口径差异等问题呢?程异丁通过衣二三数据体系架构,从用户运营…

Nexus 3.31.1 maven 私服 搭建篇 linux

文章目录1. Nexus 3 下载2. 解压3. 目录调整4. 重命名5. 创建用户6. 调整家目录7. 指定启动用户8. 环境变量配置9. 刷新环境变量10. 修改工作目录11. 指定jdk12. 修改权限13. nexus启动14. 状态验证15. 浏览器验证16. 登录17. 初始化设置软件版本JDK1.8.0_202Nexus3.31.1Disk s…

Typora简介

Typora简介 一、Typora是什么? ​ Typora 是一款支持实时预览的 Markdown 文本编辑器。它有 OS X、Windows、Linux 三个平台的版本,并且由于仍在测试中,是完全免费的。 ​ Typora 首先是一个 Markdown 文本编辑器,它支持且仅支…

基于MaxCompute InformationSchema进行血缘关系分析

一、需求场景分析 在实际的数据平台运营管理过程中,数据表的规模往往随着更多业务数据的接入以及数据应用的建设而逐渐增长到非常大的规模,数据管理人员往往希望能够利用元数据的分析来更好地掌握不同数据表的血缘关系,从而分析出数据的上下游…

不要再被 Python 洗脑了!!

Python 作为一种解释型技术脚本语言,越来越被认可为程序员新时代的风口语言。 无论是刚入门的程序员,还是年薪百万的 BATJ 的技术大牛都无可否认:Python的应用能力是成为一名码农大神的必要项。 而作为Python初学者来讲,最大的问题…

Nexus 3.31.1 maven 私服 仓库配置篇 linux

文章目录1. 新建仓库概述2. 阿里云代理仓库3. 自己的仓库4. 自己的仓库组5. 效果图1. 新建仓库概述 总共新建3各仓库 一个是国内开源仓库,加速下载 一个是自己的仓库,用于存放自己公司的jar 一个是子类型的仓库,用于将上述两个组成一个地址 …

Struct复杂数据类型的UDF编写、兼容HIVE的GenericUDF编写

一、背景介绍: MaxCompute 2.0版本升级后,Java UDF支持的数据类型从原来的BIGINT、STRING、DOUBLE、BOOLEAN扩展了更多基本的数据类型,同时还扩展支持了ARRAY、MAP、STRUCT等复杂类型,以及Writable参数。Java UDF使用复杂数据类型…

如何跨项目工作空间访问MaxCompute资源和函数?

1、背景介绍 同一个主账号下面的两个工作空间,工作空间名称分别为 A工作空间名称:wei_wwww A工作空间子账号:mc_oss B工作空间名称:wei_mc B工作空间子账号:bigdata_wei 现在B工作空间子账号bigdata_wei需要访问A工作空间子账号mc_oss创建的U…

Nexus 3.31.1 maven 私服 仓库和IntelliJ IDEA 2021.2 实战篇 linux

文章目录一、maven配置1. 私服配置2. 替换后的配置二、IntelliJ IDEA2.1. 创建项目2.2. 指定配置2.3. 下载依赖三、nexus3 监控3.1. 查看依赖版本3.2. 版本对比3.3. aliyun 仓库地址一、maven配置 1. 私服配置 在本地的maven 配置settings.xml内容,用下面内容覆盖…

我把这篇文章给女朋友看,她终于明白什么是「数据中台」了

来源 | 智领云科技责编 | Carol封图 | CSDN 下载自视觉中国这几天,女朋友一直忙着为自己挑选情人节礼物,毕竟直男的审美她也觉得不靠谱。就在昨天,她气冲冲地跑过来问我:为什么有些平台总是推荐一些我不喜欢的东西?为什…

发光的二次元克拉克拉 满足年轻用户个性化、碎片化的文娱需求

克拉克拉(KilaKila)是国内专注二次元、主打年轻用户的娱乐互动内容社区软件。KilaKila 推出互动语音直播、短视频配音、对话小说等功能,满足当下年轻用户个性化、碎片化的文娱需求。随着业务规模增长,海量数据存储与计算的瓶颈也日…

Nexus 3.31.1 maven 私服 服务器配置篇 linux

文章目录一、以服务运行1. 编写配置2. 赋予可执行权限3. 配置自启动4. 启动nexus5. 监控状态6. 停止服务二、配置文件说明2.1. JAVA配置2.2. 自定义配置2.3. 工作/日志 目录修改三、使用nginx代理3.1. HTTP3.2. HTTPS四、其他配置4.1. 配置匿名访问4.2. 更改管理员电子邮件地址…

混合云模式助力斗鱼搭建混搭大数据架构

云栖号案例库:【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 案例背景 2019杭州云栖大会大数据企业级服务专场,由斗鱼大数据高级专家张龙…

架构师技术文档:Redis+Nginx+Spring全家桶+Dubbo精选

最近花了很长的时间去搜罗整理Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档。今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题了 直接打开文档学一学就好…

天弘基金交易数据清算从8小时缩至1.5小时 解决余额宝算力难题

天弘基金作为国内总规模最大的公募基金,阿里云MaxCompute为我们构建了企业级一站式大数据解决方案。MaxCompute对于海量数据的存储、运维、计算能力强大且安全稳定,MaxCompute服务将原本需要清算8小时的用户交易数据缩短至清算1个半小时,同时…

配置MaxCompute任务消费监控告警,避免资源过度消费

MaxCompute 按量计费资源为弹性伸缩资源,对于计算任务,按任务需求提供所需资源,对资源使用无限制,同时MaxCompute按量计费的账单为天账单,即当天消费需要第二天才出账,因此,有必要对计算任务的消…

Vue3.0 备受热捧!2020 前端开发进阶必读

你好,我是汤小洋。前华为全栈工程师,南京大学软件工程硕士,拥有11年全栈开发及内部培训分享经验。作为一名前端人,学习从不是一件容易的事,这是我一路走过来的真实感受。“只要付出,就有收获”、“只要努力…

Docker 查看日志记录

日志文件对于处理故障十分重要,对于docker容器如何查看日志呢 查看docker容器的日志用到的是docker logs这个命令: 先看下官方给的命令说明 docker logs --help–details 显示更多的信息 –f, --follow 跟踪实时日志–since string 显示自某个timestam…

Docker JFrog Artifactory 7.27.10 maven私服(仓库配置篇)

文章目录一、二、 建立远程仓库2.1. 仓库列表2.2. 仓库创建演示2.3. 阿里云仓里调整三、建立本地仓库3.1. 仓库列表3.2. 仓库创建演示四、创建虚拟库4.1. 仓库列表4.2. 仓库创建演示五、创建用户/组/权限5.1. 创建用户5.2. 创建用户组5.3. 创建权限5.4. 获取密文密码5.5. 生成配…