问题标签 [temporal-workflow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
177 浏览

cadence-workflow - 哪一个适合完整的工作流程设计 Temporal 或 Cadence

我想设计一个完整的端到端工作流编排引擎。

它有以下要求

  1. 线性工作流程
  2. 并行工作流程- 我想并行执行 n 个活动。验证所有活动的结果后,我想进入下一个状态,否则工作流程将失败
  3. 批处理- 假设我有 30 个活动要完成,但我希望以批处理方式完成。就像如果窗口大小为 5,那么我想一次执行 5 个活动 T。执行所有活动并验证结果将继续进行或使工作流失败。
  4. 循环- 想无限地运行一个活动,直到满足某些条件
  5. 子工作流程
  6. 轮询
0 投票
1 回答
97 浏览

cadence-workflow - Difference between Async.function and Async.procedure in cadence

Team,

I don't know the difference between Async.function and Async.procedure

Let me know when to use where

0 投票
2 回答
115 浏览

cadence-workflow - 如何有效使用Worker、WorkflowClient

产品用例- 我们的产品有一个典型的用例,我们将有 n 个用户。每个用户将有 n 个工作流,并且每个工作流可以在任何时间(n 次)运行。

我希望这是任何工作流产品的典型用例。

我可以使用域来区分用户(我的意思是为每个用户创建一个域)?

我可以为每个用户创建一个 WorkflowClient 来服务他的所有工作流执行吗?或者对于每个请求,我是否需要创建一个 WorkflowClient?哪个是推荐的方法?

创建 Worker 对象以轮询任务列表的推荐方法是什么?

请不要误会我如果我问了什么毫无意义的事情

0 投票
2 回答
126 浏览

cadence-workflow - 我们可以说 Activity 在节奏或时间上是容错的吗

我有两个名为 w1 和 w2 的工人

W1 主持活动 A1。

如果 w1 出现故障,是否会在 w2 上自动创建以处理服务器故障转移?

我试过了,但它说 ActivityTimeOut 错误并且工作流失败。

难道我们没有任何选择来处理这样的故障转移吗?

在这种情况下,活动不会超时。由于工人崩溃,它没有在预期的时间内响应节奏服务。这是将其称为 ActivityTimeOut 的正确方法吗?相反,我们不能像 WorkerCrash 那样解决它吗?

0 投票
1 回答
64 浏览

cadence-workflow - 如果代码中没有指定任务列表,活动如何排队?

在 java 示例HelloActiviy.java中,我的工作流方法单独配置了名为HelloActivity. ActivityMethod 没有配置任务列表,但它仍然由轮询任务队列的工作人员拾取HelloActivity

我想知道工人是如何挑选活动的?

活动在哪个队列中排队?

HelloActivity它在taskList下排队吗?

0 投票
1 回答
48 浏览

cadence-workflow - 对于循环调用的活动,该活动的重试策略是否适用于每次运行?

对于具有活动 A 的给定工作流,最大重试次数设置为 3,如果我有以下代码:

在这种情况下,类型是 ["type1", "type2", "type3"] 因此,如果 activityA 成功处理 type1 并开始处理 type2 并由于某种原因失败,

  1. 每次运行一个类型时,activityA 的重试策略是否会应用,还是会在所有活动类型中重试 3 次?
  2. 如果工作流在执行 type2 时失败,工作流是从头开始重新处理 type1 还是从 type2 开始?
0 投票
0 回答
119 浏览

temporal - 时间/节奏性能调整

谁能帮我理解以下情况。我有 1 名工人的配置:

如果我将 MaxConcurrentWorkflowTaskExecutionSize 和 MaxConcurrentActivityExecutionSize 设置为 1024,worker 开始工作太慢了。我认为增加这两个选项将有助于处理更多的活动和工作流任务,但它的工作方式不同。工人有足够的 CPU/RAM,而且他根本没有超载。

从 Temporal UI 我能够捕捉到一些工作流在这种历史状态下冻结了一段时间:

我也调整了这样的匹配参数:

此外,当我不时使用不同配置的工作人员时,我会在历史服务中遇到此类错误:

目标是了解我应该调整什么(选项/配置)以从 Temporal 获得更多性能。

我将不胜感激有关在哪里查看问题的任何提示。

0 投票
1 回答
80 浏览

jenkins - 使用 jenkins 部署的应用程序无法访问临时 io 服务器

我有一个由 Jenkins 在server1 .domain.com 中部署的 Golang 应用程序,它连接到在server2 .domain.com上运行的临时服务器。

接下来是 Makefile 的外观。

应用程序在创建客户端时总是失败,因为它没有到达运行临时服务器的服务器。

这只有在使用 Jenkins 时才会出现问题,如果我转到 Jenkins 部署代码的目录并执行“ make run ”,应用程序会毫无问题地创建临时客户端。

我需要了解这里发生了什么,为此失去了头发……感谢您的帮助:)

