From dc1250ba4ce5e13aa8e65a35c8c319b87ac77a7b Mon Sep 17 00:00:00 2001 From: douboer Date: Wed, 17 Sep 2025 17:40:48 +0800 Subject: [PATCH] update at 2025-09-17 17:40:48 --- process.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/process.md b/process.md index c6fffae..4cd93c6 100644 --- a/process.md +++ b/process.md @@ -34,3 +34,45 @@ flowchart TD end ``` +❓ 蓝系统weight 0,绿系统100%,但蓝系统的kafka还在消费,topic被蓝系统消费掉了,会不会产生问题? +没有问题。如果蓝绿规划为同一消费者组,并且消费是密等的,被谁消费掉无所谓。 + +💡 最佳实践: +1. 蓝绿切换时,不仅切换 HTTP 流量,还要 优雅下线旧版本 Kafka 消费器 +2. 消费逻辑保持幂等,避免蓝绿切换引发重复处理 + +redis: 共享 Redis + 蓝绿系统写入隔离 + +mysql: +```mermaid +flowchart TD + subgraph Client Side + A[HTTP 请求] -->|流量 0%| B[蓝系统 (旧版本)] + A -->|流量 100%| C[绿系统 (新版本)] + end + + subgraph MySQL Cluster + D[(MySQL 主库/集群)] + end + + %% 蓝系统行为 + B -->|完成旧事务提交| D + B -->|使用旧 schema 字段| D + + %% 绿系统行为 + C -->|新请求写入| D + C -->|使用新 schema 字段| D + + %% 注释 + classDef info fill:#f9f,stroke:#333,stroke-width:1px; + B:::info + C:::info + D:::info + + %% 说明 + subgraph Notes + N1[蓝系统流量为 0,但仍完成旧事务,确保数据一致性] + N2[蓝绿系统共用 MySQL,Schema 需向后兼容] + N3[写操作幂等,避免重复或冲突] + end +```