1. 你们系统里如果用了消息队列,怎么保证消息不丢失、不重复消费,并且实现最终一致性?答案:先保证生产者发送可靠,发送失败要重试,关键业务可以配合事务消息或本地消息表。Broker 这一层要做持久化和副本,避免机器故障导致消息丢失。消费者要在业务处理成功后再 ack,不能先确认再执行业务。MQ 一般只能保证至少一次投递,所以消费者一定要做幂等。幂等常见做法是业务唯一 ID、去重表、Redis 去重、数据库唯一索引。最终一致性一般靠异步重试、死信队列、补偿机制来保证。面试里可以总结一句:生产者可靠发送,Broker 持久化,消费者幂等消费,失败靠补偿实现最终一致。2. 分布式事务有哪些常见方案?...