【问题标题】:Workflow engine with events带有事件的工作流引擎
【发布时间】:2022-07-29 02:39:18
【问题描述】:

我正在研究一个工作流引擎来组织一些系统流程。

作为研究的一部分,我想构建一个小型工作流 poc:

工作流应该监听一些事件然后开始(假设客户 A 创建了)

流程是:

  1. 为客户 A 发布工作消息
  2. 收到客户 A 的工作消息响应
  3. 为客户 A 发布第二条工作消息
  4. 收到客户 A 的第二条工作消息响应
  5. 结束工作流

假设同时存在多个工作流,我如何确保每个响应都进入正确的工作流?

我想到了一些解决方案(我认为都不够好)

  1. 在 Rabbit 中为每个工作流创建动态队列,并作为消息的一部分添加响应队列
  2. 使用 Kafka 并阅读每条消息,丢弃不相关的消息。
  3. 响应将发布到工作流引擎的 api。

我很想听听更好的建议。

【问题讨论】:

    标签: architecture workflow event-driven-design


    【解决方案1】:

    这是一个有趣的问题,但它非常通用,分析潜在解决方案的正确方法是考虑多个方面:

    • 您要经营的规模是多少?
    • 创建工作流的频率是多少?例如,这些消息类似于用户个人资料更新或与您的网站的一般用户交互?如果工作流每天触发一次,与工作流每秒触发一次相比,您需要一个完全不同的架构。
    • 您希望系统是多租户的吗?如果是这种情况,您需要考虑一些隔离策略,以便一个客户的工作流程不会影响其他客户的工作流程。

    我认为,就像在任何架构决策中一样,您的目标是在可扩展性和成本之间取得良好的平衡,我相信考虑以上几点将有助于您在权衡中导航。

    为了成本效益,我相信如果您检查基于云的排队服务(例如 Amazon SQS)会有所帮助,因为您只需为数据传输付费,而不为队列本身付费。

    您还可以查看Amazon Lambda 以了解无服务器计算,这对于事件处理来说同样具有成本效益,因为您无需为始终启动并运行的虚拟机付费。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多