新增中间件相关文档包括 RocketMQ、Nacos、PowerJob 的部署指南和故障分析文档,完善 Keepalived 和 MySQL 的文档内容。新增内部通讯技能模板和示例文件,包括 3P更新、公司通讯、FAQ回答等格式指南。优化服务文档结构,补充 FIX 引擎高可用架构说明。新增中间件综合指南,详细说明高可用部署方案和灾备转换原理。 新增 RocketMQ 5.3.2 集群部署文档,包含 Controller 模式详解和详细配置说明。新增 Nacos 和 PowerJob 部署文档,补充服务依赖和关键配置。更新 MySQL 故障分析文档,优化复制冲突解决流程。新增内部通讯技能模板文件,规范公司内部通讯格式。 docs: 补充服务文档和中间件 TODO 列表 新增 g3fo-exchange-fix-engine-service 服务文档,详细说明服务职责和关键配置。新增中间件 TODO 列表,跟踪待补充的文档内容。更新 Keepalived 部署文档,新增主库抢占前置检查脚本和配置说明。优化中间件文档结构,补充常见问题和性能优化建议。 style: 统一文档格式和代码块样式 统一所有文档的代码块格式和标题层级。优化表格显示样式,增强可读性。规范环境变量和配置项的显示方式。调整文档结构,确保逻辑清晰。修复部分拼写错误和格式问题。 chore: 新增 LICENSE 文件 新增内部通讯技能的 Apache 2.0 LICENSE 文件。补充文档版权信息。更新文件头部的元数据描述。规范文件命名和目录结构。
7.2 KiB
7.2 KiB
PowerJob 部署配置
PowerJob 用途说明
PowerJob 是一个分布式任务调度与计算框架,专注于解决大规模任务调度问题,提供丰富的任务类型和强大的调度能力。在项目中,PowerJob 主要用于以下场景:
1. 分布式任务调度
- 定时任务调度:支持 cron 表达式、固定延迟、固定频率等多种调度方式
- 任务分片:将大任务拆分为多个小任务,并行执行,提高处理效率
- 任务依赖:支持任务间的依赖关系配置,实现复杂的工作流
- 高可用设计:通过集群部署确保任务调度的可靠性,避免单点故障
2. 多样化任务类型
- HTTP 任务:直接调用 HTTP 接口执行任务
- Java 任务:执行 Java 代码,支持动态加载和执行
- Shell 任务:执行 Shell 脚本
- Python 任务:执行 Python 脚本
- MapReduce 任务:支持大数据处理场景
3. 任务管理与监控
- 可视化管理界面:提供 Web 控制台,方便查看和管理任务
- 实时监控:实时监控任务执行状态、日志和结果
- 告警机制:支持任务失败、超时等告警通知
- 历史记录:保存任务执行历史,便于追溯和分析
Docker Compose 配置
powerjob-server:
image: powerjob/powerjob-server:v5.1.2
container_name: powerjob-server
restart: always
depends_on:
- mysql
deploy:
resources:
limits:
memory: 1536M
replicas: 1
placement:
constraints:
- node.role == manager
networks:
- my-net
ports:
- 7700:7700
- 10086:10086
- 10010:10010
- 10077:10077
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /data/powerjob/data:/root/powerjob/server
- /data/powerjob/application.properties:/application.properties
- /data/powerjob/lib:/app/lib
environment:
- JVMOPTIONS=-Dpowerjob.network.external.address=192.168.3.230 -Dpowerjob.network.local.address=0.0.0.0 -javaagent:/app/lib/jasypt-agent.jar
应用配置文件 (/data/powerjob/application.properties)
spring.datasource.core.jdbc-url=jdbc:mysql://192.168.3.233:3306/powerjob?useUnicode=true&characterEncoding=UTF-8
spring.datasource.core.username=root
spring.datasource.core.password=ENC(RjBbbZtMkQ1XoESFu6Wo7XeC29GcDkeIiIq92ONWx2odVz9NAmClnxjRXJwq1dNI)
#spring.datasource.core.password=afe123456
jasypt.encryptor.password=1234
#jasypt.encryptor.algorithm=PBEWITHHMACSHA512ANDAES_256
#jasypt.encryptor.iv-generator-classname=org.jasypt.iv.RandomIvGenerator
oms.mongodb.enable=false
spring.profiles.active=product
Spring Boot 配置连接集群
powerjob:
worker:
app-name: ${app.service-name}
protocol: http
server-address: 192.168.3.230:7700,192.168.3.200:7700
部署说明
1. 端口说明
| 端口 | 作用 | 说明 |
|---|---|---|
| 7700 | PowerJob 服务器的 Web 服务端口 | 用于访问 Web 控制台,接收 Worker 注册和任务请求,必须打开 |
| 10086 | Akka 端口 | PowerJob 配置的 Akka 端口,用于内部通信 |
| 10010 | 多语言客户端 HTTP 端口 | PowerJob 配置的多语言客户端 HTTP 端口 |
| 10077 | MU 协议端口 | PowerJob 配置的 MU 协议端口,可选打开 |
端口配置原则
-
最省事的方法:所有端口(7700 + 10086 + 10010 + 10077)全打开
-
精细化控制原则:
- 对于任何用户,7700 端口必须打开,这是调度服务器的 Web 服务端口
oms.协议.port的端口按需打开,考虑 server-server 和 server-worker 通讯场景:- server-server 默认通过 HTTP 协议交互(由
oms.transporter.main.protocol控制),必须打开 HTTP 10010 端口 - server-worker 部分通过 HTTP,部分通过 AKKA,需要打开 AKKA 的 10086 端口
- server-server 默认通过 HTTP 协议交互(由
主要配置项说明
| 配置项 | 含义 | 是否必填 |
|---|---|---|
| server.port | SpringBoot 配置,HTTP 端口号,默认 7700 | 否,且不建议更改 |
| oms.transporter.active.protocols | server 需要激活的通讯协议,建议激活全部支持的协议 | 否,且不建议更改 |
| oms.transporter.main.protocol | 主要通讯协议,用于 server 与 server 之间的通讯 | 否 |
| oms.akka.port | PowerJob 配置,Akka 端口号,默认 10086 | 否,且不建议更改 |
| oms.http.port | PowerJob 配置,多语言客户端 HTTP 端口号,默认 10010 | 否,且不建议更改 |
| oms.mu.port | PowerJob 配置,MU 协议端口号,默认 10077 | 是 |
| oms.table-prefix | 自定义数据库表名前缀 | 是 |
| spring.datasource.core.xxx | 关系型数据库连接配置 | 否 |
| spring.mail.xxx | 邮件配置 | 是,未配置情况下将无法使用邮件报警功能 |
| oms.container.retention.local | 本地容器保留天数,负数代表永久保留 | 是 |
| oms.container.retention.remote | 远程容器保留天数,负数代表永久保留 | 是 |
| oms.instanceinfo.retention | 任务实例和工作流实例信息的保留天数 | 是,推荐使用默认配置,生产环境保留 7 天 |
| oms.auth.initiliaze.admin.password | 系统初始化时默认创建的超级管理员密码 | 是,默认值 powerjob_admin,无此配置时,随机生成密码 |
| oms.auth.dingtalk.* | 钉钉用户账号体系相关配置内容 | 否,仅启用钉钉账号登录体系时需要配置 |
2. 目录准备
在部署 PowerJob 之前,需要创建以下目录:
mkdir -p /data/powerjob/{data,lib}
3. 环境变量说明
- JVMOPTIONS:
-Dpowerjob.network.external.address:PowerJob 服务器的外部访问地址,用于 Worker 连接-Dpowerjob.network.local.address:PowerJob 服务器的本地绑定地址-javaagent:/app/lib/jasypt-agent.jar:Jasypt 加密代理,用于解密配置文件中的敏感信息
4. 配置文件说明
- spring.datasource.core.jdbc-url:MySQL 数据库连接 URL
- spring.datasource.core.username:MySQL 数据库用户名
- spring.datasource.core.password:MySQL 数据库密码(支持 Jasypt 加密)
- jasypt.encryptor.password:Jasypt 加密密钥
- oms.mongodb.enable:是否启用 MongoDB(用于存储任务日志,默认 false)
- spring.profiles.active:Spring Boot 激活的配置文件
5. 注意事项
-
数据库配置:
- 确保 MySQL 数据库已创建,并且用户具有足够的权限
- 首次启动时,PowerJob 会自动创建所需的表结构
-
集群部署:
- 可以部署多个 PowerJob 服务器实例,通过负载均衡提高可用性
- 所有实例共享同一个 MySQL 数据库
- Worker 配置中指定多个服务器地址,实现高可用连接
-
安全配置:
- 生产环境中建议使用 Jasypt 加密数据库密码等敏感信息
- 调整 Jasypt 加密密钥,避免使用默认密钥
-
资源限制:
- 根据实际任务量调整内存限制(当前配置为 1536M)
- 监控服务器资源使用情况,及时调整配置