
后端任务调度工作流自动化微服务【免费下载链接】cadenceCadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way.项目地址https://gitcode.com/gh_mirrors/cad/cadence点击查看免费下载导读本文基于 Cadence 仓库中的 docs/setup/POSTGRES_SETUP.md 编写讲解如何在本地开发环境用 Docker 快速启动一个 PostgreSQL 实例并把它配置为 Cadence 分布式工作流编排引擎的持久化存储。读完本文你将掌握拉取并运行 PostgreSQL 容器、通过psql客户端完成连通性验证、把development_postgres.yaml配置文件中的连接参数与容器端口映射对齐以及用 docker-compose 一键拉起包含 PostgreSQL 的完整 Cadence 服务栈为后续 schema 初始化与本地联调铺平道路。为什么本地开发要用 PostgreSQLCadence 是一个分布式、可扩展、持久且高可用的编排引擎用于以可扩展和弹性方式执行异步长时间运行的业务逻辑。在本地开发场景中选择一款与生产环境一致的关系型数据库作为持久化存储可以最大程度降低本地跑得通、上线就出问题的风险。Cadence 仓库同时维护 MySQL 与 PostgreSQL 两套 SQL 存储支持schema 目录、配置示例和 docker-compose 文件都提供了对应的 PostgreSQL 变体因此本地使用 Docker 起一个 Postgres 是最低成本的验证方式。官方文档 POSTGRES_SETUP.md 的正文只有一条主线拉镜像、起容器、登录验证。但要让 PostgreSQL 真正被 Cadence 使用还需要补上三个环节数据库建库、schema 初始化、以及服务端配置指向。本文将依次展开。前置条件先装好 Docker 并清理旧容器文档在开头给出的前置条件非常直白先在你的机器上安装 Docker然后再安装 Postgres。注意文档中把Postgres误写成了MySQL其真实意图是提醒读者先具备容器运行时。此外文档特别强调确保所有 MySQL 容器已被终止并移除。因为 MySQL 与 PostgreSQL 默认都占用 5432 端口附近的服务端口MySQL 默认 3306PostgreSQL 默认 5432残留的旧容器可能造成端口冲突或数据混淆。可以使用以下命令检查并清理docker ps -a docker kill container_id docker rm container_id # 移除任何残留容器docker ps -a列出所有容器包括已停止的docker kill强制终止、docker rm删除容器。如果只想清理 Postgres 相关容器可在命令中结合docker ps -a | grep postgres过滤。拉取并运行 PostgreSQL 容器拉取官方镜像docker pull postgresdocker pull postgres不带 tag 时默认拉取postgres:latest。文档中的命令示例基于最新版镜像仓库内的 docker-compose-postgres.yml 则固定使用了postgres:17.4这一具体版本生产或复现环境建议像这样锁定版本号避免镜像漂移。运行容器并暴露 5432 端口mkdir -p ~/docker/volumes/postgres docker run --rm --name pg-docker -e POSTGRES_PASSWORDcadence -d -p 5432:5432 -v ~/docker/volumes/postgres:/var/lib/postgresql/data postgres逐参数解读这条核心命令参数含义--rm容器停止后自动删除自身文件系统避免残留--name pg-docker为容器命名便于后续docker exec/docker stop引用-e POSTGRES_PASSWORDcadence设置超级用户postgres的密码为cadence与仓库默认配置对齐-d后台detached运行立即返回容器 ID-p 5432:5432端口映射把容器内 5432 暴露到宿主机 5432这是文档强调的注意点-v ~/docker/volumes/postgres:/var/lib/postgresql/data数据卷挂载把 Postgres 数据文件持久化到宿主机~/docker/volumes/postgrespostgres镜像名可加 tag 如postgres:17.4关于数据目录需要特别说明PostgreSQL 17 及以上版本中官方镜像的数据目录默认是/var/lib/postgresql/data挂载卷时镜像会自动处理权限与初始化而更早版本常见的是/var/lib/postgresql/data的子目录路径若遇到数据目录冲突错误可参考镜像官方文档调整挂载点。--rm与数据卷配合使用不会丢失数据因为数据落在宿主机卷中。登录验证用 psql 客户端连入容器容器启动后在宿主机执行psql -h localhost -U postgres -d cadence-h localhost通过宿主机回环地址连接依赖-p 5432:5432的端口映射-U postgres以超级用户身份登录-d cadence指定要连接的数据库提示输入密码时输入上一步设置的cadence。如果宿主机没有安装 psql 客户端也可以直接进入容器执行docker exec -it pg-docker psql -U postgres成功登录后会看到postgres#提示符可执行\l查看数据库列表、\q退出。创建 Cadence 所需的两个数据库登录验证只是第一步。Cadence 的持久化层实际需要两个数据库默认存储库cadence和可见性visibility存储库cadence_visibility。这可以从仓库的 schema 定义确认schema/postgres/cadence/database.sqlCREATE DATABASE cadence;schema/postgres/visibility/database.sqlCREATE DATABASE cadence_visibility;在 psql 提示符下依次执行CREATE DATABASE cadence; CREATE DATABASE cadence_visibility;或者在宿主机直接执行psql -h localhost -U postgres -c CREATE DATABASE cadence; psql -h localhost -U postgres -c CREATE DATABASE cadence_visibility;注意使用ubercadence/server:master-auto-setup这类 auto-setup 镜像时容器启动会自动完成建库与 schema 初始化但本地直接以源码方式运行 cadence-server 时需要手动完成上述建库步骤。初始化 schema数据库建好之后还需要创建表结构与版本管理表。仓库把 PostgreSQL 的 schema 文件放在 schema/postgres 下其中cadence/与visibility/各自包含database.sql、schema.sql与versioned/版本化目录schema/postgres/embed.go 通过//go:embed cadence/* visibility/*把这些 schema 文件内嵌进二进制使得cadence-sql-tool与 auto-setup 镜像可以直接使用内嵌 schema。使用 cadence-sql-tool 完成初始化PostgreSQL 插件名为postgres示例以本地 5432 端口为准# 1. 创建数据库 ./cadence-sql-tool --ep 127.0.0.1 -p 5432 --plugin postgres create-database --db cadence ./cadence-sql-tool --ep 127.0.0.1 -p 5432 --plugin postgres create-database --db cadence_visibility # 2. 初始化 schema 版本表并升级到最新版本 ./cadence-sql-tool --ep 127.0.0.1 -p 5432 --plugin postgres --db cadence setup-schema -v 0.0 ./cadence-sql-tool --ep 127.0.0.1 -p 5432 --plugin postgres --db cadence update-schema -d ./schema/postgres/cadence/versioned ./cadence-sql-tool --ep 127.0.0.1 -p 5432 --plugin postgres --db cadence_visibility setup-schema -v 0.0 ./cadence-sql-tool --ep 127.0.0.1 -p 5432 --plugin postgres --db cadence_visibility update-schema -d ./schema/postgres/visibility/versioned关于这一流程的详细说明可参考 tools/sql/README.md其中明确提到这套 SQL 工具对底层存储引擎无感知同一套命令既可作用于 MySQL 也可作用于 PostgreSQL换--plugin postgres即可。schema 升级还支持--dryrun参数做预演update-schema ... -v x.x --dryrun只输出将要执行的变更而不实际写入。另外 tools/sql/README.md 也指出cadence-sql-tool二进制同样内置在ubercadence/server的 Docker 镜像中。让 Cadence 服务连接 PostgreSQL方式一修改本地配置文件仓库提供了现成的 PostgreSQL 配置模板 config/development_postgres.yaml其内容与上文 Docker 容器的端口、密码完全对应persistence: defaultStore: postgres-default visibilityStore: postgres-visibility datastores: postgres-default: sql: pluginName: postgres databaseName: cadence connectAddr: 127.0.0.1:5432 connectProtocol: tcp user: postgres password: cadence maxConns: 20 maxIdleConns: 20 maxConnLifetime: 1h postgres-visibility: sql: pluginName: postgres databaseName: cadence_visibility connectAddr: 127.0.0.1:5432 connectProtocol: tcp user: postgres password: cadence maxConns: 2 maxIdleConns: 2 maxConnLifetime: 1h关键参数对照配置项值说明pluginNamepostgres指定 SQL 存储插件databaseNamecadence/cadence_visibility默认存储库与可见性库connectAddr127.0.0.1:5432与容器-p 5432:5432映射一致connectProtocoltcp连接协议user/passwordpostgres/cadence与POSTGRES_PASSWORDcadence一致maxConns20默认库/ 2可见性库最大连接数上限maxIdleConns20 / 2最大空闲连接数maxConnLifetime1h连接最大存活时间超时后被回收重建本地启动服务时可通过--config指向该文件运行 cadence-server即可让服务连上刚启动的 PostgreSQL。方式二使用 docker-compose 一键启动完整栈仓库提供了 docker/docker-compose-postgres.yml用一条命令即可拉起 PostgreSQL Cadence server Cadence Web Prometheus Grafana 的完整本地开发栈cd docker docker compose -f docker-compose-postgres.yml up该 compose 文件的关键要点固定使用postgres:17.4镜像POSTGRES_USERcadence、POSTGRES_PASSWORDcadencecadence 服务使用ubercadence/server:master-auto-setup启动时自动建库并初始化 schema并通过环境变量DBpostgres、DB_PORT5432、POSTGRES_USERcadence、POSTGRES_PWDcadence、POSTGRES_SEEDSpostgres指向同 compose 网络中的 Postgres 服务cadence-web 通过CADENCE_GRPC_PEERScadence:7833连接前端服务Web 控制台暴露在 8088 端口Grafana 与 Prometheus 提供指标监控面板Grafana 在 3000 端口。这些环境变量与 docker/config_template.yaml 中的模板一一对应例如模板中connectAddr: {{ default .Env.POSTGRES_SEEDS }}:{{ default .Env.DB_PORT 5432 }}、user: {{ default .Env.POSTGRES_USER }}即 compose 设置的环境变量会被 dockerize 模板机制自动填充到服务配置中。相关说明可参考 docker/README.md其中列明docker-compose-postgres.yml uses PostgreSQL as persistence storage。提示master-auto-setup是持续变动changing的镜像适合日常开发如需稳定版本可以改用发布镜像或自己按 docker/README.md 中TARGETauto-setup的方式构建。常见问题排查端口被占用docker ps -a检查是否有其他容器占用 5432按文档要求先docker killdocker rm清理。psql 连接失败 / 密码错误确认容器是通过-e POSTGRES_PASSWORDcadence启动的若容器已存在则需删除重建--rm容器停止即删重建即生效。数据卷权限问题挂载到/var/lib/postgresql/data时若遇到权限错误确认宿主机目录可写或参考镜像文档调整挂载路径与用户。Cadence 服务报数据库不存在检查cadence与cadence_visibility两个库是否都已创建可用psql -h localhost -U postgres -c \l确认。schema 版本不匹配使用cadence-sql-tool ... --dryrun先预演升级确认目标版本后再实际执行。总结通过本文你可以完整走通PostgreSQL 本地化的全链路docker pull postgres拉镜像 →docker run起容器并映射 5432 端口 →psql登录验证 → 创建cadence与cadence_visibility两个数据库 → 用cadence-sql-tool --plugin postgres初始化 schema → 通过 config/development_postgres.yaml 或 docker/docker-compose-postgres.yml 让 Cadence 服务接入 PostgreSQL。这套流程与仓库内 schema、配置模板及工具链保持了一致可作为后续开发、测试乃至生产环境部署改用固定版本镜像 手动建库的可靠起点。赞分享后端任务调度工作流自动化微服务【免费下载链接】cadenceCadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way.项目地址https://gitcode.com/gh_mirrors/cad/cadence点击查看免费下载相关推荐在 Linux 上安装并配置 PostgreSQL为本地 Rails 应用搭建数据库环境在 Linux 上安装并配置 PostgreSQL为本地 Rails 应用搭建数据库环境 导读 本文档以 The Odin Project 课程仓库中的 Li文档教程教育node-postgres 本地开发环境搭建指南在 Mac 上安装、配置带 SSL 的 PostgreSQLnode postgres 本地开发环境搭建指南在 Mac 上安装、配置带 SSL 的 PostgreSQL 导读 本文以 node postgres 仓库的数据库关系型数据库后端Temporal Server 本地开发在 macOS 上安装、配置 PostgreSQL 存储并启用 TLS 全指南Temporal Server 本地开发在 macOS 上安装、配置 PostgreSQL 存储并启用 TLS 全指南 导读 本指南完整复现 docs/dev后端工作流自动化任务调度上一篇Outfit字体9种字重打造完美品牌视觉体验的开源几何无衬线字体解决方案下一篇Akagi你的智能麻将AI教练5分钟从新手到高手创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考