分享自:

分布式时序数据库的存储架构设计及实现方法

期刊:冶金自动化

《冶金自动化》中2018年第S2期的一篇文章——《一种分布式时序数据库的存储架构设计及实现方法》,作者为鲍远松、董文生,所属机构为上海宝信软件股份有限公司研究开发部(上海)。文章探讨了分布式时序数据库的存储架构设计及实现方法,目标是通过分布式系统解决工业时序大数据存储中的诸多问题。以下是基于该文章的学术总结。


研究背景及动机

随着工业4.0的持续推进,工业设备的智能化与企业的信息化改造带来了时序数据的爆发性增长。然而,传统时序数据库未能满足大数据时代的需求,主要在以下几个方面存在不足:

  1. 存储架构限制: 传统的时序数据库多为单机架构,单点故障可能导致整个系统服务不可用。
  2. 数据安全性: 缺乏多副本存储机制,数据安全性需依赖用户的备份方案,因此无法在硬件故障(如磁盘损坏)情况下提供可靠的数据保护。
  3. 扩展性与灵活性: 存储性能和容量无法动态扩展,高频写入环境中系统可能成为瓶颈。
  4. 查询能力局限性: 检索功能仅支持基于时间戳的查询,而对基于值范围或模糊查询的支持较弱。
  5. 计算能力受限: 仅提供有限的计算能力,无法充分利用分布式计算的优势进行大规模数据分析。

基于以上问题,作者提出设计一个以分布式技术为基础,满足高性能、高可靠性、高扩展性和灵活性的大规模时序数据库的解决方案。


研究目标

该研究旨在构建一个开放的分布式时序数据库存储架构,结合分布式流式计算和存储技术,实现以下目标: - 支持高频时序数据的存储; - 动态扩展和高可靠性; - 灵活的查询与检索能力; - 提供对数据的计算、分析能力,挖掘数据价值。


分布式时序数据库的体系结构

总体架构设计

该系统由以下五大核心模块组成: 1. 分布式数据网关(Distributed Data Gateway): 由负载均衡服务(LB)和数据网关节点(GW)组成。网关用于数据接收与查询代理,采用无状态设计模式,确保单个节点故障不影响系统的运行。

  1. 分布式消息队列(Distributed Message Queue): 基于Kafka实现,用于在多个Broker节点之间完成数据的发布和订阅。该机制需满足高吞吐量、高可靠性及持久化要求,以实现可靠的数据传输。

  2. 分布式流式计算服务(Distributed Stream Processing Service): 基于实时流式计算框架Storm,提供三项服务:

    • 数据变化通知(Notify Bolt);
    • 内存快照存储(Memstore Bolt);
    • 持久化存储(Persistent Bolt)。 设计满足动态扩展性和高可用性,任何节点故障不会影响数据处理。
  3. 分布式缓存服务(Distributed Cache Service): 基于Redis(NoSQL数据库)设计,缓存最新的实时数据值,为系统提供高效的实时数据检索。

  4. 分布式存储服务(Distributed Storage Service): 基于HBase和Solr(分布式搜索引擎),实现海量数据的持久化存储与快速查询,支持大容量、高可靠性,以及数据副本的安全性与动态扩展需求。


数据存储架构

缓存服务:

Redis使用hset键值对存储时序数据,包括点名(tag)、值(value)、时间戳(timestamp)及数据质量(quality)。这种方式可以快速实现实时查询。

持久化服务:

HBase采用无模式稀疏设计,将不同的点名数据放置在一行,通过时间作为主键,方便进行时间范围内的历史数据检索,同时支持后续的基于时间序列的分析。


时序数据处理流程

存储流程:

  1. 初始化阶段,网关创建两个Kafka topic:一个用于数据存储,一个用于数据变化通知。

  2. 数据采集客户端通过SDK向分布式网关上传数据;负载均衡服务器将数据路由到性能负载最低的网关节点,并转发至Kafka。

  3. Kafka中的数据被流式计算服务订阅后,进入数据处理流程:

    • Notify Bolt判断数据变化,并将变化信息通过通知topic发布(如果被订阅);同时路由至Memstore Bolt。
    • Memstore Bolt负责将数据推送到缓存服务,将快照存储到Redis。
    • Persistent Bolt将数据传入分布式存储服务,并借助HBase的同步机制,完成向Solr异步索引处理以及HDFS中的序列化存储。
  4. 通过上述处理,系统实现对数据的可靠存储和扩展处理能力,数据量增加时,仅需增加节点即可实现弹性扩展。

检索流程:

数据查询根据类型不同设定具体路径: - 若为实时快照查询,直接通过Redis缓存返回数据; - 若为历史数据的时间查询,通过HBase行键完成; - 若为模糊查询或者按值范围的查询请求,则转交Solr处理并返回结果。


核心特性分析

系统可靠性与扩展性:

采用无单点故障的分布式架构,所有核心组件均支持横向扩展。

数据安全性:

Kafka的数据序列化与副本机制、Storm的容错机制,以及HBase的存储副本机制共同保障数据在传输、处理、存储各阶段的安全性。

高性能与弹性扩展:

  • 分布式网关基于Netty的异步RPC通信框架,性能可随着节点扩展线性提升;
  • 分布式消息队列、流式计算服务、缓存服务和存储服务均具备高性能与弹性扩展能力。

支持实时与批处理计算:

实时流计算通过Storm实现,批量数据分析则借助HBase+HDFS的存储方式,与Spark等框架整合完成离线计算。

多维度查询支持:

结合HBase的行键方式和Solr的搜索引擎,满足复杂条件(如正则表达式)的查询需求。


测试结果与实际应用

作者在普通四台x86服务器(配置:Intel Xeon E5-2660 v3,128GB内存,SATA 7200rpm硬盘x10)上测试,能够实现每秒处理400万条时序数据的存储。整个系统运行稳定,支持独立部署及与用户现有Hadoop平台的集成,有效降低了系统运维复杂性及成本。


意义与价值

该设计方案显著提升了时序数据库在工业大数据领域的应用能力,特别是在可靠性、扩展性、数据查询以及实时/离线数据处理方面的表现。这些特性为企业的信息化与智能化转型奠定了基础,其价值主要体现在: - 应用价值: 能够满足工业大数据场景下的海量时序数据存储需求; - 科学技术价值: 提供了一种高效且易扩展的架构设计,为分布式数据库领域探索了新的解决方案; - 经济价值: 降低系统部署与运维成本,提高企业的大数据处理能力。


研究亮点

  • 纯分布式架构设计,满足工业时序大数据场景下的高可靠性和高扩展性需求;
  • 有效结合Storm、Redis和HBase等技术,解决传统时序数据库的不足;
  • 支持多种查询类型,兼顾高性能实时处理和复杂条件检索。

通过这项研究工作,作者对工业时序大数据的存储与处理提供了系统性的解决方案,为相关领域的研究和实践提供了重要的技术参考。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com