本文由 Thomas Goldschmidt、Anton Jansen、Heiko Koziolek、Jens Doppelhamer 和 Hongyu Pei Breivold 共同撰写,这些作者隶属于 ABB Corporate Research,研究机构分别位于德国的 Ladenburg 和瑞典的 Västerås。本研究发表于 2014 年的 IEEE International Conference on Cloud Computing。
本研究的学术领域属于 工业控制与云计算技术的结合应用。随着现代工业控制系统的扩大和数据需求的上升,传统的工业监控系统主要依赖于本地化的、不具备水平可扩展性(horizontal scalability)的 IT 基础设施。例如,这些系统通常基于固定数量的服务器运行,并无法适应数据规模的快速增长。然而,云计算技术的出现提供了一个可能的解决方案,有可能通过远程计算实现更高的扩展性且降低 IT 成本。
然而,尽管云技术在企业级应用中已经得到了广泛的采用,其在工业领域的成熟度、响应能力和鲁棒性(robustness)仍未被深入研究。基于此背景,本文提出了一个 概念性架构(conceptual architecture),用于设计云原生(cloud-native)的工业监控系统。本研究的目标在于评估云原生时序数据库(time-series database)在工业监控场景下的可扩展性和鲁棒性,并使用三个开源数据库(OpenTSDB、KairosDB 和 Databus)进行对比和基准测试。
作者设计了一个基于云的工业监控系统架构,该架构主要针对 ISA-95 标准的第 2 和第 3 层活动(监控物理过程与制造执行系统)。该架构的核心模块包括:
该架构还支持多租户环境的大规模云系统,并通过分布式 NoSQL 数据库(如 Cassandra 和 HBase)实现高扩展性。
测试重点聚焦于时序数据库的 可扩展性 和 鲁棒性,从以下五个假设出发: 1. 时序数据库在云上的性能应与集群节点数量呈线性扩展。 2. 能够充分支持工业负载。 3. 可扩展性与存储数据的类型无关,只受数据量影响。 4. 能容忍最多两台实例崩溃的情况下继续稳定运行。 5. 读写性能独立,不会因“邻居效应”导致干扰。
作者设计了两个工业负载场景进行测试: 1. 相量测量单元(PMU):用于电力系统的同步波形采集。 2. 智能电表(Smart Meter):用于采集大量住宅能耗数据。
每种负载场景的测试分为写入负载、读取负载及读写混合负载三类实验。例如,在 PMU 负载下,每个 PMU 每秒产生 750 条数据,系统的最大容量定义为请求的平均延迟超过 1000ms 时。
为了确保实验性能的准确性,作者在 AWS 云平台上搭建了测试环境,所有实验均借助 Amazon EC2 的虚拟服务器完成。采用 24 节点和 36 节点的集群配置,每个节点运行时序数据库组件对应的底层 NoSQL 数据库(HBase 或 Cassandra)。同时使用了 Netflix 的 Priam 和 Apache Whirr 工具快速部署和配置集群。
实验中,作者逐步增加生成虚拟用户的负载,直到数据库达到极限容量为止。为了减少缓存效应的干扰,读取测试随机选取 15 小时数据存储中的时间段。
OpenTSDB 的测试过程表现出严重的不稳定性,多次结果无法复现,且在负载较高时,其底层的 HBase 数据库经常因内存不足而崩溃。具体问题包括: - 内存不足导致 HBase 节点无法正常工作,而 OpenTSDB 未能向客户端返回有效的错误警告。 - 实验中可稳定支持的 PMU 数量仅为 50 台(每秒 48.4 次请求)。
KairosDB 的性能表现总体优秀,具体包括: - 在 PMU 场景下,集群规模与性能几乎线性扩展。例如,36 节点集群可稳定支持 598 台 PMU,每秒请求量达 538。 - 在智能电表负载下,36 节点集群可支持约 600 万个电表负载,表现接近城市级别的需求。 - KairosDB 对集群中单个节点故障有一定容忍度,因其基于 Cassandra 的三重副本设计,可在单点故障下继续提供服务。
从资源利用角度看,该数据库在大多数场景中表现为受 CPU 限制,单节点的磁盘和 I/O 带宽消耗均低。
Databus 在测试中表现的鲁棒性相对较弱,其主要问题包括: - 在 PMU 写入测试中,Databus 能支持的 PMU 数量显著低于 KairosDB(最高仅 65 台)。 - Databus 对于 HTTP 连接的限制使其在面对突发性负载时表现欠佳,系统容易进入崩溃状态。 - 在智能电表场景下,其性能较 KairosDB 低一个数量级。
尽管如此,Databus 的 CPU 利用率分布相对平滑,但性能仍显著低于 KairosDB。
本研究系统性地评估了云原生时序数据库在工业监控场景下的性能,得出了以下重要结论: 1. 线性扩展性:KairosDB 表现出接近线性扩展的性能,以支持大规模工业应用。 2. 工业负载支持:KairosDB 可处理复杂工业场景的高容量需求,例如满足城市规模下智能电表的监控需求。 3. 鲁棒性与读写独立性:KairosDB 在节点故障情况下具备良好的恢复能力,并且读写操作互不干扰。 4. 理论依据:实验数据验证了实验初始的五项假设,尤其是 KairosDB 在鲁棒性和扩展性上的可靠性。
作为首次针对工业应用场景的基准测试,这项研究填补了时序数据库在工业监控中的性能数据空白,未来还可以拓展到多区域部署及其他组件评估。