Periodic Execution

容错分布式可扩展有状态无 DSL 可编程
定期任务,也被称为分布式 Cron,很多实际的业务逻辑都会有这个需求,Cadence 的优势在于它可以提供复杂的错误处理,重试策略以及对于执行历史的查询。除此之外,Cadence 还有另一个比较重要的优势在于其所能支持的规模,Uber 内部对于 Cadence 是充分信任的,它为每个客户创建定期的工作流,实现不用额外的批处理框架实现 1亿多的并行 Cron。

对我们团队来说:解决了分布式的底层问题,并提供了跨语言级接口。

Scenes

  • Uber 后台服务每分钟重新计算一次每个城市中的各种统计信息
  • 日报,周报,月报的生成

Microservice Orchestration

对于某些业务流程来说,可能是由多个微服务调用实现的。这里就要求哪怕是下游的服务出现了问题,业务流程的调用也要尽量成功。亦或是在某些情况下,应该尝试执行补偿回滚逻辑,而不是一遍一遍的重试。所以 Cadence 就比较适合处理这种情况,其内置了对于无限指数次重试的支持,并且简化了补偿回滚的逻辑。并且我们可以通过 Cadence 来观测每一个单独请求的当前状态,也就是整个 workflow 都完全可见。

Scenes

Know more

Polling

轮询可以执行定期的操作以检查状态的变化,Cadence 支持长时间的任务运行和无限制的重试。

Scenes

  • 网络,主机,服务的监控
  • 轮询外部的 API 以使特定资源可用

Event Driven Application

Cadence 支持异步事件,所以可以利用这个特性来实现一些事件驱动的应用。

Scenes

  • 积分系统,在过程中积累积分,并在适当情况下使用积分
  • 安全检测,workflow 对于消费者行为产生的事件作出反应

Storage Scan

因为 Cadence 内部会对所有的 workflow 进行定期的扫描,其采取的这种扫描方式具有弹性,并且是可以被记录上一次扫描停止的位置及状态的,所以可以通过其内部的扫描机制来对于大量的数据集进行扫描。

Batch Job 👍

因为很对批处理任务并不只是在处理数据,如果在批处理过程中有对外部 API 的请求或依赖,那么就可以使用 Cadence 来解决就更适合。

Infrastructure Provisioning

在进行基础架构的过程中,可能会涉及到很多操作,同时可能会遇到一些间歇性的故障。Cadence 可以通过规范执行流程以及对于故障的修补或重试,以达到更简易的基础架构的配置,并且 Cadence 可以将 activity 路由到指定的 workflow 或主机中。

Scenes

CI/CD and Deployment

在做 CI/CD 或是将应用程序部署到容器或是虚拟机,物理机这个过程中,也会面临着滚动升级,金丝雀部署,回滚等需求。Cadence 可以提供必要的支持,使开发人员专注于业务逻辑。

Scenes

  • 基础设施,服务的部署
  • 物联网设备的更新(树莓派)

Interactive Application

Scenes

  • 作为 AR 或 VR 应用的底层任务编排系统
  • 通过 Blockly 模块化的生成一些简单的 workflow,并交给 Cadence 执行。