Uber发布工作流编排平台Cadence的主要版本
Uber在开发了六年之后,发布了其工作流编排平台Cadence的主要版本。Cadence是一个开源平台,用于大规模构建有状态服务,并使用原生编程语言如Java和Go(官方支持),以及Python和Ruby(社区支持)来定义工作流。Uber和其他公司使用Cadence来处理复杂的有状态工作流,以提高效率和可靠性。
Cadence的特点与优势
Cadence的独特之处在于它允许用户直接使用编程语言来定义工作流,而不是依赖传统的DSL(领域特定语言)或配置文件。Uber的高级经理Ender Demirkaya解释说,传统的DSL或配置文件方法虽然简化了工作流编排,但随着用例和复杂性的增加,这些方法变得不再实用。Cadence通过允许用户像编写程序一样自由地编写工作流,解决了这一问题。
Cadence的架构与组件
一个典型的Cadence应用包括Cadence服务、工作流和活动工作者,以及外部客户端。除了Cadence服务之外,其他组件是应用特定的,负责定义和配置工作流,并执行工作流步骤。Cadence服务是一个高度可扩展的多租户系统,提供gRPC API,并支持核心的工作流编排功能。它还提供了一个无状态的API前端和内部工作者,用于执行特定的Cadence工作流,如归档。
数据存储与部署
Cadence服务将数据存储在持久化数据存储中,支持多种数据库,包括Apache Cassandra、MySQL、PostgreSQL、CockroachDB和TiDB。此外,ElasticSearch或OpenSearch集群可用于高级搜索功能。在Uber,Cadence支持超过一千个服务,每月管理超过120亿个工作流执行。
未来的改进计划
在1.0版本发布后,团队计划在可用性、可观察性和效率方面进行改进。具体包括改进文档、代码示例和应用程序代码质量检查,扩展报告的指标和可用的警报,并更好地集成到Web界面中。此外,团队还将致力于降低数据库负载和增加存储容量。
社区与衍生项目
Cadence是Uber开发的开源项目,但目前已有超过700个分支,包括Temporal。这表明Cadence在社区中得到了广泛的应用和认可。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。