Cadence Web 界面
Cadence 是我们在 Uber 工程团队开发的一个分布式、可扩展、持久且高可用的编排引擎,用于以可扩展和弹性的方式执行异步长时间运行的业务逻辑。
这个 Web 界面用于查看来自 Cadence 的工作流,查看正在运行的内容,以及探索和调试工作流执行。
入门指南
配置
如果需要更改默认值,请设置以下环境变量
变量 | 描述 | 默认值 |
---|---|---|
CADENCE_TCHANNEL_PEERS | 以逗号分隔的 tchannel 对等节点列表 | 127.0.0.1:7933 |
CADENCE_TCHANNEL_SERVICE | 要调用的 cadence tchannel 服务名称 | cadence-frontend |
CADENCE_WEB_PORT | 提供服务的 HTTP 端口 | 8088 |
CADENCE_EXTERNAL_SCRIPTS | 在 UI 中提供的额外 JavaScript 标签 | |
ENABLE_AUTH | 启用身份验证功能 | false |
AUTH_TYPE | 当前支持 ADMIN_JWT | '' |
AUTH_ADMIN_JWT_PRIVATE_KEY | ADMIN_JWT 类型的 JWT 签名私钥 | '' |
本地运行
cadence-web
需要 node v10.22.1
或更高版本才能正确运行。cadence-web
使用所有标准的 npm 脚本 来安装依赖项、运行服务器和运行测试。
为了提供一致的环境,我们建议在开发中使用 Docker。我们使用 docker-compose 为远程容器提供默认配置。
使用 VSCode 开发容器
- 在 VSCode 中设置 Remote Containers 插件。
- 在 VSCode 中打开 cadence-web 目录。
- 使用命令面板选择"在容器中重新打开文件夹"选项。执行此操作时,
npm install
应该会在容器中自动运行。 - 在容器中使用
npm run dev
运行应用程序。 - 打开
localhost:8088
(或您定义的自定义 Cadence Web 端口)以加载 Web 应用程序。
使用 docker-compose 启动开发容器
要在代码更改时启动带有实时重载的本地服务器,可以运行 docker-compose up
。
对于开发和为 cadence-web
做贡献,请参阅 贡献指南。
您也可以通过拉取 ubercadence/web 来使用 Docker。它也包含在 Cadence 服务器的 本地 Docker 设置 中。
API
如果您需要扩展 cadence-web
以向服务器添加中间件,您可以将 cadence-web
安装为依赖项,它将导出尚未启动或配置的 Koa Web 服务器。它包括一个额外的 init
函数,该函数将组合内置中间件。这为您提供了在调用 init
之前或之后添加中间件的选项,以便分别在链的开头或结尾添加中间件。
init(options)
所有选项都是可选的。
useWebpack
:如果为 true
,启动 webpack 并添加中间件;如果为 false
,则假设 UI 包已经构建并静态提供。默认为 process.env.NODE_ENV === 'production'
。
logErrors
:如果为 true
,则将抛出的错误记录到 console.error
。默认为 true
。
例如,以下是如何使用 uber-statsd-client
添加请求计数指标:
var app = require('cadence-web');
var createStatsd = require('uber-statsd-client');
var sdc = createStatsd({
host: 'statsd.example.com',
});
app
.use(async function(ctx, next) {
sdc.increment('http.request');
await next();
})
.init()
.listen(7000);
webpack 配置也作为 webpackConfig
导出,可以在调用 init()
之前进行修改。
许可证
MIT 许可证,详情请参阅 LICENSE。