MatrixOne从入门到实践——物联网平台架构升级公司介绍
西安天能软件科技有限责任公司,成立于2018年,公司自成立起集中力量精心打造物联网平台,拥有集自主研发、终端生产、销售、服务一体的物联网平台及服务团队,已为国内外300多家物联网企业、千万级物联网设备提供合作支持。
公司在物联网领域拥有多项设备接入、远程管理及大数据分析等研发技术专利,用行业领先的物联网服务经验为企业注入了全新的生产力。
智能家居上云:针对消费级设备智能化特点,Skyable为空净新风、净水机、厨卫电器、白色大家电、可穿戴设备、血糖仪、体脂秤、智能锁等消费级智能产品提供设备连接、数据分析、设备管理、智能售后、APP开发、用户画像分析等服务,方便厂商快速实现产品智能化。
工业物联网:通过工业IOT平台建设,将海量工业设备通过智能工业网关接入IOT平台,对海量工业设备运行数据及状态进行集中实时上报、分析、监测、跟踪,灵活设置设备参数,达到设备故障提前预知,并提前主动对设备进行状态调整或检修,减少设备故障造成的财产损失也减少强迫停机的次数,提升设备的使用寿命。
行业背景
物联网作为一个提出 20 多年的概念,在技术上已经获得了各项突破性进展,包括感知技术促进智能设备获取数据,通信技术负责传输数据,大数据技术使企业开始向往海量数据存储与处理的能力,以及近年引起广泛讨论的 AIoT,让人们对人工智能在物联网的应用充满期待。
以客户为中心——这一理念的正确性在不同商业领域得到验证,尤其在产业链复杂、市场分散化、碎片化的物联网行业,企业更应该关注目标客户的痛点与需求,选择合适的路径进行商业化运作。但物联网前端客户的需求一向是多样化的,在很多细节上都会有不同,如果企业做服务时每次都为客户的定制化需求大费周章做开发,实际很容易拖累整个公司业务的高效运行。
平台介绍
Skyable IOT平台
支持海量设备接入,平台提供安全稳定的设备通信信道,灵活兼容MQTT、CoAP、TCP、UDP、REST/HTTP等多种物联网常用传输协议,完成千万量级设备的连接管理、数据计算和存储等高并发处理。
平台提供适用于APP、Web、云服务开发的API和SDK,通过分布式集群调度系统自动优化计算资源的使用,客户只需关注业务逻辑,即可快速实现高性能、高可用、稳定可靠的应用。
平台提供丰富的通用功能组件库,减少“重复造轮子”的工作,客户可以快速组合出适用于自己业务场景的应用。
物联网设备攻击日益频繁的今天,平台构建了覆盖设备端、云端、客户端完备的安全体系,为客户的设备和数据安全性提供了有力支撑。
平台(公有云)目前已部署了包括中国、东南亚、欧洲、北美等多地域的服务集群,遍布全球核心商业价值圈,帮助客户更好的拓展国际化业务。
业务背景
平台对于设备基础数据、状态数据以及少量的应用数据会存放在Mysql中。对于大量的历史数据平台会将数据写入MongoDB数据库中进行存储。另外会通过数据采集模块异步的将数据写入MongoDB中提供给分析平台做后续的分析处理。针对日志数据,会通过自定义日志解析模块写入Elasticsearch中进行搜索查询。
平台现状
目前平台主要分了以下几个层面:
租户设备
租户设备包括边缘网关和直连设备。边缘网关子设备如PLC设备、工业电脑、工业服务器等设备,将数据上报网关与平台交互。直连设备可直接上报数据与平台进行交互。
接入层
设备接入层包括边缘网关及平台接入集群,边缘网关通过平台提供的设备端SDK,将数据上报的平台接入集群,支持MQTT、HTTP、CoAP等传输协议。SDK按照平台的通讯协议标准,在设备的数据协议的基础上进行了二次封装,包括平台验证等。
解析层
用户自定义脚本解析是由用户创建解析规则脚本,上传到平台针对上报数据进行解析,解析后的数据推送到第三方业务平台。
存储层
存储层负责平台基础数据存储和设备业务数据存储,平台基础数据包括产品基础数据、属性数据、设备基础数据、企业基础数据、用户基础数据、权限基础数据等,基础数据采用MySQL数据库存储。设备业务数据存储分为实时数据、历史数据和平台日志,实时数据和历史数据采用MongoDB数据库,平台日志采用ES数据库。
应用层
应用层负责展示、控制,包括产品管理、设备管理、计量管理、企业管理、云端组件、云端服务等。
在核心的计算存储层,我们原有的架构引入的多种数据库来解决不同的业务场景,如:
- mysql
- Redis
- MongoDB
- kafka集群
- elasticsearch集群
目前存在以下痛点:
数据冗余度高
多个组件之间数据都有多副本,数据冗余成本高
架构复杂,多个组件之间的数据耦合性高
组件与组件之间存在数据的反复流向,架构复杂,耦合性较高
运维成本高,私有云部署成本高
部分客户部署环境不会允许太高的资源消耗,目前架构部署比较吃硬件成本
ap性能不足
基于MongoDB的ap,在数据量大了之后,ap性能不佳
因此,我们想寻找一个能解决HTAP,并还能解决部分流式计算场景的数据库来承担我们平台的核心存储计算功能,简化我们的平台架构,提高硬件资源的利用率。减少我们的开发和硬件成本。
通过调研对比业内几家HTAP的产品,我们最终选择了一家新兴的数据库产品:MatrixOne。由于该产品目前出于打磨阶段,我们也是现在小部分业务场景进行了部分业务替代,进行方案平台的逐步升级。
选择MatrixOne的主要原因有以下几点:
优异的云原生系统架构
在IOT场景,有许多边缘云的场景,需要数据库能够面对复杂多变的存储介质和数据协议,MatrixOne天生云原生的架构,支持TP、AP双模式,能够更好的应对这一业务场景。
GO开源的源代码
团队中有很多GO语言开发者,基于MatrixOne开源的源代码,我们能更好的利用MatrixOne的特性
出色的AP性能
我们内部在对比了tpch的性能测试后,由于业务场景需要,我们之前使用的是MongoDB作为我们的AP场景,MySQL做为TP场景,由于设备量逐渐增大,上报数据量大,MongoDB和MySQL已无法满足AP、TP场景的性能要求,而MatrixOne即支持了TP,AP的性能表现还十分的优异,且AP业务可以和TP共用同一套框架。
平台改造
目前初步改造主要是统一TP和AP的场景,即将原来的MySQL和MongoDB更换为MatrixOne。而在原有的日志解析的ES集群,期望MatrixOne在具备流式计算的功能之后,将整个数据解析层统一为MatrixOne,进而整个核心数据存储计算基本全由MatrixOne对外提供服务。
下图为我们平台改造后的部分架构调整:
业务提升
成本优化
我们在测试环境充分测试后,逐步使用新的平台架构,替换了部分客户的私有云物联网平台。最明显的提升在于硬件资源得到了充分的利用。部分物联网客户平台数据量并不是很大(数十亿的数据总量),因而原有的架构 在ap场景会存在部分的资源浪费。在使用新的架构之后,我们相比较之前的架构,可以使用原来AP场景下MongoDB空闲时的硬件资源,来解决所有的场景问题,原有的架构需要大概5台低配 (16C + 32G ) + 3台高配 (64C + 128G)的服务器资源,改造后,我们只需要3台高配的硬件资源即可,节省了大概5台的硬件资源成本。并且减少了系统之间的复杂度和数据的重复冗余,业务开发人员也只需要针对同一个核心数据库进行业务编码。
查询优化
针对大数据量的场景下,相比较原有的MongoDB查询速度,部分复杂查询分钟级别甚至更久的查询速度,MatrixOne能够优化至秒级别的响应,同时在测试环境下,我们对数十亿级别的关联查询,MatrixOne相比较MongoDB表现的更加优异。
总结
在初步尝鲜了MatrixOne之后,目前MatrixOne还存在一些问题,但是得益于优异的架构设计,和社区快速的反馈,我相信未来MatrixOne产品会越来越好,同时目前基于我们平台,对于MatrixOne急需支持的有以下几点:
流式计算的支持
要统一我们整个数据存储计算,还需要目前将整个流式计算链路解放出来,目前我们还是使用Kafka + MongoDB的解决方案,这一块的资源消耗较为严重,希望MatrixOne 可以先行提供流式数据接入的内嵌插件,替换我们目前的解决方案,完全去掉MongoDB。同时更希望,MatrixOne能够集成完整的流式计算,不依赖于中间件,去掉Kafka集群和zk集群,进一步减少系统的复杂度。
分布式的支持
目前0.5.1的版本还不支持完全的分布式,0.6的版本会支持,我们希望来验证一些更大数据集的业务场景。
机器学习的支持
目前我们分析平台的机器学习还需要集成传统的spark 框架,希望MatrixOne未来能够支持机器学习的框架,并且能够快速发布订阅机器学习的模型。
更丰富的数据类型导入支持
目前我们数据从统一gateway出口的数据为json,进入MatrixOne还需要人为进行一次解析,我们希望MatrixOne能够支持更加丰富的数据接入模式,来应对物联网场景复杂的数据源。
丰富的公有云平台支持
目前我们有众多的大客户使用的是公有云服务体系,我们希望MatrixOne能够上线更多的公有云市场,避免我们目前部署还需要使用裸金属服务器,同时享受云的优异特性。
未来展望
期望未来MatrixOne能够让我们平台进化为如下架构:
HSTAP一体
- 设备端出来的原始二进制数据能够直接通过各种协议,统一入口,进入到MatrixOne的流式引擎中
- 超大数据规模场景下优异的HSTAP性能,满足大数据量下的实时写入,更新,查询的场景,优化缓存场景。。
- 能够直接通过MatrixOne内部的多表延迟物化视图、UDF等特性,通过SQL在线解析原始数据,并且落地到TP表或者AP表
- 所有的业务系统 由MatrixOne提供统一服务出口,提供业务服务
- MatrixOne内置机器学习框架,可以在平台上集成多种不同语言的模型,进行机器学习SQL化开发