用于数据管道、提供调度、重试和错误报告的微服务框架。
mettle的Python项目详细描述
Mettle是一个用于管理提取/转换/加载(ETL)作业的框架。ETL公司 流程提出了许多Mettle旨在解决的问题:
说明
- 作业需要在特定时间运行。有时它们需要由 完成其他工作。Mettle支持基于时间的调度 以及基于触发器的作业。
- 一个组织中的不同人员需要能够看到工作安排和 最近运行的状态。运行在cron作业上的简单脚本,分散 在大量的服务器中,会产生严重的可见性问题。 Mettle通过集中作业调度、状态报告和 日志查看。
- 有时工作失败是因为某个地方的临时问题(一个不稳定的网络, 磁盘太满)。Mettle将自动重试作业来处理此问题。
- 有时工作会失败,直到工作完成后才能成功。 重新配置(例如,更改了数据库上的密码)。勇气造就了它 在解决此类问题后,可以轻松手动重新启动作业。
- 如果您试图通过集中所有etl执行来解决上述问题, 您很快就会遇到依赖关系激增的问题。集中的 etl服务很难开发和部署,因为 依赖项(库、外部api、外部数据库)引入了更多 不稳定。Mettle旨在将这些依赖项分离为 etl服务,因此一个etl中的不稳定性不会影响任何其他etl。
我们选择“Mettle”这个名字是因为:
- 里面有字母E,T和L。
- 它的意思是“有能力在困难中继续前进”。
- 听起来像“金属”,是固体。
Mettle由几个组件组成:
- 网络用户界面。功能:
- 为管道配置计划。
- 显示过去的作业,包括成功的作业和失败的作业。
- 显示当前正在执行的作业,包括实时状态更新和流式处理 原木。
- 手动启动作业。
- 计时器:从数据库中读取管道计划并发送rabbitmq消息 当需要启动管道时。
- Dispatcher:记录哪些工人正在执行哪些作业,以及他们 最终的成功或失败。
- logger:通过rabbitmq接收etl服务发送的日志消息,并保存 寄到邮局。
- etl服务:实现实际的业务逻辑和系统集成 在系统之间移动数据。
mettle使用postgres存储状态,rabbitmq用于进程间 沟通。