Cadence简介
Cadence是Uber开源的一个分布式、可扩展、持久化且高可用的编排工作流引擎,支持grpc API服务功能调用,提供了go和java sdk
便于统一管理多租户的持久化业务系统服务
框架
Cadence框架主要由两部分构成,一个是Cadence服务,一个是worker客户端
服务端
-
Frontend service
相当于网关,使用自己实现的TChannel协议和其他角色通信
-
History service
负责 workflow 状态变迁
-
Matching service
托管 tasklist 进行 task scheduling, dispatching
-
Worker service处理worker请求
客户端
-
Workflow Workers
注册到具体工作流,
-
Activity Workers
注册具体的执行活动,
-
Business Services
相当于网关,使用自己实现的TChannel协议和其他角色通信
-
Cadence CLI
集成了Cadence所有函数库,支持客户端直接调用
运行模式
Cadence服务实例可使用官方提供的docker-compose进行配置和部署,依赖于promethues监控组件和cassandra分布式数据库
在客户侧注册了cadence worker,在每次客户端执行activity前,worker都会进行一个PollForDecisionTask的操作,到service前端寻找匹配的空闲工作流,进行预占,然后返回可用的工作流信息,保证activity正常执行
优缺点
优势
在于集成了丰富的基础组件能力,提供了全套包括可视化能力,官方支持go java sdk,适用于复杂的分布式系统统一工作流管理
缺点
体量较大,依赖项较多,依赖于promethues监控组件和cassandra分布式数据库,不太适合单一服务使用