golang fastflow 库流程整理

这篇具有很好参考价值的文章主要介绍了golang fastflow 库流程整理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

组件介绍

先抄一张官网的,其实这张图里面画的不全,Leader 节点也会执行任务。

golang fastflow 库流程整理,golang,golang,后端,fastflow,工作流,workflow

  • keeper:负责上报心跳,同时负责选举 leader。
  • store:存储层的抽象,负责提供存储相关的 api。
  • dispatcher:监听等待执行的图,通过负载均衡算法将图分配给不同的 worker。
  • parser:监听分配给自己的任务,将图解析成树,找到下一个要执行的节点,发送给 executor 执行。
  • executor:负责单个节点的运行。
  • commander:封装了一些常见的执行,比如停止,重试,继续等。
  • watchDog:负责监听执行超时的节点将其更新为失败,同时也会重新调度那些一直得不到执行的图到其他worker。

分布式示意图

只有 leader 节点会对任务进行分配,leader 和 worker 都会负责执行任务。

golang fastflow 库流程整理,golang,golang,后端,fastflow,工作流,workflow

系统执行流程

任务执行流程

golang fastflow 库流程整理,golang,golang,后端,fastflow,工作流,workflow

  1. 用户创建工作流任务。
  2. dispatcher 监听到有待执行的任务后,分配一个 worker 给这个任务,然后将任务写回数据库。
  3. parser 监听到有分配给自己的任务后,将图解析成树,寻找可以执行的节点,然后将节点发送给 executor。
  4. executor 执行单个的节点,并将执行结果返回给 parser。
  5. parser 收到结果后,根据树找到下一个要执行的节点,继续发送给 executor。如果整个树都执行完毕则更新任务状态。

命令执行流程

golang fastflow 库流程整理,golang,golang,后端,fastflow,工作流,workflow

command 流程和任务执行流程相似,命令会先存储到 db 中,然后又 parser 进行命令的解析,发送给 executor 执行。

详细流程

golang fastflow 库流程整理,golang,golang,后端,fastflow,工作流,workflow

  1. 要创建一个工作流,首先要找到对应的 dag 图,然后传入必要的参数,再将这个带有参数的图存到数据库。
  2. dispatcher 组件有一个协程负责监听数据库里面待执行的图,拿到图后通过负载均衡算法分配一个 worker,然后把这个图存入数据库。
  3. worker 节点的 parser 组件会监听数据库,查找分配给自己的图,找到图后生成一棵树,放入内存中,然后通过树查询可以执行的节点,通过 queue 传递给 executor 组件。
  4. executor 组件拿到要执行的节点后,执行顺序为 preCheck->runBefore->run->runAfter,执行完成后将节点和执行结果通过 queue 传递给 parser。
  5. parser 通过 queue 拿到 executor 执行完成后的节点之后,再通过树找到下一个可以执行的节点,通过 queue 传递给 executor 执行。如果没有下一个可以执行的节点,那么就计算整个树的执行结果,存入数据库。

具体逻辑说明

选主逻辑

leader 会在二分之一超时时间的时候去更新数据库的 update_time 字段。worker 会在二分之一的超时时间查询一次 leader 是否已经超时,如果超时则将数据库中 worker_key 字段更新为自己。

优点

  • 对流程支持使用编码和yaml文件的形式进行编排

  • 不依赖其他的组件,只依赖 mysql

改进点

  1. 如果自身负载比较低,那么生成任务后就由自身节点去立即执行,而不是走 dispatcher 分配流程。
  2. 执行命令时,由接收到该命令的机器去执行该命令,同时抢占任务的执行权,省略了监听再执行的步骤,缺点是可能造成单个机器负载较高。
  3. 继续,重试命令会重试节点的所有动作,可以改进为精准重试,哪里阻塞在重试的时候就重试哪里。

github 地址

原版

mysql 版文章来源地址https://www.toymoban.com/news/detail-804525.html

