【发布时间】:2018-10-03 12:26:29
【问题描述】:
我正在寻找一个编排框架/引擎/工具包来替换/升级现有软件,主要是因为可扩展性限制。我所说的编排是指通用任务和工作流的异步和分布式执行。
更具体地说,要求几乎是这些:
- 通用任务的包装和执行,如果依赖于语言,则使用 Java
- 用于按需触发任务和工作流的 API
- 调度也不错
- 支持分布式架构和可扩展性(主要用于大量小任务)
- 持久性和弹性
- 高级工作流配置功能(执行this,然后并行执行这 3 个任务,然后执行 this,具有优先级、依赖关系...)
- 监控和管理 UI(或至少 API)
现有系统是一种老式的单体服务(在 Java 中),其中包含大部分内容,包括执行逻辑本身,应该尽可能保持原样。
有没有人遇到过类似的问题?在我看来,它应该很常见,如果我必须完全自己实现它会很奇怪。我在这里发现了一些问题(如this 和this)讨论编排和编排系统的理论,但没有实现它的工具的真实示例。此外,我认为我们并不是在谈论微服务——这些任务并不冗长和繁重,它们只是很多,在后台运行,执行多种类型的短作业。我不会为每种工作类型创建服务。
我现在也不在寻找云和容器服务 - 据我了解,部署是一个不同的问题。
我得到的最接近的是Netflix Conductor engine,它通过运行一个编排服务器来管理大部分需求,该服务器管理在 servlet(或任何语言的任何 Web 服务 - 一个加号)中实现的任务。然而,它似乎主要是为在工作流中安排繁重的任务而不是运行大量的小任务而构建的,这让我想知道在 servlet 中调用许多小任务的开销是多少。
是否有人对我可以使用的 Conductor 或其他工具有经验或有任何意见?甚至是我解决问题的全部方法?
编辑:我意识到这是一种“需要研究建议”,所以让我们简单地把它放在 3 个问题中:
- 我是否适合为上述要求寻找编排解决方案?
- 有人有使用过 Netflix 指挥 的经验吗?有什么反馈吗?
- 它有好的竞争对手吗?
【问题讨论】:
-
你看过 Apache Camel 吗?它是 EIP 的事实上的实现,它可以完成您列表中的所有事情等等?
标签: java frameworks workflow orchestration