我们构建了Conductor来帮助我们协调Netflix基于微服务的流程,具有以下功能:
允许创建流程/业务流,其中每个单独的任务都可以由相同/不同的微服务实现。
能够暂停、恢复、重新启动、重试和终止工作流,实现全面的操作控制。
具有合理默认值的各种可配置属性可微调工作流和任务执行,如速率限制、并发执行限制等。
使用点对点任务编排,我们发现很难根据不断增长的业务需求和复杂性进行扩展。发布/订阅模式适用于最简单的流程,但很快强调了与该方法相关的一些问题:
通常,围绕输入/输出、SLA等存在紧密耦合和假设,使其更难适应不断变化的需求。
几乎没有办法系统地回答“我们对进程X做了多少”?