本文为您介绍Hologres的产品架构以及每个组件的作用。

架构优势

在传统的分布式系统中,常用的存储计算架构有如下三种。架构
  • Shared Disk/Storage (共享存储)

    有一个分布式的存储集群,每个计算节点像访问单机数据一样访问这个共享存储上的数据。这种架构的存储层可以比较方便的扩展,但是计算节点需要引入分布式协调机制保证数据同步和一致性,因此计算节点的可扩展性有一个上限。

  • Shared Nothing

    每个计算节点自己挂载存储,一个节点只能处理一个分片的数据,节点之间可以通信,最终有一个汇总节点对数据进行汇总。这种架构能比较方便的扩展,但是它的缺点是节点Failover需要等待数据加载完成之后才能提供服务;并且存储和计算需要同时扩容,不够灵活,扩容后,有漫长的数据Rebalance过程。

  • Storage Disaggregation(存储计算分离架构)

    存储和Shared Storage类似,有一个分布式的共享存储集群,计算层处理数据的模式和Shared Nothing类似,数据是分片的,每个Shard只处理自己所在分片的数据,每个计算节点还可以有本地缓存。

    存储计算分离的架构存在以下优势。
    • 一致性问题处理简单:计算层只需要保证同一时刻有一个计算节点写入同一分片的数据。
    • 扩展更灵活:计算和存储可以分开扩展,计算不够扩计算节点,存储不够扩存储节点。这样在大促等场景上会非常灵活。计算资源不够了,马上扩容计算就好了,不需要像Shared Nothing那样做耗时耗力的数据Rebalance;也不会像Shared Nothing那样,出现单机的存储容量瓶颈。
    • 计算节点故障恢复快:计算节点发生Failover之后,数据可以按需从分布式的共享存储异步拉取。因此Failover的速度非常快。
Hologres采用的是第三种存储计算分离架构,Hologres的存储使用的是阿里自研的Pangu分布式文件系统(类似HDFS)。用户可以根据业务需求进行弹性扩缩容,轻松应对在线系统不同的流量峰值。

架构组件介绍

Hologres架构图如下所示。Hologres架构图
整个架构从上往下分为如下组件。
  • 计算层
    • 接入节点(Frontend,FE)

      Hologres接入节点,主要用于SQL的认证、解析、优化,一个实例有多个FE接入节点。在生态上兼容Postgres 11,因此用户可以使用Postgres标准语法进行开发,也可以用Postgres兼容的开发工具和BI工具直接连接Hologres。

    • 计算HoloWorker
      HoloWorker分为执行引擎、存储引擎、调度等组件,主要负责用户任务的计算、调度。
      • 其中执行引擎(Query Engine,QE)主要有三个,执行引擎的技术原理请参见Hologres执行引擎技术揭秘
        • HQE(Hologres Query Engine)

          Hologres自研存储引擎,采用可扩展的MPP架构全并行计算,向量化算子发挥CPU极致算力,从而实现极致的查询性能。(QE主要由HQE组成)。

        • PQE(Postgres Query Engine)

          用于兼容Postgres提供扩展能力,支持PG生态的各种扩展组件,如PostGIS,UDF(PL/JAVA,PL/SQL,PL/Python)等。部分HQE还没有支持的函数和算子,会通过PQE执行,每个版本都在持续优化中,最终目标是去掉PQE。

        • SQE(Seahaws Query Engine)

          无缝对接MaxCompute(ODPS)的执行引擎,实现对MaxCompute的本地访问,无需迁移和导入数据,就可以高性能和全兼容的访问各种MaxCompute文件格式,以及Hash/Range clustered table等复杂表,实现对PB级离线数据的交互式分析,技术原理请参见Hologres加速查询MaxCompute技术揭秘

      • 存储引擎Storage Engine(SE)

        主要用于管理和处理数据, 包括创建、查询、更新和删除(简称 CRUD)数据等,关于存储引擎详细的技术原理请参见Hologres存储引擎技术揭秘

      • Cache(缓存)

        主要是结果缓存,提高查询性能。

      • HOS Scheduler

        轻量级调度。

    • Meta Service

      主要用于管理元数据Meta信息(包括表结构信息以及数据在Storage Engine节点上的分布情况),并将Meta信息提供给FE节点。

    • Holo Master

      Hologres原生部署在K8s上,当某个Worker出现故障时,由K8s进行快速拉起创建一个新的Worker,保障Worker级别的可用性。在Worker内部,每个组件的可用性则由Holo Master负责,当组件出现状态不正常时,Holo Master则会快速重新拉起组件,从而恢复服务,高可用技术原理请参见Hologres高可用技术揭秘

  • 存储层
    • 数据直接存储在Pangu File System。
    • 与MaxCompute在存储层打通,能直接访问MaxCompute存储在盘古的数据,实现高效相互访问。
    • 支持直接访问OSS、DLF数据,类型包含CSV、ORC、Parquet、Hudi、Delta,加速数据湖探索,也可以将数据回流至OSS,降低存储成本。