我们正在使用Uber Cadence,我们会定期在正式生产环境中遇到问题。设置如下:
有多个域,对于所有域,单个BEhtml" target="_blank">服务器注册为工作机。
日志中可见的是,有时在查询期间,节奏似乎对BE服务失去了粘性:
"msg":"query direct through matching failed on sticky, clearing sticky before attempting on non-sticky","service":"cadence-history","shard-id":1,"address":"10.1.1.111:7934"
"msg":"query directly though matching on non-sticky failed","service":"cadence-history","shard-id":1,"address":"10.1.1.111:7934"..."error":"code:deadline-exceeded message:timeout"
"msg":"query directly though matching on non-sticky failed","service":"cadence-history","shard-id":1,"address":"10.1.1.111:7934"..."error":"code:deadline-exceeded message:timeout"
"msg":"query directly though matching on non-sticky failed","service":"cadence-history","shard-id":1,"address":"10.1.1.111:7934"..."error":"code:deadline-exceeded message:timeout"
"msg":"query directly though matching on non-sticky failed","service":"cadence-history","shard-id":1,"address":"10.1.1.111:7934"..."error":"code:deadline-exceeded message:timeout"
...
同时在后端,没有任何可见。但是,在此期间,如果我检查cadence Web客户端上的轮询器,我看到任务列表在那里,但它不再被视为决策处理程序(http://localhost:8088/domains/mydomain/task-lists/mytasklist/pollers)。正因为如此,几乎整个环境都死了,因为这个决定没有什么可以进展的。唯一的选择是重新启动后端服务,并让它重新注册为辅助角色。
在这一点上,调查陷入僵局,所以一些帮助将不胜感激。
任何帮助都将非常受欢迎!谢谢!
有人知道一个工人或任务列表是如何失去决策处理能力的吗
当工作人员停止对决策任务进行轮询时,就会发生这种情况。例如,如果您为活动任务配置了仅限工作人员的轮询,那么它将显示如下。因此,显然,如果员工出于某种原因停止为决策任务投票,也会发生这种情况。
据我所知,当失去粘性时,cadence将检查另一个工人来重放工作流并继续
是的,只要有另一个工人轮询决策任务。请注意,查询任务被视为决策任务类型。(这是一个错误的设计,我们正在努力将其分离)。
从您的日志中:
"msg":"query directly though matching on non-sticky failed","service":"cadence-history","shard-id":1,"address":"10.1.1.111:7934"..."error":"code:deadline-exceeded message:timeout"
这意味着Cadence将Query任务分派给一个工人,工人接受了,但在超时时间内没有响应。
很有可能您的查询处理程序逻辑中存在一些错误。该错误导致决策工作器崩溃(这意味着Cadence java客户端也有一个错误,用户代码崩溃不应该导致决策工作器崩溃)。然后在您的工作器池的所有实例上进行查询任务循环,最终使您的所有决策工作器崩溃。
我想实现一个延迟任务,发现了一个cadence cron例子,如何用cadence实现一个延迟任务?
我在找一个微服务协调器,遇到了优步卡登斯。我已经阅读了文档,并在开发设置中使用了它。 我对生产场景有几个问题: > 是否建议为工作流及其使用的不同活动设置一个专用的任务列表?或者,我们应该为所有人使用一个任务列表?这个决定会影响可扩展性或性能吗? 当我们添加新的工作线程计算机时,在同一台计算机中为不同的活动/工作流运行所有工作线程是否是一种常见的做法?例: 或者我们应该在专用机器中运行每个活动/工
每个新创建的任务都是 org.gradle.api.DefaultTask 类型, org.gradle.api.Task 的标准实现,DefaultTask 所有的域都是私有的,意味着他们只能通过 setter 和 getter 方法来访问,庆幸的是Groovy提供了一些语法糖来允许你通过名字来使用域。 管理项目的版本 许多公司或者开源组织有他们自己的发布版本的措施,一般用主版本号和次版本号来表
用 ceph-deploy 建立一个集群后,你可以把客户端管理密钥和 Ceph 配置文件发给其他管理员,以便让他用 ceph 命令管理集群。 创建一管理主机 要允许一主机以管理员权限执行 Ceph 命令,用 admin 命令: ceph-deploy admin {host-name [host-name]...} 分发配置文件 要把改过的配置文件分发给集群内各主机,可用 config push
在San CLI中主要通过san serve和san build命令进行生产和开发环境的打包,San的脚手架工程内置了四个命令,包括启动本地服务、生产环境打包、打包分析、现代模式打包等,脚手架工程的package.json内可执行的命令有: npm run start // 打包+启动本地服务 npm run build // 打包发布 npm run analyzer // 打包分析 npm r
任务管理(又称 构建)工具 任务管理/构建 工具: Gulp Grunt Tasking/build and more tools: Brunch Mimosa