java - 编排引擎和框架?

标签 java frameworks workflow orchestration

我正在寻找一个编排框架/引擎/工具包来替换/升级现有软件,主要是因为可扩展性限制。我所说的编排是指通用任务和工作流程的异步和分布式执行。

更具体地说,要求大致如下:

  • 如果语言相关,则使用 Java 封装和执行通用任务
  • 用于按需触发任务和工作流程的 API
  • 日程安排也很好
  • 支持分布式架构和可扩展性(主要针对大量小任务)
  • 毅力和韧性
  • 高级工作流程配置功能(执行这个,然后并行执行这 3 个任务,然后这个,具有优先级、依赖关系...)
  • 监控和管理 UI(或至少 API)

现有系统是一个老式的整体服务(Java),它拥有大部分功能,包括执行逻辑本身,应尽可能保持不变。

有人有类似问题的经验吗?在我看来,这应该是很常见的,如果我必须自己完全实现它就会很奇怪。我在这里发现了一些问题(例如 thisthis )讨论编排和编排系统的理论,但不是实现它的工具的真实示例。另外,我认为我们并不是在谈论微服务 - 任务并不漫长且繁重,它们只是很多,在后台运行,执行多种类型的短作业。我不会为每种工作类型创建服务。

目前我也寻找云和容器服务 - 据我了解,部署是一个不同的问题。

我得到的最接近的是 Netflix Conductor engine ,它通过运行一个编排服务器来满足大多数要求,该服务器管理在 servlet(或任何语言的任何 Web 服务 - 一个加号)中实现的任务。然而,它似乎主要是为了在工作流程中安排繁重的任务而不是运行大量的小任务,这让我想知道例如在 servlet 中调用许多小任务的开销是多少。

有人对 Conductor 或我可以使用的其他工具有经验或有任何意见吗?或者甚至是我解决问题的整个方法?

编辑:我意识到这是一种“需要研究建议”,所以让我们简单地将其分为三个问题:

  1. 我为满足上述要求寻找编排解决方案是否正确?
  2. 有人有使用 Netflix Conductor 的经验吗?有任何反馈吗?
  3. 它有好的竞争对手吗?

最佳答案

Netflix Conductor 的主要竞争对手是 Temporal Workflow 。通过使用代码而不是 JSON DSL 来实现编排逻辑,它的扩展性更好,并且对开发人员更加友好。

它还可以通过实现特定的优化(本地 Activity )来处理细粒度的任务,这些优化允许将多个小任务批处理到单个数据库更新中。

Temporal 已经在 Uber、Coinbase、HashiCorp、Dagadog、Stripe 和其他数百家公司进行了五年多的生产强化。

关于java - 编排引擎和框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49981408/

相关文章:

java - 自定义键盘的候选 View 会扰乱 WhatsApp 和其他应用布局

java - SVG 到 Java 的 Path2d 解析器

ios - 每个框架内的 module.modulemap 文件中的 export * 是什么?

ruby-on-rails - Git/Rails/Shared Hosting (Dreamhost) 工作流程

Git 作为部署、开发和备份

mercurial - 这个 Mercurial 工作流程 : named branch "dead" head? 有什么缺点吗

java - 如何编写一个接受多个客户端Socket的ServerSocket?

java - 如何在 Vaadin Binder 中确认验证

php - 开发 Laravel 3 和 Laravel 4

ios - 使现有项目成为框架 iOS