到了这里,关于golang fastflow 库流程整理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java工作流框架:探索流程引擎的实现和应用

    目前,市面上有很多基于SpringBoot+Vue前后端分离的Java快速开发框架和工作流开发框架可供选择。以下是一些比较流行的框架: 1. Spring Cloud:Spring Cloud是一套基于Spring Boot的开发工具,用于快速构建分布式系统中的服务。它利用Spring Boot的便利来简化了分布式系统的开发,并通

    2024年02月14日
    浏览(48)
  • Springboot整合Camunda工作流引擎实现审批流程实例

    环境:Spingboot2.6.14 + camunda-spring-boot-starter7.18.0 依赖配置 应用程序配置 通过上面的配置后访问控制台: http://localhost:8100/workflow/ 默认是没有上面的tasks中的内容,这里是我之前测试数据 环境准备好后,接下来就可以设计工作流程。 上面的 camunda-bpm-spring-boot-starter-rest依赖中定义

    2024年02月09日
    浏览(52)
  • camunda工作流实战项目(表单设计器+流程编辑器,零代码创建流程)

    基于ruoyi平台和camunda工作流开发而成,结合bpmn.js流程编辑器和vform表单设计器,实现常规流程零代码创建。 具备流程中心的能力,支持外部任务,可协调多个业务系统协同工作 具备SaaS平台的能力,支持多租户,各业务系统可作为租户,创建自己的流程,通过外部任务与自身

    2024年02月12日
    浏览(56)
  • 【工作流Activiti7】4、Activiti7 结束/终止流程

    1.  结束/终止 正在运行的流程实例 思路:跟回退一样的思路一样,直接从当前节点跳到结束节点(EndEvent)  补充1:关于BUSINESS_KEY_ BUSINESS_KEY_ 字段是用于将业务系统与Actititi工作流关联的段,通常我们用它来存放业务表的ID,比如:请假ID、报销ID等等。 但是,通常咱

    2024年02月09日
    浏览(52)
  • Activiti7工作流引擎:在线流程编辑器Activiti Modoler5.x

    有的时候我们的流程图需要业务人员自己绘制,然后使用自己绘制的流程图,此时就需要一个在线流程图编辑器需要集成到我们的web系统中。Activiti Modoler是Activiti官方推出的在线流程编辑器。 https://github.com/Activiti/Activiti/tree/5.x 将整个项目下载下来。不同版本的目录结构区别

    2024年02月09日
    浏览(55)
  • 【工作流】Activiti工作流简介以及Spring Boot 集成 Activiti7

    什么是工作流? 工作流指通过计算机对业务流程进行自动化管理,实现多个参与者按照预定义的流程去自动执行业务流程。 文章源码托管:https://github.com/OUYANGSIHAI/Activiti-learninig Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、

    2024年02月08日
    浏览(53)
  • 云原生离线工作流编排利器 -- 分布式工作流 Argo 集群

    作者:庄宇 在现代的软件开发和数据处理领域,批处理作业(Batch)扮演着重要的角色。它们通常用于数据处理,仿真计算,科学计算等领域,往往需要大规模的计算资源。随着云计算的兴起,阿里云批量计算和 AWS Batch 等云服务提供了管理和运行这些批处理作业的平台。 随

    2024年01月24日
    浏览(84)
  • Camunda 7工作流引擎 API 以及与Springboot集成实现工作流配置全纪录

    项目中需要用到工作流引擎来设计部分业务流程,框架选型最终选择了 Camunda7,关于 Camunda以及 Activity 等其他工作流 引擎的介绍及对比不再介绍,这里只介绍与现有Springboot项目的集成以及具体使用及配置 流程(PROCESS): 通过工具建模最终生成的BPMN文件,里面有整个流程的定

    2024年02月10日
    浏览(58)
  • 云计算工作流调度

    阅读笔记 首先,我们提出了一个更实用的混合云服务流程成本驱动调度模型,该模型在不降低VM部署弹性的情况下更精确地定义资源约束,并考虑了基于间隔的综合收费,包括计费周期和持续使用折扣。 其次,提出了一种改进的基于FWA(烟花算法)的方法来解决这一问题。在

    2024年02月02日
    浏览(71)
  • Activiti 工作流简介

    1、什么是工作流         工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。 1.2、工作流系统   

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包