Temporal 或 Uber Cadence 中子工作流程的良好用例是什么?

2024-01-16

我试图了解 Temporal/Uber Cadence 子工作流程的用例。与简单地将工作流程拆分为函数相比,子工作流程有什么优势?我有一个相当复杂的工作流程,我正在考虑将其拆分为多个子工作流程,但我不确定这样做的利弊。


  • 子工作流可以由不包含父工作流代码的一组单独的工作人员托管。因此,它将充当可以从多个其他工作流程调用的单独服务。
  • 单个工作流程的大小是有限的。例如,它无法执行 100k 活动。子工作流程可用于将问题划分为更小的块。一位家长有 1000 个孩子,每个孩子执行 1000 个活动,相当于执行了 100 万个活动。
  • 子工作流可用于管理某些资源,并使用其 ID 来保证唯一性。例如,管理主机升级的工作流可以为每个主机拥有一个子工作流(主机名是工作流 ID),并使用它们来确保主机上的所有操作都被序列化。
  • 子工作流可用于执行一些周期性逻辑,而不会增加父历史记录的大小。父级启动一个子级,该子级执行周期性逻辑,根据需要多次调用 continue ,然后完成。从父级角度来看,它只是一个子工作流调用。

与将所有应用程序逻辑并置在单个工作流中相比,子工作流的主要限制是缺乏共享状态。父级和子级只能通过异步信号进行通信。但是,如果它们之间存在紧密耦合,那么使用单个工作流程并仅依赖于共享对象状态可能会更简单。

如果您的问题在执行的活动和处理的信号数量方面有限制,我个人建议从单个工作流实施开始。它只是比多个异步通信工作流更简单。

人们还经常注意到,工作流不仅仅是函数,您还可以在其中使用 OO 的全部功能。使用结构、接口和其他面向对象技术将逻辑分解为更易于管理的抽象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Temporal 或 Uber Cadence 中子工作流程的良好用例是什么? 的相关文章

  • 如何在 SwiftUI 中向 TextEditor 添加占位符文本?

    使用 SwiftUI 的新 TextEditor 时 您可以使用 State 直接修改其内容 但是 我还没有找到向其添加占位符文本的方法 现在可行吗 我添加了一个苹果在他们自己的翻译应用程序中使用的示例 这似乎是支持占位符文本的多行文本编辑
  • Unity Ads 4.0 - 奖励广告的多个 OnUnityAdsShowComplete 回调

    使用 Unity Ads SDK 上找到的奖励广告脚本时 我遇到了一个问题 ShowAd IUnityAdsShowListener gt OnUnityAdsShowComplete 增量触发调试日志 我观看的第一个广告返回一行 表明广告
  • gcc 4.8 或更早版本在正则表达式方面是否存在错误?

    我正在尝试在 C 11 代码中使用 std regex 但似乎支持有点错误 一个例子 include
  • “IE8 除外”的条件注释?

    我在用着针对 IE8 但我想为除 IE8 之外的所有浏览器加载一些 JS 我应该使用什么条件注释 编辑 我想知道这是否可行 Thanks 我想为除 IE8 之外的所有浏览器加载一些 JS 我应该使用什么条件注释 要使某些内容出现在不支持 C
  • 在 C/C++ 中声明和使用 FILE * 指针的正确方法是什么?

    在 C C 中声明和使用 FILE 指针的正确方法是什么 应该声明为全局的还是局部的 有人可以举一个很好的例子吗 无论是本地的还是全球的 根本不重要 文件指针的范围与其用途无关 一般来说 尽可能避免全局变量是个好主意 这是一个示例 展示了如
  • 查询中的累计总和

    如何返回行的累积和大于或小于指定值的行 table id count 1 30 2 10 3 5 4 20 5 15 query SELECT id count FROM table ORDER BY id HAVING SUM count
  • Windows 上的 OpenSSL 可以使用系统证书存储吗?

    我从 Linux 移植到 Windows 的一些工作 C 代码在 Windows 上失败 因为SSL get verify result 正在返回X509 V ERR UNABLE TO GET ISSUER CERT LOCALLY 该代
  • 使用 c_api.h 执行使用 tensorflow.contrib.resampler 的冻结张量流图

    我有一个冻结的张量流图 pb 格式 其中包含对 tensorflow contrib resampler 的调用 必须使用以下命令在 C 应用程序中加载和执行该调用 c api h 如果我调用以下命令 我就可以从 python 成功加载并执
  • 在django中显示多个条形图

    我是 django 的新手 对 python 知之甚少 我正在学习在 django 框架中绘制图表 我绘制了单个条形图 但在使用 django 项目的数据库 Telecom db 绘制多个条形图时遇到问题 然而 在 wxPython 中 以
  • 在全屏模式下检测事件更改 Internet Explorer

    我正在尝试编写一个事件处理程序来检测我拥有的视频播放器是否处于全屏模式或 常规 模式 我尝试过使用 document addEventListener fullscreenchange myfunc false 但这在 IE 中不起作用 我
  • 读取 NSUserDefaults 与变量的速度

    我有一个应用程序 它经常调用变量 这些变量存储在NSUserDefaults 我想知道在哪里NSUserDefaults正在存储 如果我打电话NSUserDefaults直接而不是使用变量 哪个更快 变量或NSUserDefaults 因为
  • 如何在 Visual Studio Code 上查看 C# Nuget Package 的源代码?

    当我们选择 转到定义 或 F12 或 CRTL 单击 时 有什么方法可以查看 Nuget 包的源代码吗 此时 我在代码中单击 CRTL 单击 Nuget Package 中的某个类 vscode 会显示程序集摘要 元数据 其中我只能看到文档
  • 从 Git 恢复文件?

    问题与问题相关 致命文件系统错误后如何恢复 Git https stackoverflow com questions 552832 how to restore git after fatal file system error 但对于单
  • 如何在不使用release分支的情况下使用git flow?

    有多家分店可供选择git flow 例如 feature release support hotfix bugfix 我不需要release 分支并想要合并staging分支 一个开发分支 直接到master 使用什么是实现此目的的最佳方法
  • C++11 在 constexpr 函数中使用统一值初始化数组

    我有一个类模板 它根据模板参数构建一个简单的数组作为其成员之一 我需要能够在构造函数之一中将数组中的每个元素初始化为单个值 不幸的是这个构造函数必须是constexpr 相关部分归结为 template

随机推荐