cadence-workflow/cadence
GitHub: cadence-workflow/cadence
Cadence 是一个分布式、可扩展且容错的编排引擎,用于可靠地执行长时间运行的异步业务逻辑工作流。
Stars: 9340 | Forks: 898
# Cadence
[](https://github.com/cadence-workflow/cadence/actions/workflows/ci-checks.yml)
[](https://codecov.io/gh/cadence-workflow/cadence)
[](https://communityinviter.com/apps/cloud-native/cncf)
[](https://github.com/cadence-workflow/cadence/releases)
[](http://www.apache.org/licenses/LICENSE-2.0)
Cadence Workflow 是一个自 2017 年以来的开源平台,用于构建和运行可扩展、容错且长时间运行的工作流。此存储库包含核心编排引擎和工具,包括 CLI、schema 管理、benchmark 和 canary。
## 入门指南
Cadence 后端由多个服务、一个数据库(Cassandra/MySQL/PostgreSQL)以及可选的 Kafka+Elasticsearch 组成。
作为用户,您需要一个包含您的工作流实现的 worker。
一旦您运行了 Cadence 后端和 worker,您就可以使用 SDK 或通过 CLI 来触发工作流。
1. 在本地启动 cadence 后端组件
```
docker compose -f docker/docker-compose.yml up
```
2. 运行示例
试试 [Go](https://github.com/cadence-workflow/cadence-samples) 或 [Java](https://github.com/cadence-workflow/cadence-java-samples) 的示例配方。
3. 访问 UI
访问 http://localhost:8088 以检查工作流历史记录和详细跟踪。
### Kubernetes 部署
为了获得引导式的 Kubernetes 安装体验,[KubeStellar Console](https://console.kubestellar.io/missions/install-cadence-workflow) 提供了一个分步任务,使用来自 [cadence-charts](https://github.com/cadence-workflow/cadence-charts) 的官方 Helm chart 部署 Cadence。该任务包括预检查、验证、故障排除和回滚支持。
### 客户端库
您可以使用我们的某个客户端库来实现您的工作流:
- [官方 Cadence Go SDK](https://github.com/cadence-workflow/cadence-go-client)
- [官方 Cadence Java SDK](https://github.com/cadence-workflow/cadence-java-client)
还有社区开发的非官方 [Python](https://github.com/firdaus/cadence-python) 和 [Ruby](https://github.com/coinbase/cadence-ruby) SDK。
您还可以使用 [iWF](https://github.com/indeedeng/iwf) 作为 Cadence 之上的 DSL 框架。
### CLI
Cadence CLI 可用于操作工作流、tasklist、domain 甚至集群。
您可以通过以下方式安装 Cadence CLI:
* 使用 brew 安装 CLI:`brew install cadence-workflow`
* 如果您需要通过 homebrew 安装旧版本的 CLI,请按照[说明](https://github.com/cadence-workflow/cadence/discussions/4457)进行操作。通常仅当您运行的服务器版本过于老旧时才需要这样做。
* 使用 docker 镜像作为 CLI:`docker run --rm ubercadence/cli:` 或 `docker run --rm ubercadence/cli:master ` 。当您想尝试新功能时,请务必更新您的镜像:`docker pull ubercadence/cli:master `
* 自己构建 CLI 二进制文件,检出存储库并运行 `make cadence` 以构建所有工具。有关 make 命令的前置条件,请参见 [CONTRIBUTING](CONTRIBUTING.md)。
* 自己构建 CLI 镜像,请参见[说明](docker/README.md#diy-building-an-image-for-any-tag-or-branch)
Cadence CLI 是一个功能强大的工具。命令按 tab 键组织。例如 `workflow`->`batch`->`start`,或 `admin`->`workflow`->`describe`。
请阅读[文档](https://cadenceworkflow.io/docs/cli/#documentation),并始终尝试在任何 tab 上使用 `--help` 来学习和探索。
### UI
试试 [Cadence Web UI](https://github.com/cadence-workflow/cadence-web) 以在 Cadence 上查看您的工作流。
(如果您使用 docker compose 运行 Cadence,这已经在 localhost:8088 上可用)
### 此存储库中的其他二进制文件
#### Bench/压力测试工作流工具
参见 [bench 文档](./bench/README.md)。
#### 定期功能健康检查工作流工具(又名 Canary)
参见 [canary 文档](./canary/README.md)。
#### 用于 SQL 和 Cassandra 的 Schema 工具
这些工具用于[手动设置或升级数据库 schema](docs/persistence.md)
* 如果服务器使用 Cassandra 运行,请使用 [Cadence Cassandra tool](tools/cassandra/README.md)
* 如果服务器使用 SQL 数据库运行,请使用 [Cadence SQL tool](tools/sql/README.md)
获取 schema 工具最简单的方法是通过 homebrew。
`brew install cadence-workflow` 也包含 `cadence-sql-tool` 和 `cadence-cassandra-tool`。
* schema 文件位于 `/usr/local/etc/cadence/schema/`。
* 要升级,请确保首先删除旧的 ElasticSearch schema:`mv /usr/local/etc/cadence/schema/elasticsearch /usr/local/etc/cadence/schema/elasticsearch.old && brew upgrade cadence-workflow`。否则 ElasticSearch schema 可能无法更新。
* 如果您需要通过 homebrew 安装旧版本的 schema 工具,请按照[说明](https://github.com/cadence-workflow/cadence/discussions/4457)进行操作。
但是,更简单的方法是使用新版本的 schema 工具配合旧版本的 schema。
您所需要做的就是从此存储库中检出旧版本的 schema。运行 `git checkout v0.21.3` 以获取 [schema 文件夹](/schema) 中的 v0.21.3 schema。
### 学习资源
请观看 Maxim 在 [Data@Scale Conference](https://atscaleconference.com/videos/cadence-microservice-architecture-beyond-requestreply) 上的演讲,了解 Cadence 的架构概览。
访问 [cadenceworkflow.io](https://cadenceworkflow.io) 了解更多关于 Cadence 的信息。加入我们的 [Cadence 文档](https://github.com/cadence-workflow/Cadence-Docs) 项目。欢迎在此处提出 Issue 或 Pull Request。
## 随时间变化的 Star 数
[](https://starchart.cc/uber/cadence)
## 许可证
Apache 2.0 许可证,详情请见 [LICENSE](https://github.com/cadence-workflow/cadence/blob/master/LICENSE)。
标签:EVTX分析, JS文件枚举, 任务编排, 分布式系统, 响应大小分析, 子域名突变, 工作流引擎, 微服务架构, 日志审计, 测试用例, 请求拦截