MST

星途 面试题库

面试题:分布式系统高可用性下的一致性与可用性权衡

在分布式系统设计中,CAP定理表明一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)三者无法同时满足。当你着重于高可用性设计时,通常需要在一致性方面做出妥协。请描述在实际后端开发场景中,你如何在保证高可用性的同时,尽可能优化一致性,列举至少两种常见的解决方案及其原理。
22.9万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试
  1. 最终一致性方案
    • 原理:系统允许数据存在一定时间的不一致状态,但经过一段时间后,数据会达到一致。例如,在电商系统的库存更新场景中,当用户下单后,库存的减少操作可能不会立即同步到所有节点。系统先记录下单操作,保证可用性,之后通过异步任务(如消息队列)逐步将库存更新同步到各个节点,最终使库存数据达到一致。这样既保证了用户下单时系统的高可用性,又在一定时间后确保了库存数据的一致性。
  2. 读写分离并结合缓存方案
    • 原理:将读操作和写操作分离到不同的服务器。写操作直接作用于主数据库,读操作从从数据库或缓存获取数据。对于一致性要求不高的读操作,优先从缓存读取数据,这样可以极大提高系统的响应速度和可用性。当数据发生写操作时,更新主数据库,同时更新缓存。为了优化一致性,可设置缓存的过期时间,让缓存数据在一定时间后失效,之后读操作会从数据库获取最新数据,从而保证数据的最终一致性。例如在新闻资讯网站,文章发布后先更新主数据库,同时更新缓存。缓存设置较短过期时间,在过期前用户读取的是缓存中的旧数据,但过期后能获取到数据库中的最新数据。