arroyo 组件简单说明
arroyo 架构上与k8s 的架构特别类似,包含了控制面板:api server 、controler、存储(k8s 是etcd,arroyo 是pg)、web ui (类似dashboard)数据面板: scheduler 以及worker(serverless 具体执行的地方),对于状态存储基于了s3
组件介绍
- web ui
单页面应用,通过grpc api 交互,支持管理以及创建pipeline - arroyo-api
提供grpc 服务,同时会进行配置的pg 存储,api 是武无状态的,其他通信只会使用db - arroyo-controller
持续循环处理系统状态(基于db),比较类似k8s,当前开源版本只支持一个controller,不支持ha,controller 管理job 的状态
同时也包含了checkpoint 的初始化,与worker 通信通过grpc - scheduler
arroyo 支持多种调度处理,可以通过环境变量处理(SCHEDULER)当前支持进程,node,nomad(比较推荐)以及k8s (暂时还没开放) - arroyo-worker
运行业务实际逻辑的地方,会将rust code 生成为sql 查询,同一个piepeline 通过tcp 连接,每个worker 配置了一些slots,可以控制多少子任务执行,每个slot 并行的运行dag - postgres
基于pg 的配置存储,以及系统的状态维护,同时controller 也会通过协调循环处理 - prometheus
主要是进行监控的 - s3
checkpoints 的存储方便恢复
arroyo 状态处理
了解arroyo的状态图比较有意义,可以方便学习内部处理机制
说明
arroyo 的架构,从功能上比较类似k8s,毕竟k8s的架构比较稳定,很值得借鉴参考
参考资料
https://doc.arroyo.dev/architecture
https://doc.arroyo.dev/architecture#state-machine