12 月 3 日、4日,2022 Apache IoTDB 物联网生态大会在线上圆满落幕。大会上发布 Apache IoTDB 的分布式 1.0 版本,并分享 Apache IoTDB 实现的数据管理技术与物联网场景实践案例,深入探讨了 Apache IoTDB 与物联网企业如何共建活跃生态,企业如何与开源社区紧密配合,实现共赢。
我们邀请到京东科技 IoT 技术负责人刘刚参加此次大会,并做主题演讲——《Apache IoTDB 在京东万物互联场景中的应用》。以下为内容全文。
大家好,我是来自京东科技 IoT 团队的刘刚。今天给大家讲的这个主题是 《Apache IoTDB 在京东万物互联场景中的应用》。京东科技的话,主要是京东集团是对外去技术服务的主要单位,我也是京东科技 IoT 团队技术的负责人。今天讲的这个课题主要分五部分。
第一部分我们会简单介绍一下京东的物联场景,后面介绍一下在这个场景中,我们是用什么样的技术架构来解决这些问题的。那么这里面用到了时序数据库,并且应用了 Apache IoTDB。最后我们会介绍一下这块的解决方案和应用的成果。最后部分是总结和展望。
01 京东物联场景介绍
那我们开始第一部分,京东物联场景的介绍。京东做物联网最开始是从消费这个领域开始的,主要是在做数字家庭,主要是解决智能家居设备的连接和数据采集的问题。所以,京东积累到现在已经有亿级的设备连接量,在家居品类的跨品牌、跨品类的泛在互联上来讲,是属于行业领先的地位。
那么,后面京东也把这部分能力扩充到更多的领域,来服务外部的客户,包括城市的数字化建设、新的分布式的可再生能源以及工业互联的方向。京东也是今年有幸成为国家工业互联网双跨平台之一,也是希望借助京东的技术能力,为我们国家打造新型工业化作出自己的贡献。
简单来讲,京东的物联解决方案主要是在四个大的板块,每一块刚才介绍过:工业互联网,也是融合了京东的云、物联网还有大数据和AI区块链等先进的能力,把京东在整个产业链、供应链方面的优势赋能给行业。在能源双碳这个领域,主要也是基于现在整个分布式的可再生的能源,它由于新的趋势的发生,所以它在技术上来讲带来很多挑战,可能需要就是用基于数字化、云原生技术来重构数字化的底座。家居方向前面已经介绍过了。另外一块,也是结合京东在物流,包括金融方面的一些积累,我们也是在给仓库提供数字化的解决方案,从而来实现包括货物或者仓单的数字化,以及构建在这个上面的数字化的业务创新。这是京东整体的四个解决方案的方向。
那么,从场景上来讲的话,我们一般会认为物联网来讲,它是一个典型的“云、边、端”的结构。那么从分层的角度来讲,我们会认为它里面有一个技术的层面,也就是建立这个 T-PaaS 层。那么在这个之上,这个 T-PaaS 是提供了一个通用的平台,那么对于业务平台层,可能它就会针对不同的解决方案的方向,或者业务的方向,来提供对应的业务平台的能力,然后在此基础之上,再构建相应的应用。那么从最底下来讲,就可以连接泛在互联,连接各种类型的互联设备或者智能设备。
02 京东物联技术架构
好,上面就介绍了我们整个主要解决的问题的范畴。下面我们会介绍一下技术的架构,包括在这里面可能用到的时序数据处理的一些情况。
京东的业务架构,刚才讲过了,它是基于京东自己十几年以来在整个领域里面的一些积累,不管是零售、物流或者是工业品的采购。那么基于这些积累,然后把这些能力通过云原生的技术,打造成了一个通用的平台层。这里面包含刚才前面提到的物联网的平台、大数据的平台、AI示范平台,包括区块链的平台以及经过验证过的一整套非常丰富的安全运维的机制,在上层的话支撑整个不同的业务。
那么,京东的物联网平台,它有几个重要的特点。第一个就是前面讲的,从智能家居、数字家庭这个领域开始,京东在解决的就是一个泛在互联的问题,就是更多地怎么去打通这些设备数据连接的孤岛,把它们变成一个更大的连接的网络。所以在这方面,就是会去做一些模型化、通用化以及标准化的事情,这样尽可能的去更广泛的连接更多的设备和服务。这里面就会做很多设备的适配以及翻译。通俗来说,这里面会有一个普通话的层级,在底下会去翻译各种方言,对应用层来讲,它就可以实现非常统一的应用的接口。在这个基础之上,我们基于比较大的连接能力,也是不断的去优化单设备连接的成本。
连接规模刚刚已经讲过了。另外一块:视频,这个是最近不管是在安防或者安全,各种领域都有非常多的使用,所以这里面有一整套的物联视频计算的框架。这个是包含“云、边、端”一体的,尤其视频的数据量会比较大,所以很多会是在边缘上去做本地化的处理,所以这里面就会涉及到边缘的智能。这个计算搬到这个数据发生的地方,而不是把这个数据都统一弄到云上,去做成一个中心化的处理。边缘计算,包括基于视觉的边缘智能也是一个比较重要的方向和特点。
整体来讲,大家都在基于物联网的技术,去构建整个数字化的底座。那怎么能去更长期地降低这块的维护成本,包括各个客户能够自己去开发自己的业务,所以这里面就需要基于低代码或者无代码的技术来提供应用适能的能力。安全上来讲,一直是物联领域的、或者工业界的一个很重大的挑战,所以这里面一直是我们需要持续关注和打造的能力。
刚才讲了整个平台的几个主要的特点,这里面就是基于前面的内容,有一个更细化的、到组件级的架构图。前面讲过,这个里面会分技术平台层和业务平台层,来完成对整个场景解决方案的能力的支撑。
边缘就是,这块刚才前面已经讲到过了,它会有很多设备。那么这里面为了能够在本地实现数据的处理和自治,它需要有一些事件的总线和数据的总线,这样保证在本地化的设备尽可能地能实现即插即用。大部分的数据处理尽可能地在本地完成,只有一些高度聚合的、或者结构化的数据,它才会去往更中心化的云上的节点去传播。
基于以上的这个技术架构,我们在每个领域里面都有去解决这个问题。比如说像智能家居或者数字家庭,这里面就会进一步把屋内和屋外的设备都连通起来,可以去采集很多智能化的设备每时每刻的状态和属性,实现在场景里面的互联互通,从而可以构建一些设备之间的联动,或者场景这里面有一些任务,或者有一些引擎,这样可以达到更加智能化的效果。
数字仓库主要解决的问题是把整个仓库的底层,包括货物,还有就是人车的进出都进行数字化,这样可以实现对整个仓储有一个非常好的实时的感知,并且借助区块链的技术,它可以跟上下游,不管是物流、运输还有贸易、交易整个这些环节全打通,这样可以提供一个可信的数字化交易的基础。那么在这个基础之上,也是服务了很多的客户。这个方向也是大家最近发展比较快或者密切关注的领域。
碳计量这个相对来讲,解决方案比较新一点。整个国家或者世界的趋势是,我们在关注怎么去有更可持续的发展能力,国家也提出来了“双碳”的战略。这种情况下怎么去比较好的去计量每个企业的生产过程,不管是范围一、范围二还是范围三,这个过程中间到底做了多少碳排放,对这些能耗或者碳排放到底怎么来去感知,并且经过不同的可再生的能源的使用,怎么去做好更好的算法的调度和测量,这些都是基于物联网的底层的技术来去完成这一整套的能力,所以这里面也是会涉及到很多时序数据的采集。
03 时序数据和 Apache IoTDB
以上,介绍了京东的整个解决的问题的领域,以及技术的架构,那么下面我们就在这里面,对时序数据的使用以及我们应用 Apache IoTDB 的一些经验做一些技术上的分享。
那么,从前面大家已经看到很多这个领域的问题,我们总结这里面对于物联的时序数据的话,它有几个基本的特征。那么最重要的,包括在技术上大家都是知道,它是写多读少,不同于以前,我们在很多领域都用关系型数据库来处理,那些场景都是写少读多的。那么写多读少,这是时序数据的一个很重要的特征。
那么从整个时序数据在物联领域的应用来看的话,它还有另外的几个特征,比如说它的采集源是相对单一稳定的,也就是说我们一般固定的是从一个传感器上,从这个设备上去感知它的这个数据,它会产生连续的时序数据,那么这个采集源的单一稳定就给我们在技术上来讲,去给它做优化奠定了很好的前提和基础。
另外一块的话,时序数据的采集规模一般非常大,取决于我们的采集频率,以及业务上或者从应用上来讲,对这个时序数据感知的颗粒度的需要。所以它不管怎么样,这里面都会产生巨大的数据规模,一般来讲这个可能是我们以前连接人产生的数据规模的好几个数量级。
为了要达到应用的效果,在业务层产生价值,所以它很多时候是要做实时的聚合的,所以这里面不光只是说新产生的数据,还要结合历史的数据,跟实时数据进行聚合。这里面从最开始最源头,采集源采集的数据,它结构化或者语义相对会比较弱,所以它在不断的过程中间,还需要进行聚合其他源的数据,来产生更强的语义,能产生可感知或者可解读的,包括最后智能化的,它可以用于可调控的,那它就需要达到更高的语义。所以这里面需要做到很多聚合,那么在时间效率上来讲的话,它需要很高的实时性。
前面讲了另外一个特点,大家能看到,不管是数字家庭、数字能源工业还是数字仓库、数字城市的领域,现在一个很大的趋势就是,我们不是搬数据,而是把计算搬到数据源产生的地方去,尽可能的在本地发生计算。在本地做完计算,某种意义上来讲、趋势上来讲,它会需要实现某种本地的自治,这样就会对时序数据的处理有一些新的要求。
那么,从上面的五个大的特征,我们也总结了时序数据处理的几个大的目标。因为它是写多读少的,所以它就需要有一个非常高并发、高吞吐的写入;数据规模比较大,那就是说我们在技术上来讲,需要有一些更低成本、更高效的处理;其他还有一些特点,比如说它要做实时的,那就是说,我们原则上来讲尽量需要去做流式的处理,然后不要把数据不必要的搬来搬去;它需要做实时的聚合查询;那么整个这一套,它如果需要去做到比较大范围的应用的话,它需要是一个分布式高可用的系统。
以上就是时序数据库,它在处理解决我们前面讲的一些常见的物联场景或者解决方案里面,它需要具备的基本的能力。
我们看一下在这几个角度来讲,按照典型的云边端的,前面讲过的架构,它在每个环节上其实来讲都是会有非常重要的挑战,但都有各自的不同。那么从端上来讲的话,它是因为要部署在终端上,那么某种意义上来讲,这个地方应该是需要更低结构化,那么就会更灵活,所以这样它可以实现可插拔式的接入。所以这里面它应该尽可能是弱 Schema 的,这样它可以解决采集端的异构的复杂度。这里面可能有不同的设备类型,不同的通信方式,有线的或者无线的,不同的连接协议,尤其现在已有的工业协议多达几百种之多。
那么在边上,它可能就会需要具备一定的处理能力,而不仅仅简单只是做一个存储或者转发。所以它需要有边缘计算的框架,通过去中心化的分布式的架构,来实现比较方便便捷的远程的运维。那么安全性上来讲,也是会有比较大的挑战。它不像以前集中式的数据处理,它整个是得到比较好的完整的保护的,这种是分散式的,去中心化的,那怎么去保证整个数据或者隐私的安全,这是一个非常重要的挑战。
在云端的话,更重要的是说,这里面要去做更强的结构化的理解。现在大家不管是说数据仓库、数据库还是库仓一体,那它是需要提供一个统一的数据的应用的接口,给到云上更丰富的应用能力,这里面包含了存量数据的融合、语义的增强、以及怎么去更友好的给算法来提供原料。这里面就介绍了整个时序数据处理的挑战。
在物联平台里面,时序数据来讲,它其实给物联平台提供了核心的实时感知的能力,那么它主要处理的数据都是时序的数据。那物联平台这里面可能更多的,它会存储设备级的很多,从某种意义上来讲可以叫它元数据,或者设备模型的数据。并且也需要通过这个数据平台,再去聚合更多的一些数据源,这样做到更强的语义和更结构化的理解。所以这是时序数据在整个工业互联里面的一些核心重要的作用。
那么,为什么京东对整个 Apache IoTDB 非常关注,也愿意在自己的一些应用场景里面去使用?这个跟 Apache IoTDB 的很重要的一些特点是密切相关的。
那么首要的一点就是 Apache IoTDB 是一个很开放的系统架构,这样比较容易去使用,它能支持海量的数据存储。刚才讲到了,在 Apache IoTDB 底层是用了 TsFile,这是一个非常低 Schema 的,或者你可以认为比较容易在端侧实现即插即用的效果的。Apache IoTDB 正如它的名字所言,它是为物联网去做的,有专属的模型,所以它比较能支持像这种树状的结构,有单节点就能管理百万的设备或者千万条的时间序列,所以它这样会更灵活。
那么因为它底层是基于文件的,所以在边上的话它是可以跑一个小型版 standalone 的版本,这样可以实现自治。那么不管是端跟边,或者边跟云这边数据的同步,如果基于文件这种数据格式的话,基本上来讲这个数据同步的逻辑也会相对比较简单。
另外一块,Apache IoTDB 在数据处理上有很高的压缩比,主要是在写入性能上去做优化,包括通过高效的设计存储的引擎,用 LSM-Tree 来实现这一点。在查询上也做了类似的优化,可以保证整个在做聚合,包括一些物联网场景常需要的一些降采样有特殊的支持。这样保证了有很好的写入能力的同时,也会有不错的按照适用的查询的能力。
另外一块 Apache 整个生态是比较丰富的,IoTDB 在这方面跟 Apache 的其他的很多相关的一些系统,比如像 Flink、Spark,还有其他的一些数据监控的一些系统, Grafana 这些,都有很好的集成,所以能大幅地拓展整个方案的丰富性。
以上都是 Apache IoTDB 的,它就是专门为物联网这个场景打造的一个时序数据的数据库。
04 京东物联解决方案和应用
第四部分,给大家介绍一下我们基于这些思考,包括应用的一些成果。
那么首先来看数字能源的领域,数字能源领域的话,它主要处理的设备,刚才前面讲过了,它都是分散式的。那么现在比如说,分布式的光伏以及风机,那么它很多都是在,比如像乡村的光伏都是在乡村居民的屋顶上的,对于城市里面,园区屋顶上或者一些建筑屋顶上,它要铺这个光或者小型的风机或者其他的储能设备,那这些都是分散在各处的。甚至包括一些用能设备,比如说充电桩这些,或者一些电池,这些都是分散在各处的。
所以这里面就需要通过边缘的一些节点,在这里面实现对这些数据的采集。这里面很多都是一些时序的数据,比如说裂变器、发电的情况,像它目前的实际的一些工作的运营状况,那么这些数据都是需要做到实时化的采集。同时在边缘侧,也是需要去完成、做一些聚合的计算,这样方便有可能在源和储做一些本地化的调度和策略,来实现本地电循环或者能量循环的平衡。这是在数字能源里面应用的案例。
那么在数字仓库里面,这里面也是需要做到实时的感知。以前面对仓储在没有数字化之前,大家如果要去做大宗商品的质押贷款,或者把它证券化的话,是需要派人去仓库里面巡查。有了数字化的技术之后,它就可以做到实时 24 小时的,随便的去调取。并且可以在边缘上去跑一些算法,这样可以对一些异常情况去报警,或者进行监控。那么通过把这个时序数据和更多的数据打通,形成一个长的数字链,那在这块造假的成本很高,使得在这个基础之上,基于一些数字化的舱单进行数字化的交易就有了依据,也能开展更丰富的数字化的业务。
水电气场景的话,这个大家比较容易理解,就是家里面都会有水表、电表、气表,这个就是一个典型的时序的数据。那么经常可能会需要做到一些水电气使用量的统计,然后这里面要去做一些聚合,包括它要跟其他的设备产生联动,这里面有一些丰富的应用场景。这里面也是会需要去根据不同的级别,去用存储的技术,给它进行分级的管理。
这些就介绍了我们在实际中,应用时序数据来解决刚才前面介绍的几个大的核心的方面,不管是数字家庭、数字城市、工业互联网还是数字的能源这些地方的一些应用成果。
05 总结和展望
那么最后,我们也就这些做一些总结和展望。
从长期来看的话,时序数据库只是一个早期,那么不管是国内还是国外,其实这方面都发展非常快,Apache IoTDB 可以算这里面的佼佼者。那么从更长期来看的话,这里面还有很多问题是待解决的。我们认为未来作为一个时序数据库,要发展得比较好的话,那它需要具备的几个特点。
第一个肯定是云原生,因为前面讲过了,我们需要做到分布式的高可用。云原生已经是大家在其他数字化领域里面使用过的、验证的,它的整个弹性能力是比较好的,可以实现非常高效的部署和运维,从长期来讲降低大家使用的数字化的成本,所以这是第一条。
另外一条就是,时序数据肯定也需要跟关系型的数据库,因为它要产生更丰富的应用的价值,不仅仅只是单纯的对物理世界、物理量的感知,它需要更结构化的一些理解,那它就需要跟关系型数据库或者 key-value 的数据库,要做一些深度的融合,可能会要用到现在大家经常谈到的隐私计算、联邦学习一些框架。这样来保障形成一个相对统一的数据化的能力,能给更上层的应用提供标准化的接口。这是第二点,讲的是多源融合。
第三条的话,我们对整个处理的时效性要求是非常高的,所以它就要做到尽可能的实时的、流式的处理。这个过程中间,从技术上来讲还能大幅地减少读写放大的因子,从而能更高效的、更经济的来为上层数字化的应用来提供服务。
分布式高可用刚才我们讲了,不管在工业的应用领域,还是其他一些领域,这些数据都是需要具备很好的可靠性和高可用性。这样来保障我们基于上层应用的决策的基础,它不能出现数据质量的问题或者掉链子。
大家在目前的整体发展,不管是数字化的系统,或者数据库,可观测性都是大家很密切关注的一个点。这也是在之前,我们整体国内的一些软件做的相对来讲,还不够完善的地方。在这个方面,我相信未来这里面还有很长的路可以走,那么怎么去更好的感知这个软件本身,那也是一个基本的能力。
所以,在这个基础之上,基于这几点思考,我们京东在这方面就是有一个相对自有的看法,就是说我们期望把整个数据处理的四个环节:采集、存储、计算和算法应用,这几个希望一体化来考量。这样就是以应用价值为牵引,避免做不必要的投入或者建设,能大幅地降低这块的成本,从而提升、加快我们在上层做数字化应用的创新的节奏。
这里面就是再强调一下前面讲的可观测性,比如可能怎么去更好的对这个时序数据进行管理,不管是用户权限、对它分组、或者它任务的管理、多级的数据管理,以及做到更可视化的、更傻瓜式的运维,能知道它系统每个重要的状况的信息,并且有一些指标的统计。那么,在遇到一些问题的时候,想知道整个数据链路血脉的质量的时候,或者要去解决一些数据的问题的时候,它也要有一个非常强大的分析追踪的引擎,能够快速的去定位解决问题,降低长期运维维护的成本。
所以,如果谈到经济性的话,目前因为对于时序数据库来讲,它更多的是写多读少,从应用层来讲基本主要是去读取,所以我们如果讨论把采、存、算、用一体化的话,那么更多的就会去看它单位读取的经济的效果。那么我们就会以应用的角度来讲,倒过来去看这地方应该怎么来去优化它的采集的技术、怎么去优化它存储的技术、怎么去优化它计算的技术,并且这里面去做一些实时的聚合,并且去做尽可能流式的处理,就是前面讲到的,大幅地降低这里面读写放大的因素。相应这样做下来,我们能把物联时序数据的应用更快的推到一个更高速发展、更快速发展的一个节奏上去。
所以,以上就介绍了整个京东解决的一些方案,包括在这些方案里面技术的架构,以及我们是如何看待时序数据库的,以及应用 Apache IoTDB 在一些解决的应用的效果和成果。最后也给大家讲了整个我们对未来时序数据库的展望。这次的整体的分享就到这里,谢谢大家。
更多内容推荐:
• 了解更多 IoTDB 应用案例
• 回顾 IoTDB 2022 大会全内容