架构
架构概览
本页面旨在帮助新管理员深入了解 Superset 的各个组件。
组件
一个 Superset 安装包含以下组件:
- Superset 应用程序本身
- metadata(元数据) 数据库
- caching layer (可选,但对于某些特性是必要的),如:redis 缓存层
- 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 甚至无法启动,因此仔细阅读配置页面是至关重要的。