Skip to content

功能图谱

wangqi edited this page Jun 6, 2022 · 9 revisions

功能图谱

Scaleph 平台功能全景图

  1. 核心功能
    1. 数据集成
    2. 数据开发
    3. 任务调度
    4. 数据标准
  2. 用户和权限
    1. 组织
    2. 用户
    3. 角色
    4. 权限
    5. 资源
  3. 平台功能
    1. 多租户
    2. 日志功能
    3. 缓存
    4. 存储。blob server
    5. 邮件。消息系统
    6. 代码生成

核心功能

数据集成

数据开发

任务调度

基于 quartz 集群模式实现的任务调度。

数据标准

用户和权限

组织

用户

角色

权限

资源

平台功能

多租户

待实现

日志功能

scaleph 日志功能主要包括 4 部分:

  • 用户登录日志
  • 用户操作日志
  • 系统站内信
  • 调度日志

系统日志可以暴露系统运行细节,让管理员和用户了解系统内部发生了什么。

scaleph 将日志信息存入独立的日志数据库,供用户查看和检索。

现代系统多是分布式系统,日志信息会散落在集群内的不同机器上。而如今众多的日志采集系统可以将散落在不同机器上的日志数据,汇总到集中的日志存储系统中,供开发人员查看、检索。

但是日志采集系统采集的日志信息是没有上下文信息的,事件的先后顺序,触发和结果都需要开发者自己去分析获取,提供给系统用户查看仍需要二次加工处理。

大部分调度系统在实现日志白屏的功能时,日志数据会确保落在同一台机器上,这样日志数据会以独立的日志文件形式输出到本地磁盘中,也有的调度系统并未采用独立的日志文件,而是 sqlite 这种轻量级嵌入式的数据库存储日志信息。

因为调度日志过于庞大,无论是独立的日志文件还是 sqlite 都不具备 ELK 这种日志定期归档和清除的功能,很多调度系统在上线不久后都会面临第一个问题:调度日志积攒过多。

现如今分布式文件系统的流行,也有调度系统开始将调度日志直接写入分布式文件系统。

缓存

暂时无用

存储

scaleph 对于存储的需求都是围绕 flink 任务运维提出的。

  • flink 任务运维。任务运行时 checkpoint 和 savepoint 需求。
  • 任务提交。
    • flink 集群只提供 core 的 jar 包,不提供 connector 的 jar 包。
    • 插件。在 plugins 目录下存放着 flink 的插件,flink 集群在启动时会自动加载 plugins 目录下的插件。但是 release 包并没有把所有的插件都预置在 plugins 目录下,比如 FileSystem 的插件实现放在了 opt 目录,如果要启用需要将对应的 jar 包按照 flink 加载 plugins 的规则放置在 plugins 目录下。
    • 任务 jar 包。seatunnel 作为一个 flink 的任务 jar 包,会以 jar 任务的形式提交。
    • udf 包。
  • seatunnel。
    • config 文件。
    • connector jar 包,以及 connector 额外依赖的 jar 包,如 JDBC 驱动。connector jar 是 dev 分支的新功能,目前并未发布。

flink 的 FileSystem 内置了本地文件的实现,而对于分布式文件系统如 HDFS,S3,OSS 等实现则位于 opt 目录下。

如果想要将 checkpoint 和 savepoint 存储到分布式文件系统中,则需预先配置对应的 FileSystem 插件实现。

flink 任务提交有多种方式:

resource provider session per-job application
standalone 支持 不支持 支持
YARN 支持 支持(已废弃) 支持
Native Kubernetes 支持 不支持 支持

对于 session 形式的提交,flink 集群已经预先创建,只需要提供 任务 jar 或 udf 包即可。

使用 YARN 作为资源管理时,提交 per-job 或 application 形式任务时,需提供 flink 的 release 包供集群创建。release 包可以在本地和 任务 jar 时一起上传,也可以提前上传至 HDFS 中,这样提交任务时只需要提交任务 jar 包。

使用 Native Kubernetes 作为资源管理时,提交 application 形式任务时,用户需将 flink 和任务 jar 包制成镜像,flink-kubernetes 客户端直接向 kubernetes 请求资源,拉起 pod 运行任务。

提交 seatunnel 任务时依据不同的资源管理和部署方式,seatunnel jar 包的处理也有所不同。

邮件

暂时无用

代码生成