语义差别
顺序执行指任务按预定顺序一次作用于一个目标或一批目标,前一批完成后才开始下一批;它的代价是总耗时长,收益是任何时刻受影响的目标数量受控,出现问题时能立即停在前一批。并行执行指同一时刻对多个目标动手,速度快,但峰值资源消耗、对共享依赖的压力以及不确定的执行顺序都会成倍放大。两者不是性能选项,而是影响面选项。
基本信息
| 顺序执行 | 按批推进,前批成功后再进入下一批 |
|---|---|
| 并行执行 | 多目标同时执行,顺序不确定 |
| 折中做法 | 组内并行、组间串行并留间隔 |
| 判断依据 | 目标是否可替换、是否共享状态、是否影响业务容量 |
必须顺序的场景
- 主从结构:先改从库再切换主库,顺序颠倒会引发数据风险。
- 集群法定多数:并行重启超过容错数量会导致集群失去多数而不可用。
- 共享数据库变更:并行执行会产生锁竞争甚至死锁。
- 单实例关键服务:并行没有意义,只会增加重启次数。
- 需要逐台验证的业务:每台确认健康后再继续,避免带病扩散。
两种方式对比
| 对比项 | 顺序执行 | 并行执行 |
|---|---|---|
| 影响面 | 小且可控 | 峰值集中,难预测 |
| 总耗时 | 长 | 短 |
| 失败定位 | 容易定位到具体批次 | 并发日志交错,定位困难 |
| 共享依赖压力 | 平缓 | 瞬时集中 |
| 顺序保证 | 有 | 无 |
| 适用对象 | 有状态、共享资源 | 无状态、可替换 |
批次大小要结合容量冗余确定:确认服务能承受「一批下线」而不影响整体水位,再决定每批目标数,比拍一个百分比更可靠。
并行执行时日志会交错,需要在任务输出里带上目标标识与批次编号,否则排查时无法判断某条输出属于哪台主机。