
采用微服务拆分+Saga分布式事务模式+缓存+消息队列,结合数据库读写分离与分库分表,通过最终一致性机制保障资产状态变更与价格更新的可靠性,满足高并发需求。
老师口吻解释关键组件:
| 架构/方案 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| Saga模式(分布式事务) | 通过本地事务+补偿事务保证最终一致性 | 避免长事务,支持异步,适合高并发 | 跨服务数据变更(如资产状态变更) | 补偿逻辑复杂,可能产生循环补偿 |
| 2PC(两阶段提交) | 领导者-从者模式,保证强一致性 | 强一致性,但阻塞风险 | 对一致性要求极高,低并发 | 长事务阻塞,故障恢复复杂 |
| 缓存雪崩解决方案 | Redis集群+分布式锁+缓存预热 | 缓解集中过期压力 | 高并发热点数据查询 | 需合理设置过期时间,避免集中过期 |
| 消息队列持久化 | Kafka日志文件存储,生产者确认机制 | 确保消息不丢失 | 服务间异步通信 | 需消费者幂等性处理,避免重复消费 |
(资产状态变更的Saga流程,含补偿逻辑)
UPDATE asset SET status='处置中' WHERE id=1001;
asset_status_update):{"asset_id":1001, "new_status":"处置中"}。UPDATE disposal_process SET step='处置中' WHERE asset_id=1001;
UPDATE price SET current_price=50000 WHERE asset_id=1001;
price_update):{"asset_id":1001, "new_price":50000}。补偿逻辑(若处置流程服务失败):
资产服务通过补偿事务回滚状态(如从“处置中”变回“可处置”),并重试发布消息,避免循环补偿(通过补偿计数器控制重试次数)。
面试官您好,针对高并发不良资产查询和处置流程,我设计的系统架构核心是微服务拆分+分布式事务(Saga模式)+缓存+消息队列。
服务拆分为资产服务、处置流程服务、价格服务等,通过API网关统一入口。高并发查询通过数据库读写分离(主库写,从库读,从库分库分表)和Redis缓存热点数据(如热门资产列表),减少数据库压力。
对于数据一致性,比如资产状态变更,采用Saga模式:资产服务更新数据库后,发布消息到Kafka,处置流程服务消费消息更新流程,价格服务再更新价格,每个步骤都有幂等性处理(如检查消息是否已处理),确保最终数据一致。具体来说,当用户点击“处置”按钮,资产服务先检查Redis缓存,确认状态为“可处置”,然后更新数据库状态为“处置中”,并发布消息。处置流程服务消费消息后,更新处置步骤,同时调用价格服务更新价格,价格服务更新后也发布消息,处置流程服务消费价格更新消息后完成流程。通过这种方式,既保证最终一致性,又避免长事务阻塞,同时消息队列的持久化存储和幂等处理确保消息不丢失,缓存预热和分布式锁解决缓存雪崩问题。