
1) 【一句话结论】
在高并发下解决智慧城市平台数据一致性的核心是结合CAP理论,根据业务对一致性的要求(如车辆位置更新允许最终一致性、信号灯状态同步需强一致性),选择CP或AP模式,并通过消息队列、本地缓存、Saga模式等方案实现,同时设计边界条件下的补偿机制(如分区时重试、补偿事务),确保系统高可用与数据一致性平衡。
2) 【原理/概念讲解】
首先解释CAP理论:分布式系统无法同时满足一致性(所有节点数据完全相同)、可用性(节点正常提供服务)、分区容错性(系统可容忍网络分区)。CAP定理要求牺牲一个,需根据业务场景选择。
类比:银行转账(强一致性,保证最终到账一致) vs 社交媒体点赞(最终一致性,用户刷新后看到最新状态)。
3) 【对比与适用场景】
| 模式 | 一致性 | 可用性 | 分区容错性 | 适用场景 | 注意点 |
|---|---|---|---|---|---|
| CP模式 | 强一致性 | 低可用性(分区时节点降级) | 支持 | 金融交易(如支付系统)、交通信号灯状态同步(影响安全) | 分区时需降级服务,牺牲可用性保障一致性 |
| AP模式 | 最终一致性 | 高可用性(分区时继续服务) | 支持 | 社交媒体(如点赞)、电商购物车(允许短暂不一致) | 分区时允许数据短暂不一致,保障服务可用性 |
4) 【示例】
以车辆位置更新(高并发,允许最终一致性)和信号灯状态同步(强一致性,影响安全)为例:
acks=all,持久化存储,保证顺序) → 消费者异步更新MySQL(持久化存储)和Redis(高并发读取)。traffic_light_status,操作UPDATE SET status='previous' WHERE id=...),超时时间设为3秒。5) 【面试口播版答案】
“面试官您好,针对智慧城市平台高并发下的数据一致性,核心是结合CAP理论选择合适模式。首先CAP定理说分布式系统无法同时满足一致性、可用性和分区容错性,必须牺牲一个。对于车辆位置更新这类允许最终一致性的场景,用AP模式,通过消息队列(如Kafka)异步处理位置更新,结合Redis缓存提升读取性能,即使数据库写入延迟,前端仍能通过缓存获取最新位置。对于信号灯状态同步这类强一致性要求的场景,用CP模式,通过Saga模式(替代两阶段提交)确保状态同步时一致,即使分区也能保证数据一致。具体来说,车辆位置更新流程是前端上报位置→写入Kafka(配置acks=all,确保消息不丢失)→消费者异步更新MySQL(写操作)和Redis(读缓存),分区时本地Redis缓存临时存储,分区恢复后通过指数退避重试(1s、2s、4s...最多5次)批量提交至MySQL,保证最终一致性。信号灯状态同步通过Saga模式,状态变更时先写数据库,再更新Redis并设置TTL(5秒),分区时若状态变更失败,补偿事务执行反向操作,确保强一致性。同时,我们考虑了缓存与数据库的强一致性,通过读写分离(写数据库,读缓存)+ TTL策略,比如信号灯状态变更时,数据库更新后,Redis更新并设置TTL,避免脏读。”
6) 【追问清单】
7) 【常见坑/雷区】