当前位置: 首页 > 知识库问答 >
问题:

由于优步凯德斯的连续轮询而导致的工作流工作者的扩展限制?

邢宏浚
2023-03-14

我正在评估实施业务协调的节奏。我了解到,工人们不断轮询任务列表,寻找要执行的任务。我在这里担心的是,它会导致任何规模问题吗?工作者总是很忙,不断轮询某些数据库,同时还需要执行业务逻辑,因此是否有可能耗尽资源,然后崩溃或放弃要执行的任务?

当我们有数百万个工作流时,这种轮询机制如何扩展?当我们在任务列表中有数百万个任务时,这会导致执行工作流代码的延迟吗?

共有2个答案

宋勇
2023-03-14

节奏和时间使用 gRPC 上的长轮询来侦听任务队列。因此,如果队列中没有消息,则轮询请求每分钟返回一次。这样,工作人员就不会因为轮询而消耗过多的资源。此外,由于匹配服务实现的各种优化,大多数轮询调用从不导致对数据库的调用。

打开的工作流的数量根本不会影响轮询性能,因为其中许多工作流可以被动地等待外部事件的计时器。工作流每秒执行的操作数定义了必须交付给工作人员的任务数。如果群集和辅助角色已正确预配,则即使任务率很高,也不应导致任何问题。

储毅
2023-03-14

除了Maxim的答案之外,还有一些指针 - 只要您正确设置,节奏/时间就不会有缩放问题。

当您在tasklist(任务队列)中有数百万个任务,并且需要运行数千个工作人员来处理这些任务时,请确保您配置了具有更多分区的可扩展任务列表。

本质上,默认情况下,任务列表只使用一个分区,该分区映射到一个数据库分区(如果使用Cassandra或多个SQL或其他非关系型数据库),并由一个匹配的主机拥有。因此,它的可扩展性不足以服务于数千个工作主机和数百万个任务。因此,您需要通过添加更多分区来扩展任务列表。否则匹配的主机将运行得太热,数据库分区将是热分区(并且具有高延迟)。

请参阅有关如何启用可缩放任务列表功能的文档 #scale:

 类似资料:
  • 我正在尝试扩展com.day.cq.dam.core.process.ThumbnailProcess类。 我使用的是Java JDK 1.8.0_65、Maven 3.0.5和Adobe AEM6.1 当我编译代码时,我会得到以下错误: [错误]无法在项目my.pack.common.process上执行目标org.apache.felix:maven-scr-plugin:1.20.0:scr

  • 问题内容: 我有两个工作: 上载 发射实例 我想使 Launch-instance 依赖于另一个,以便触发 Launch-instance 自动导致上 载 首先运行。 我可以使用内置的Jenkins功能还是使用插件来实现? 请注意,我 不 希望 上传 总是触发 启动实例 ,这是“建等项目后建”的选项 启动实例 会做。我想要的东西更 类似于 Ant中的 attribute 如何工作 。 问题答案:

  • 在设计和开发扩展包时,我们总是希望扩展包在我们给予一定的输入时,完成特定的工作并返回结果。这个过程可以由以下几种工作模式来完成: 入口程序完成全部工作 如果我们的插件不需要任何用户输入,而且只要一次性的执行一些主进程逻辑,我们可以将所有工作放在 main.js 的 load 生命周期回调里: // main.js module.exports = { load () { let fs

  • 问题内容: 我试图重命名哈德森/詹金斯的工作。但是,它无法重命名。 有什么办法可以重命名工作吗? 问题答案: 您可以按照以下步骤通过jenkins UI重命名选定的作业: 另一种方式是在对重命名的目录服务器,然后的。

  • 我有一个 Cadence 工作流,我需要轮询外部 AWS API,直到特定资源转换,这可能需要一些时间。我假设我应该将每个单独的“checkStatus”请求设置为活动,并让工作流执行睡眠/检查循环。但是,这意味着我的工作流历史记录中可能有无限数量的活动调用。这令人担忧吗?有没有更好的方法来实现这一点?

  • 在WildFly 8-1上,我的webapps目录中有和。 我已配置: 我有以下JSF。 其中是 更新: 应Guaido79的请求,我的: