MST

星途 面试题库

面试题:针对2PC同步阻塞问题,常见的优化思路及实现方式有哪些

除了常规的一些解决思路外,请分析每种解决方式在不同应用场景下的优势与局限性。比如在高并发、对数据一致性要求极高的场景中,哪种优化思路更为合适,为什么?
50.2万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

1. 缓存优化

  • 优势
    • 高并发场景:能极大减轻后端数据源压力,快速响应大量请求,提升系统整体吞吐量。例如电商秒杀场景,大量用户请求商品信息,缓存可直接返回数据,避免数据库高负载。
    • 对数据一致性要求不特别高场景:缓存可设置合理过期时间,允许一定时间内数据存在不一致情况,提升读取性能。如新闻资讯类应用,短时间内数据略有延迟更新对用户体验影响不大。
  • 局限性
    • 对数据一致性要求极高场景:缓存存在过期策略、数据更新同步延迟等问题,难以保证数据绝对实时一致。如金融交易场景,每一笔资金变动都需准确无误,缓存不太适用。
    • 数据更新频繁场景:频繁更新数据会导致缓存频繁失效和重建,降低缓存命中率,增加系统开销。

2. 数据库读写分离

  • 优势
    • 高并发场景:读操作分摊到从库,减轻主库压力,提高系统并发处理能力。适合社交平台等读多写少的应用,大量用户浏览动态等读操作可由从库处理。
    • 对数据一致性要求相对不高场景:从库数据同步可能存在短暂延迟,但对于多数读操作影响不大,可保证系统整体可用性和性能。
  • 局限性
    • 对数据一致性要求极高场景:从库同步延迟可能导致读操作读到旧数据,无法满足严格的数据一致性需求。如银行转账后立即查询余额,要求数据必须准确最新。
    • 写操作频繁场景:主库写压力仍较大,可能成为性能瓶颈,且写操作后从库同步延迟可能影响后续读操作。

3. 异步处理

  • 优势
    • 高并发场景:将耗时操作异步处理,避免阻塞主线程,提升系统响应速度和并发能力。如订单处理系统,下单后发送短信、邮件通知等操作异步执行,不影响订单主流程处理。
    • 对数据一致性要求不高场景:异步任务可在后台逐步处理,即使部分任务失败可重试,不影响整体业务流程。如日志记录,偶尔丢失几条日志对核心业务影响不大。
  • 局限性
    • 对数据一致性要求极高场景:异步处理可能存在任务执行失败、顺序错乱等问题,难以保证数据严格一致性。如库存扣减与订单生成需强一致,异步处理可能导致库存与订单数据不一致。
    • 实时性要求高场景:异步处理存在一定延迟,无法满足对结果实时获取的需求。如即时通讯消息需实时显示给用户。