面试题答案
一键面试对订单状态跟踪的影响及应对
- 影响:由于CouchDB的最终一致性,在更新订单状态后,不同节点获取到的订单状态可能在短期内不一致。例如,某个节点刚更新订单为“已发货”,但另一个节点可能仍显示“待发货”,这可能导致业务流程中的相关操作基于不一致的状态进行,影响业务准确性。
- 应对:
- 增加版本号:在订单文档中添加版本号字段,每次状态更新时版本号递增。业务逻辑在读取订单状态时,同时检查版本号,若版本号不符预期,可重新获取最新文档。
- 设置状态有效期:为每个订单状态设置有效期,如“待发货”状态超过一定时间未更新,系统主动检查并重新确认状态。在状态更新时,同时更新有效期。
对库存管理的影响及应对
- 影响:在库存扣减操作时,最终一致性可能导致多个节点同时进行库存扣减,出现超卖现象。比如,一个订单请求扣减库存,在数据同步到所有节点之前,另一个订单也进行扣减操作,都认为库存足够。
- 应对:
- 使用乐观锁:在库存文档中设置一个类似“revision”的字段,每次库存更新时,客户端需要带上当前的revision值。CouchDB会检查该值是否匹配,若匹配则更新成功,否则更新失败,客户端需重新获取最新库存数据并尝试更新。
- 引入队列机制:将库存扣减操作放入队列中,按顺序依次处理,避免并发操作导致的不一致问题。在队列处理时,每次操作前都获取最新的库存数据进行校验。