This commit is contained in:
@@ -44,26 +44,35 @@ INSERT INTO tb_polling_concurrency_config (task_type, max_concurrency, descripti
|
||||
|
||||
### 3. Worker 多实例部署
|
||||
|
||||
部署多个 Worker 实例分担负载:
|
||||
多实例扩容时,必须拆分 Worker 角色,禁止直接复制多个完整 Worker 进程。推荐保留 `1 leader + N consumer`:
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml 示例
|
||||
services:
|
||||
worker-1:
|
||||
worker-leader:
|
||||
image: junhong-cmp-worker
|
||||
environment:
|
||||
- WORKER_ID=1
|
||||
worker-2:
|
||||
- JUNHONG_WORKER_ROLE=leader
|
||||
- JUNHONG_WORKER_INSTANCE_NAME=worker-leader-1
|
||||
worker-consumer-1:
|
||||
image: junhong-cmp-worker
|
||||
environment:
|
||||
- WORKER_ID=2
|
||||
worker-3:
|
||||
- JUNHONG_WORKER_ROLE=consumer
|
||||
- JUNHONG_WORKER_INSTANCE_NAME=worker-consumer-1
|
||||
worker-consumer-2:
|
||||
image: junhong-cmp-worker
|
||||
environment:
|
||||
- WORKER_ID=3
|
||||
- JUNHONG_WORKER_ROLE=consumer
|
||||
- JUNHONG_WORKER_INSTANCE_NAME=worker-consumer-2
|
||||
```
|
||||
|
||||
注意:只需一个实例运行调度器,其他实例只处理任务。
|
||||
说明:
|
||||
- `leader` 负责轮询初始化、轮询调度、Asynq 定时任务调度等单例职责
|
||||
- `consumer` 只负责 Asynq 队列消费,适合横向扩容
|
||||
- 单实例部署默认使用 `all`,行为等价于历史版本
|
||||
- 不要直接启动多个 `all` 或多个 `leader`,否则会重复扫库、重复调度、重复入队
|
||||
- 需要提升吞吐时,优先增加 `consumer` 数量,而不是复制完整 Worker
|
||||
- 本期仅完成角色拆分,不包含 Redis Leader 锁、自动选主、任务唯一性去重,这些作为第二期增强处理
|
||||
|
||||
### 4. 检查间隔优化
|
||||
|
||||
|
||||
Reference in New Issue
Block a user