面试题答案
一键面试保障一致性策略
- 分布式事务:采用两阶段提交(2PC)或三阶段提交(3PC)协议,协调多个微服务参与文件存储相关操作的事务处理,确保要么所有操作都成功提交,要么都回滚。但 2PC 存在单点故障(协调者)和阻塞问题,3PC 虽然缓解了部分问题,但实现复杂。
- 基于日志的复制:每个微服务记录文件操作日志,通过日志同步机制,如 Raft 协议,在多个微服务间复制日志,保证操作顺序一致,从而保障文件存储一致性。Raft 协议具有强 leader 选举机制,能有效解决脑裂等问题,实现高可用和一致性。
存储架构扩展性设计
分布式文件系统选择
- Ceph:是一个高性能、高可用、可扩展的分布式文件系统。它采用 CRUSH 算法实现数据分布,无需元数据服务器即可定位数据,可线性扩展存储容量和性能。适用于大规模文件存储场景,能很好满足业务增长需求。
- GlusterFS:通过将多个存储节点组成一个统一的文件系统,支持横向扩展。采用弹性哈希算法分布数据,具备自我修复、自我管理能力,对存储节点的异构性兼容性好,适合对成本敏感且需灵活扩展的场景。
缓存机制考量
- 分布式缓存:使用 Redis 等分布式缓存,将常用文件元数据或部分文件内容缓存在内存中。对于读多写少的场景,能极大提升文件访问性能。通过集群部署 Redis 节点,可实现缓存的水平扩展,满足业务增长时对缓存容量和性能的需求。
- 缓存更新策略:采用写后更新(Write - Behind)策略,即先更新文件存储,再异步更新缓存。这种策略减少了写操作对系统性能的影响,但可能存在缓存与文件存储短暂不一致的情况,需要设置合理的缓存过期时间来降低这种影响。同时,结合发布 - 订阅模式,当文件存储更新时,通知相关微服务及时更新缓存,保证数据一致性。