Airflow是Apache软件基金会负责的顶级项目。作为一个工作流(workflow)平台,用户可以使用Airflow创建、调度和监控工作流。目前,国内外众多公司将Airflow作为内部的调度系统解决方案。然而,有关Airflow的资料却略显匮乏。笔者2019年首次接触Airflow,此后对Airflow的功能迭代和系统演进一直保持着浓厚兴趣并持续关注。机缘巧合之下,又于2021年年初开始参与Airflow在某大型互联网公司的落地和推广,从而积累了很多相关的经验。为了让更多的读者熟练掌握Airflow,笔者将自己对Airflow的实践经验整理成书。希望本书可以帮助读者轻松学习Airflow的使用方法和运作原理。
本书基于Airflow 2.2.4版本,涵盖Airflow的安装部署、重要概念、核心原理、架构和组件、系统管理等诸多内容。
对于更高版本的Airflow,本书结合具体的示例介绍了相关新功能。
此外,本书还提供了在生产环境使用Airflow的诸多实践,不管是对研发工程师创建工作流、排查工作流问题,还是对运维工程师维护集群运转、优化集群性能,都有极其重要的借鉴价值。
本书图文并茂,理论翔实,示例丰富,可以作为Airflow的全方位技术指南。
本书适合如下读者阅读。
● 正在使用或者即将使用Airflow作为调度系统的研发工程师。本书涵盖Airflow 2.2.4版本的全部功能,并配备了大量的示例和讲解,非常适合作为Airflow的入门学习资料。此外,本书还包含对Airflow源代码的解读和系统架构的分析,相信这部分内容对于想要深入了解Airflow的中高级工程师也是有帮助的。
● Airflow平台的运维工程师。本书记录了许多Airflow运维方面的实践经验和经典示例。书中的调优方法和排查手段将会对系统运维工程师的日常工作有直接的帮助。
● 其他对Airflow感兴趣的读者。深入了解Airflow这样的开源项目对开发人员自身的编码能力、系统架构的设计能力等都会有很大的帮助。
如果你是第一次接触Airflow,建议按照顺序阅读本书,并且参考书中的示例进行编码和实战。如果你已经对Airflow有一定的了解,可以把本书当成参考手册,直接查看需要学习的章节。以下是各章的基本介绍。
第1章介绍快速搭建集群的方法,Linux操作系统、macOS、Windows 10操作系统的用户都可以在其中找到对应的方案。
第2章介绍安装Airflow的方法,这一部分内容主要针对Ubuntu 20.04操作系统,使用Ubuntu其他版本或者使用其他Linux发行版的用户需要根据系统做适当的调整。
第3章介绍Airflow集群的部署方法,分为容器环境和非容器环境两部分。
第4章介绍Airflow中的核心概念——DAG、Task、DAG Run和Task Instance。
第5章介绍Airflow中的其他重要概念——XCom、Variable、Connection和Hook、Pool、Priority Weight、Cluster Policy以及Deferrable Operator和Trigger。
第6章介绍Airflow的架构和组件。Airflow有多种架构,各有优劣。
第7章介绍Airflow的系统管理,内容包括配置、安全、日志和监控、插件、模块管理、CLI、时区等。
第8章介绍实践经验,主要是笔者管理和运维Airflow集群的经验总结。
第9章介绍Airflow 2.3版本、2.4版本、2.5版本的新功能。
第10章介绍其他常见的调度系统,并且将它们与Airflow进行比较。
附录A为Docker简介。
附录B为Kubernetes简介。
由于编写时间仓促,笔者水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。期待能够得到你们的真挚反馈。
感谢人民邮电出版社的秦健老师,在这一年多的时间中他始终支持我的写作,他的鼓励和帮助引导我顺利完成全部书稿。
感谢我的领导殷钢先生,他在我面临职场困境时给予了很大的帮助和支持。感谢我的同事吴劼平先生,他与我一道在公司层面进行Airflow项目的推广,我从他身上学到很多技术。感谢我的同事姚序明女士,她指导我完成了本书一部分图片的制作。
感谢我的爸爸、妈妈、外公、外婆、爷爷、奶奶、岳父、岳母,感谢你们的支持,并时时刻刻为我灌输着信心和力量。
谨以此书献给我最亲爱的妻子,遇见你是我最大的幸运。
朱鹏程