面试题答案
一键面试- 分布式事务管理:
- XA协议:通过事务管理器协调多个资源管理器,确保所有参与者要么都提交事务,要么都回滚。但性能开销较大,适用于对一致性要求极高、并发度不高的场景。
- TCC(Try - Confirm - Cancel)模式:业务层面实现补偿机制。Try阶段预留资源,Confirm阶段提交确认,Cancel阶段进行补偿撤销。适用于对一致性要求高且业务可补偿的场景。
- 消息队列:
- 可靠消息最终一致性:生产者发送消息到消息队列,消费者成功消费后进行相应处理。若消费失败,通过重试机制确保消息被成功处理,最终达到数据一致性。适用于异步处理且允许一定时间内达到一致性的场景。
- 事务消息:以RocketMQ为例,生产者发送半消息,MQ确认接收后,生产者执行本地事务,根据事务结果决定提交或回滚半消息,消费者只有在消息提交后才能消费,保证消息和本地事务的一致性。
- 数据副本与同步:
- 主从复制:主节点数据更新后,将变更同步到从节点。常见的有异步复制、同步复制和半同步复制。异步复制性能高但一致性弱;同步复制一致性强但性能受影响;半同步复制在两者间取得平衡。
- 多副本一致性协议:如Paxos、Raft等,通过选举领导者,领导者处理写操作并同步到其他副本,保证数据一致性。适用于分布式存储等需要强一致性的场景。
- 缓存处理:
- 缓存更新策略:
- 读写穿透:读操作先查缓存,不存在则查数据库并更新缓存;写操作同时更新数据库和缓存。能保证数据一致性,但对数据库压力较大。
- 写后更新缓存:写操作先更新数据库,再更新缓存。简单但可能出现缓存与数据库短暂不一致,可通过设置缓存过期时间来缓解。
- 失效模式:写操作更新数据库时让缓存失效,读操作发现缓存失效再从数据库加载并更新缓存。可能出现短暂不一致,适合一致性要求不是特别高的场景。
- 缓存更新策略: