Skip to main content

架构

架构概览

本页面旨在帮助新管理员深入了解 Superset 的各个组件。

组件

一个 Superset 安装包含以下组件:

  1. Superset 应用程序本身
  2. metadata(元数据) 数据库
  3. caching layer (可选,但对于某些特性是必要的),如:redis 缓存层
  4. worker & beat (可选,但对于某些特性是必要的),如:celery worker(工作器)/beat(任务调度器)

可选组件及其相关特性

可选组件对于以下特性的启用是必要的:

如果你使用 Kubernetes 或 Docker Compose 进行安装,所有这些组件都将被自动创建。

然而,从 PyPI 安装仅会创建应用程序本身。如果用户希望启用上述特性,他们需要自行配置 caching layer、worker 和 beat。当前文档尚未覆盖针对 PyPI 安装方式下这些组件的配置指南。

以下是关于每个组件的更多细节。

Superset 应用程序

这是核心应用。Superset 的运行流程如下:

  • 用户访问某个图表或仪表板
  • 这将触发向承载底层数据集的数据仓库发送 SQL 查询
  • 查询结果将以数据可视化形式呈现
  • Superset 应用程序由 Python(Flask)后端应用(服务器)、API 层以及通过 Webpack 构建的 React 前端和应用程序运行所需的所有静态资源组成。

元数据数据库

元数据数据库用于存储图表(chart)和仪表板(dashboard)定义、用户信息、日志等数据。Superset 已经过测试,可以使用 PostgreSQL 和 MySQL 数据库作为元数据数据库(请注意,这与数据源如数据仓库不同,后者可能有更多样化的选项,比如 Snowflake、Redshift 等)。

像我们的 Quickstart 和 PyPI 安装方法,默认配置使用的是基于磁盘的 SQLite 数据库。 而在 Docker Compose 安装中,数据会被存储在一个 PostgreSQL 容器卷中。然而,这两种情况都不推荐用于 Superset 的生产环境实例。

对于生产环境,强烈建议使用配置正确、管理得当的独立数据库。无论你选择哪种数据库,都应该计划定期对其进行备份。

缓存层

缓存层主要承担两个功能:

  • 存储对数据仓库的查询结果,使得当同一图表第二次加载时,可以从缓存中读取数据,从而加速应用程序响应并减轻数据仓库的负载。
  • 作为 worker 的消息代理(message broker),使警报与报告(Alerts & Reports)、异步查询(async queries)和缩略图缓存(thumbnail caching)等功能得以实现。

大多数人使用 Redis 作为缓存,但 Superset 也支持其他选项。更多信息,请参阅缓存文档

Worker 与 Beat

这包括一个或多个 worker,负责执行诸如运行异步查询、捕获报告快照和发送电子邮件等任务, 以及一个 “beat” 组件,作为调度器,指示 worker 何时执行任务。大多数安装使用 Celery 来实现这些组件。

其他组件

Superset 还可以整合其他组件。了解更多额外配置的最佳途径是查阅配置页面。 例如,你可以设置负载均衡器或反向代理,在 Superset 应用前实现 HTTPS,或者指定 Mapbox URL 以启用地理空间图表等。

没有建立某些配置设置,Superset 甚至无法启动,因此仔细阅读配置页面是至关重要的。