问题标签 [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.
cadence-workflow - 哪一个适合完整的工作流程设计 Temporal 或 Cadence
我想设计一个完整的端到端工作流编排引擎。
它有以下要求
- 线性工作流程
- 并行工作流程- 我想并行执行 n 个活动。验证所有活动的结果后,我想进入下一个状态,否则工作流程将失败
- 批处理- 假设我有 30 个活动要完成,但我希望以批处理方式完成。就像如果窗口大小为 5,那么我想一次执行 5 个活动 T。执行所有活动并验证结果将继续进行或使工作流失败。
- 循环- 想无限地运行一个活动,直到满足某些条件
- 子工作流程
- 轮询
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
cadence-workflow - 如何有效使用Worker、WorkflowClient
产品用例- 我们的产品有一个典型的用例,我们将有 n 个用户。每个用户将有 n 个工作流,并且每个工作流可以在任何时间(n 次)运行。
我希望这是任何工作流产品的典型用例。
我可以使用域来区分用户(我的意思是为每个用户创建一个域)?
我可以为每个用户创建一个 WorkflowClient 来服务他的所有工作流执行吗?或者对于每个请求,我是否需要创建一个 WorkflowClient?哪个是推荐的方法?
创建 Worker 对象以轮询任务列表的推荐方法是什么?
请不要误会我如果我问了什么毫无意义的事情
cadence-workflow - 我们可以说 Activity 在节奏或时间上是容错的吗
我有两个名为 w1 和 w2 的工人
W1 主持活动 A1。
如果 w1 出现故障,是否会在 w2 上自动创建以处理服务器故障转移?
我试过了,但它说 ActivityTimeOut 错误并且工作流失败。
难道我们没有任何选择来处理这样的故障转移吗?
在这种情况下,活动不会超时。由于工人崩溃,它没有在预期的时间内响应节奏服务。这是将其称为 ActivityTimeOut 的正确方法吗?相反,我们不能像 WorkerCrash 那样解决它吗?
cadence-workflow - 如果代码中没有指定任务列表,活动如何排队?
在 java 示例HelloActiviy.java
中,我的工作流方法单独配置了名为HelloActivity
. ActivityMethod 没有配置任务列表,但它仍然由轮询任务队列的工作人员拾取HelloActivity
我想知道工人是如何挑选活动的?
活动在哪个队列中排队?
HelloActivity
它在taskList下排队吗?
cadence-workflow - 对于循环调用的活动,该活动的重试策略是否适用于每次运行?
对于具有活动 A 的给定工作流,最大重试次数设置为 3,如果我有以下代码:
在这种情况下,类型是 ["type1", "type2", "type3"] 因此,如果 activityA 成功处理 type1 并开始处理 type2 并由于某种原因失败,
- 每次运行一个类型时,activityA 的重试策略是否会应用,还是会在所有活动类型中重试 3 次?
- 如果工作流在执行 type2 时失败,工作流是从头开始重新处理 type1 还是从 type2 开始?
temporal - 时间/节奏性能调整
谁能帮我理解以下情况。我有 1 名工人的配置:
如果我将 MaxConcurrentWorkflowTaskExecutionSize 和 MaxConcurrentActivityExecutionSize 设置为 1024,worker 开始工作太慢了。我认为增加这两个选项将有助于处理更多的活动和工作流任务,但它的工作方式不同。工人有足够的 CPU/RAM,而且他根本没有超载。
从 Temporal UI 我能够捕捉到一些工作流在这种历史状态下冻结了一段时间:
我也调整了这样的匹配参数:
此外,当我不时使用不同配置的工作人员时,我会在历史服务中遇到此类错误:
目标是了解我应该调整什么(选项/配置)以从 Temporal 获得更多性能。
我将不胜感激有关在哪里查看问题的任何提示。
jenkins - 使用 jenkins 部署的应用程序无法访问临时 io 服务器
我有一个由 Jenkins 在server1 .domain.com 中部署的 Golang 应用程序,它连接到在server2 .domain.com上运行的临时服务器。
接下来是 Makefile 的外观。
应用程序在创建客户端时总是失败,因为它没有到达运行临时服务器的服务器。
这只有在使用 Jenkins 时才会出现问题,如果我转到 Jenkins 部署代码的目录并执行“ make run ”,应用程序会毫无问题地创建临时客户端。
我需要了解这里发生了什么,为此失去了头发……感谢您的帮助:)
architecture - 时间/节奏编排概念
在当前的应用程序中,我们有三个服务:
- 发票
- 银行转帐:调用外部 API,这可能需要一分钟左右,具体取决于队列
- ledger :创建借记贷记账本的内部微服务
为了交流,我们有一个编排传奇。该流程基本上是使用发票作为编排器:
- 发票服务向rabbitmq发布消息,要求支付发票X
- 银行转账服务监听消息,获取发票 X
- 银行转账服务处理转账(调用银行的 API)。付款成功时,向rabbitmq发布消息'Invoice Xpaid'
- 发票服务收听消息“发票 X 已付款”
- 发票服务发布消息“为发票 X 创建分类帐”并发布到 rabbitmq
- 账本服务从 rabbitmq 监听消息“为发票 X 创建账本”
- 分类帐服务创建适当的分类帐日记帐借记/贷记,然后发布“为发票 X 创建的分类帐”
- 发票服务侦听消息“为发票 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中,这是合适的用例吗?如果是这样,如何处理上述问题?
谢谢
cadence-workflow - Cadence 中有哪些不同的服务以及历史服务如何作为核心工作流引擎工作?
该文档展示了 Cadence 工作流服务的基本架构:它具有三种不同的微服务:FE、MS 和 HS。那么它们是什么以及它们如何协同工作?