0 投票
1 回答
185 浏览

architecture - 时间/节奏编排概念

在当前的应用程序中,我们有三个服务:

  • 发票
  • 银行转帐:调用外部 API,这可能需要一分钟左右,具体取决于队列
  • ledger :创建借记贷记账本的内部微服务

为了交流,我们有一个编排传奇。该流程基本上是使用发票作为编排器:

  1. 发票服务向rabbitmq发布消息,要求支付发票X
  2. 银行转账服务监听消息,获取发票 X
  3. 银行转账服务处理转账(调用银行的 API)。付款成功时,向rabbitmq发布消息'Invoice Xpaid'
  4. 发票服务收听消息“发票 X 已付款”
  5. 发票服务发布消息“为发票 X 创建分类帐”并发布到 rabbitmq
  6. 账本服务从 rabbitmq 监听消息“为发票 X 创建账本”
  7. 分类帐服务创建适当的分类帐日记帐借记/贷记,然后发布“为发票 X 创建的分类帐”
  8. 发票服务侦听消息“为发票 X 创建的分类帐”,然后完成(关闭)交易

问题 1 如果我使用的是Temporal或 cadence(只是在寻找它),它们不会像上面那样依赖 pub-sub 模式。那么我该如何实现呢?

我在想(CMIIW):

  • 创造InvoiceActivity
  • 创造BankTransferActivity
  • 创造LedgerActivity
  • 创造InvoicePaymentWorkflow

所有这些都是发票服务应用程序的一部分Workflow但是现在银行转账服务和账本服务Activity不再依赖 pub-sub,而是提供 API 来处理转账(在银行转账方面,它实际上是外部银行调用的代理 API),账本服务提供 API 来创建借记/贷记杂志。CMIIW,在这种情况下,我们不再需要在银行转账服务账本服务上创建监听器(或节奏/时间活动) ,我们需要提供 API。

还是我想错了?应该有一些关于银行转账服务分类帐服务的活动?但如果是这样,发票服务如何触发和安排工作流程?

问题2 但是现在调用是异步的。日志分类帐创建实际上有一些验证,有时负载很重,因此取决于队列上的消息,从消息到 rabbitmq 到实际创建日志可能需要长达 5 分钟。在 API 调用中,这将是一个超时。

问题 3 那么比赛条件呢?一些期刊要按顺序创建。使用rabbitmq,我们可以通过某种技术来实现这一点(队列中的单个消费者,类似于kafka 主题)。

问题4 另外,补偿交易如何处理?如果账本失败,我们必须做点什么。在我们的例子中,我们必须通知会计人员,因为银行转账已经处理并且无法撤销。

问题5 对于一些子公司,当账本失效时,我们仍然有控制权,所以我们可以补偿/提取发票金额,并将金额返还给母公司。假设我们在银行转账服务上有一个监听器,我们如何触发补偿 API?

在 cadence / Temporal中,这是合适的用例吗?如果是这样,如何处理上述问题?

谢谢

0 投票
2 回答
108 浏览

cadence-workflow - Cadence 中有哪些不同的服务以及历史服务如何作为核心工作流引擎工作?

文档展示了 Cadence 工作流服务的基本架构:它具有三种不同的微服务:FE、MS 和 HS。那么它们是什么以及它们如何协同工作?