0

我正在设计一个将接收请求的服务,该请求只能执行一次(由于唯一的 ID 存在,可以多次接收)。

流程是:

外部世界 -> HTTP -> [Myservice 的一组实例] -> HTTP -> Vendor services

所以,我通过 HTTP 接收到一堆请求,我希望进行一些转换、检查、将请求存储在数据库中并通过 HTTP 发送到供应商服务。

我的问题是:

在我的服务中实现存储转发模式的有效方法是什么需要的时间?


问题:

  • 如果 myservice 的其中一个实例在向供应商服务发送请求时出现故障怎么办?
  • 如果有一堆请求没有被转发,我将如何监控?
  • 如何避免另一个编排服务?
  • 如何避免另一个单实例服务有效地监视数据库并转发任何尚未转发的请求。
  • 如何最小化外部依赖——例如,我知道这里的某种队列可能有助于解决这个问题,但我想看看我是否可以避免这种情况。
4

1 回答 1

0

我建议不要使用NIH综合症,并依赖于成熟的技术,该技术可以满足您开箱即用的所有可靠性要求。

Cadence Workflow能够以最小的努力支持您的用例。

Cadence 提供了许多构建自定义任务编排解决方案难以匹敌的特性:

  • 建立了指数重试,具有无限的过期间隔
  • 故障处理。例如,如果在配置的时间间隔内两次更新都不能成功,它允许执行通知另一个服务的任务。
  • 支持长时间运行的心跳操作
  • 能够实现复杂的任务依赖。例如,在不可恢复的故障 ( SAGA )的情况下实现调用链或补偿逻辑
  • 提供对当前更新状态的完整可见性。例如,当使用队列时,您都知道队列中是否有一些消息,并且您需要额外的数据库来跟踪整体进度。使用 Cadence 记录每个事件。
  • 能够取消飞行中的更新。
  • 分布式 CRON 支持

请参阅有关Cadence 编程模型的演示文稿。

于 2019-06-24T19:04:45.053 回答