试图理解使用docker(调度程序、队列、工作人员)与docker(气流)之间的区别

试图理解使用docker(调度程序、队列、工作人员)与docker(气流)之间的区别,docker,docker-compose,airflow,Docker,Docker Compose,Airflow,请原谅,如果我问了一个非常业余的问题,但在阅读了多条线索、帖子、参考资料等之后。。。我仍然不理解其中的区别 我目前的理解是: 第1种方法) 一名传统码头工人将由3名码头工人组成: 管理作业计划的计划程序 管理多个作业队列的队列 管理每个队列的工作的工作人员 我从这个来源读到: Docker+Apache Airflow将组成一个Docker,其功能与上述3个Docker相同: 第二种方法) Worker(Airflow:因为在Airflow中,我们可以设置调度程序和队列) 我观看了本教程: 我首

请原谅,如果我问了一个非常业余的问题,但在阅读了多条线索、帖子、参考资料等之后。。。我仍然不理解其中的区别

我目前的理解是:

第1种方法) 一名传统码头工人将由3名码头工人组成:

  • 管理作业计划的计划程序
  • 管理多个作业队列的队列
  • 管理每个队列的工作的工作人员
  • 我从这个来源读到:

    Docker+Apache Airflow将组成一个Docker,其功能与上述3个Docker相同: 第二种方法)

  • Worker(Airflow:因为在Airflow中,我们可以设置调度程序和队列)
  • 我观看了本教程:

    我首先从这两个来源和其他来源学习,但我对以下内容感到困惑:

  • 因为我可以使用docker compose来构建所有服务,所以我只需要一个docker(第二种方法),然后设置调度程序来控制工作流,对吗?这意味着我不需要创建多个Docker作为第一种方法,将所有任务分离到不同的Docker中

  • 如果两者不同,那么有什么区别?我试着找了好几天,但还是不明白,对不起,我对这门学科还不熟悉,所以我现在还在学习


  • 谢谢。

    我想你指的是
    多节点气流
    单节点气流
    的比较。多节点airflow将为您的Apache airflow实例提供更多的计算能力和更高的可用性。您可以在一台机器/docker实例上运行所有东西(Web服务器、调度程序和工作程序),但如果您的项目不断增长,您可以创建一个集群并扩展您的管道

    实际上,一个Airflow实例可以有多个
    守护进程
    工作者一起工作,以提供Airflow的全部功能

    使用多个gunicorn Worker,您可以并行/并发地从队列中执行更多任务。在一台机器上(取决于您的用例/机器的核心),您可以在{afflow_HOME}/afflow.cfg(例如
    workers=6
    )中定义它

    现在,由于守护进程并不相互独立,人们将它们分布在多个节点/实例(在您的案例中是Docker容器)上。所以,也许,这就是你所看到的

    更新:

  • 关于您共享的教程链接
  • 正如您在评论部分所问的,您所指的youtube教程也使用了一个docker容器,您可以在其中运行所有内容,而不是使用多节点

    对于您的第一个链接(关于laravel调度),我不确定,但它似乎也只使用了一个容器

  • 如何在多节点设置中链接多个气流节点 例如,如果您使用相同的外部数据库实例(Mysql、postgres),并且您的所有节点都与之交互,则类似地,您拥有从其中执行任务的相同队列(可能是外部/相同RabbitMQ集群)

  • 调度器的作用是什么,如何执行

  • 调度器是实际调度DAG的东西,例如,如您所声明的运行每周/每天/每月等。本质上,一个人只有一个 调度器,您需要更多的工作人员。但这并不意味着你不能拥有,你可能有两个Web服务器等等,但你需要解决端口差异并在它们之间共享元数据


    要运行调度程序,只需执行
    气流调度程序
    ,它将开始拾取DAG,并在成功运行后开始执行它们。对于第一次运行,它将看到
    start\u date
    ,对于后续运行,它将使用您在DAG中定义的
    schedule\u interval
    来调度它们(这就是为什么它是scheduler)

    非常感谢您的解释,但很抱歉,我对您的示例有点困惑。根据您的解释,1)多节点气流意味着构建一个具有多个docker的气流环境(但我们如何构建它,我目前基于教程的方法是我们可以构建多个节点(docker;Web服务器、调度器、工作器),然后将所有这些与docker compose链接)?2) 我应该使用多节点气流,因为它更适合超时增长的项目。很抱歉,你有一些例子吗?很抱歉给你添麻烦,但我真的想了解更多关于码头工人和气流的情况。我在youtube上遵循的当前教程不是多节点气流,而是单节点气流>我可以再次确认吗。例如,如果我构建了两个Docker,它是多节点的(main:Webserver+Scheduler,Worker)。主docker,如何执行调度程序以及它的实际用途(这是我最困惑的部分,因为在airflow中,我们可以使用docker compose来设置调度程序,那么有什么区别呢?)?工人将被分配DAG(这意味着我的所有任务都将在此工人docker中执行)。但是Web服务器和调度器呢?调度器是用来做什么的?谢谢。所以我所要做的就是创建多个节点(worker),每个节点都有自己的调度器?然后当我运行airflow scheduler时,它将获得所有这些工作程序(使用计划定义),然后它将相应地排队,对吗?不,就像我说的,您将有一个计划程序和多个工作程序,您需要使用一个db和一个队列,以便它们正常工作