feat: 新增中间件文档和内部通讯技能
新增中间件相关文档包括 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 文件。补充文档版权信息。更新文件头部的元数据描述。规范文件命名和目录结构。
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
# PowerJob 部署配置
|
||||
|
||||
## PowerJob 用途说明
|
||||
|
||||
PowerJob 是一个分布式任务调度与计算框架,专注于解决大规模任务调度问题,提供丰富的任务类型和强大的调度能力。在项目中,PowerJob 主要用于以下场景:
|
||||
|
||||
### 1. 分布式任务调度
|
||||
|
||||
- **定时任务调度**:支持 cron 表达式、固定延迟、固定频率等多种调度方式
|
||||
- **任务分片**:将大任务拆分为多个小任务,并行执行,提高处理效率
|
||||
- **任务依赖**:支持任务间的依赖关系配置,实现复杂的工作流
|
||||
- **高可用设计**:通过集群部署确保任务调度的可靠性,避免单点故障
|
||||
|
||||
### 2. 多样化任务类型
|
||||
|
||||
- **HTTP 任务**:直接调用 HTTP 接口执行任务
|
||||
- **Java 任务**:执行 Java 代码,支持动态加载和执行
|
||||
- **Shell 任务**:执行 Shell 脚本
|
||||
- **Python 任务**:执行 Python 脚本
|
||||
- **MapReduce 任务**:支持大数据处理场景
|
||||
|
||||
### 3. 任务管理与监控
|
||||
|
||||
- **可视化管理界面**:提供 Web 控制台,方便查看和管理任务
|
||||
- **实时监控**:实时监控任务执行状态、日志和结果
|
||||
- **告警机制**:支持任务失败、超时等告警通知
|
||||
- **历史记录**:保存任务执行历史,便于追溯和分析
|
||||
|
||||
## Docker Compose 配置
|
||||
|
||||
```yaml
|
||||
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`)
|
||||
|
||||
```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 配置连接集群
|
||||
|
||||
```yaml
|
||||
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 协议端口,可选打开 |
|
||||
|
||||
### 端口配置原则
|
||||
|
||||
1. **最省事的方法**:所有端口(7700 + 10086 + 10010 + 10077)全打开
|
||||
|
||||
2. **精细化控制原则**:
|
||||
- 对于任何用户,7700 端口必须打开,这是调度服务器的 Web 服务端口
|
||||
- `oms.协议.port` 的端口按需打开,考虑 server-server 和 server-worker 通讯场景:
|
||||
- server-server 默认通过 HTTP 协议交互(由 `oms.transporter.main.protocol` 控制),必须打开 HTTP 10010 端口
|
||||
- server-worker 部分通过 HTTP,部分通过 AKKA,需要打开 AKKA 的 10086 端口
|
||||
|
||||
### 主要配置项说明
|
||||
|
||||
| 配置项 | 含义 | 是否必填 |
|
||||
|--------|------|----------|
|
||||
| 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 之前,需要创建以下目录:
|
||||
|
||||
```bash
|
||||
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. 注意事项
|
||||
|
||||
1. **数据库配置**:
|
||||
- 确保 MySQL 数据库已创建,并且用户具有足够的权限
|
||||
- 首次启动时,PowerJob 会自动创建所需的表结构
|
||||
|
||||
2. **集群部署**:
|
||||
- 可以部署多个 PowerJob 服务器实例,通过负载均衡提高可用性
|
||||
- 所有实例共享同一个 MySQL 数据库
|
||||
- Worker 配置中指定多个服务器地址,实现高可用连接
|
||||
|
||||
3. **安全配置**:
|
||||
- 生产环境中建议使用 Jasypt 加密数据库密码等敏感信息
|
||||
- 调整 Jasypt 加密密钥,避免使用默认密钥
|
||||
|
||||
4. **资源限制**:
|
||||
- 根据实际任务量调整内存限制(当前配置为 1536M)
|
||||
- 监控服务器资源使用情况,及时调整配置
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [PowerJob 官方文档](https://www.yuque.com/powerjob/guidence/deploy_server)
|
||||
- [PowerJob GitHub 仓库](https://github.com/PowerJob/PowerJob)
|
||||
Reference in New Issue
Block a user