05-消息中间件篇

张开发
2026/4/14 2:01:30 15 分钟阅读

分享文章

05-消息中间件篇
文章目录一、RabbitMQ1. RabbitMQ如何保证消息不丢失2. RabbitMQ消息的重复消费问题如何解决3. 那你还知道其他的解决方案吗4. RabbitMQ中死信交换机了解吗RabbitMQ延迟队列有了解过吗5. 如果有100万消息堆积在MQ如何解决6. RabbitMQ的高可用机制了解吗7. 那出现丢数据怎么解决呢二、Kafka8. Kafka是如何保证消息不丢失9. Kafka中消息的重复消费问题如何解决10. Kafka是如何保证消费的顺序性11. Kafka的高可用机制了解吗12. 解释一下复制机制中的ISR13. Kafka数据清理机制了解吗14. Kafka中实现高性能的设计有了解过吗一、RabbitMQ1. RabbitMQ如何保证消息不丢失候选人我们使用RabbitMQ来确保MySQL和Redis间数据双写的一致性这要求我们实现消息的高可用性具体措施包括开启生产者确认机制确保消息能被送达队列如有错误则记录日志并修复数据。启用持久化功能保证消息在未消费前不会在队列中丢失需要对交换机、队列和消息本身都进行持久化。对消费者开启自动确认机制并设置重试次数。例如我们设置了3次重试若失败则将消息发送至异常交换机由人工处理。2. RabbitMQ消息的重复消费问题如何解决候选人我们遇到过消息重复消费的问题处理方法是设置消费者为自动确认模式如果服务在确认前宕机重启后可能会再次消费同一消息。通过业务唯一标识检查数据库中数据是否存在若不存在则处理消息若存在则忽略避免重复消费。3. 那你还知道其他的解决方案吗候选人是的这属于幂等性问题可以通过以下方法解决使用Redis分布式锁或数据库锁来确保操作的幂等性。4. RabbitMQ中死信交换机了解吗RabbitMQ延迟队列有了解过吗候选人了解。我们项目中使用RabbitMQ实现延迟队列主要通过死信交换机和TTL消息存活时间来实现。消息若超时未消费则变为死信队列可绑定死信交换机实现延迟功能。另一种方法是安装RabbitMQ的死信插件简化配置在声明交换机时指定为死信交换机并设置消息超时时间。5. 如果有100万消息堆积在MQ如何解决候选人若出现消息堆积可采取以下措施提高消费者消费能力如使用多线程。增加消费者数量采用工作队列模式让多个消费者并行消费同一队列。扩大队列容量使用RabbitMQ的惰性队列支持数百万条消息存储直接存盘而非内存。6. RabbitMQ的高可用机制了解吗候选人我们项目在生产环境使用RabbitMQ集群采用镜像队列模式一主多从结构。主节点处理所有操作并同步给从节点若主节点宕机从节点可接替为主节点但需注意数据同步的完整性。7. 那出现丢数据怎么解决呢候选人使用仲裁队列主从模式基于Raft协议实现强一致性数据同步简化配置提高数据安全性。二、Kafka8. Kafka是如何保证消息不丢失候选人Kafka保证消息不丢失的措施包括生产者使用异步回调发送消息设置重试机制应对网络问题。在Broker中通过复制机制设置acks参数为all确保消息在所有副本中都得到确认。消费者手动提交消费成功的offset避免自动提交可能导致的数据丢失或重复消费。9. Kafka中消息的重复消费问题如何解决候选人通过以下方法解决Kafka中的重复消费问题禁用自动提交offset手动控制offset提交时机。确保消息消费的幂等性例如通过唯一主键或分布式锁。10. Kafka是如何保证消费的顺序性候选人Kafka默认不保证消息顺序性但可以通过以下方法实现将消息存储在同一个分区通过指定分区号或相同的业务key来实现。11. Kafka的高可用机制了解吗候选人Kafka的高可用性主要通过以下机制实现集群部署多broker实例单点故障不影响整体服务。复制机制每个分区有多个副本leader和followerleader故障时从follower中选举新leader。12. 解释一下复制机制中的ISR候选人ISRIn-Sync Replicas指与leader保持同步的follower副本。当leader故障时优先从ISR中选举新leader因为它们数据一致性更高。13. Kafka数据清理机制了解吗候选人Kafka的数据清理包括基于消息保留时间的清理。基于topic数据大小的清理可配置删除最旧消息。14. Kafka中实现高性能的设计有了解过吗候选人Kafka高性能设计包括消息分区提升数据处理能力。顺序读写提高磁盘操作效率。页缓存减少磁盘访问。零拷贝减少数据拷贝和上下文切换。消息压缩减少IO负载。分批发送降低网络开销。

更多文章