首页 > 编程知识 正文

集合面试题,dqe面试问题与技巧

时间:2023-05-03 20:07:11 阅读:147382 作者:1656

高级消息队列协议(RabbitMQ概述MQP )是网络协议、APP应用协议的开发标准和面向消息的中间件。 基于此协议的客户端和消息中间件可以不受客户端/中间件产品、开发语言等条件的限制而分发消息。 2006年,发表了AMQP的规格。 模拟HTTP。

2007年,Rabbit技术公司公布了基于AMQP标准开发的RabbitMQ 1.0。 RabbitMQ是用Erlang语言开发的。 Erlang语言由Ericson设计,是专门用于开发高并发和分布式系统的语言,广泛用于通信领域。

MQ的优势,为什么要用MQ? 1 .去耦的应用(提高容错性和维护性) ) ) ) ) ) ) )。

2 .异步加速(与数据库串行、并行相同) () ) ) ) ) )。

3 .削山填谷(提高系统稳定性)。

例如,前端发送了5000个请求,而后端只能处理2000个请求。 此时,服务器会爆炸。 使用MQ,前端和MQ交互,MQ将请求相对缓慢但缓慢地发送到后端,具体取决于前端请求量和后端能够处理的数量,后端不会导致服务器崩溃

MQ的缺点1 .如何保证系统可用性下降(系统部署的外部依赖越多,系统稳定性越差,MQ停机会影响业务) ——的高可用性?

2 .如何避免丢失会增加系统复杂性的——邮件?

与常见的MQ不同

MQ工作模式1、工作队列2、发布和订阅模式3、路由路由模式4、主题模式5、标题模式6、RPC远程调用模式

有关详细信息,请访问https://www.rabbit MQ.com/get started.html

MQ设计思路的可伸缩性:设计为分布式,例如分为nameBervice和broker; broker负责主题消息的存储、管理、发布等功能; bs是注册中心,维护所有Brokers信息。 这将提高吞吐量和容量。

可靠性:数据落入磁盘,可恢复、可持续。 然后按顺序写随机读取以提高性能。

容错能力:一些机器停机后,必须拥有像zookeeper这样的投票选举功能,以确保集群稳定运行。

MQ常见面试问题1.1、场景业务

示例:

需求:1.下单后,30分钟为付款,取消订单,回滚库存

2 .新用户注册成功7天后,用邮件发送问候

解: MQ高级特殊效果-使用延迟队列(设置消耗此消息的时间) )

P:MQ不提供延迟队列功能。 但是,可以使用TTL死消息队列的组合来实现延迟队列的效果

1.2、信息积压、重复消费、信息丢失等如何处理? 解决方案?

消息积压:

一般来说,信息积压基本上可以分为几种情况。

消费者信息的速度跟不上生产速度,主要是业务逻辑没有设计消费者和生产者的平衡,增加消费者的数量等,变更业务流程和逻辑保证消费度跟上生产信息的速度。

消费者发生了异常,无法接收新消息。 这种问题需要调查消费逻辑是否又是一个问题,需要优化过程。

解决方案:

1 .分割MQ,生产者为MQ1人,消费者为MQ1人,编写程序模拟生产者MQ的消费速度后发送给消费者MQ。 如果消息不及时,只需处理生产者的QQ积压消息,不影响消费者的QQ

2 .分割MQ。 生产者是MQ,消费者是MQ。 编写程序拦截生产者MQ,定义全局静态变量记录上次消耗的时间。 如果上次时间和当前时间的差小于消费者的处理时间,则将其发送到延迟队列(可以通过死循环实现)并发送到消费者的MQ。 消息积压只是处理生产者MQ的积压消息,而不影响消费者MQ

3 .使用redis的列表或ZSET作为接收消息缓存,根据消费者的处理时间时机编写从redis获取消息并发送到MQ的程序

4 .设置消息的有效期,过期后进入死记录,编写处理死消息的程序(像队列一样重做,或者无论是处理还是记录在数据库中都延迟处理) )。

重复消耗(为什么重复消耗),首先,消费者通常在消耗消息时,在消耗结束后,向消息队列发送确认消息,消息队列知道该消息已经被消耗,并将该消息从消息队列中删除

但是,由于网络传输等故障,消息队列确认消息没有到达,所以消息队列不知道自己消耗了该消息,再次向其他消费者分发了消息。

针对以上问题,一种解决方案是保证消息的唯一性,使得即使多次传输也不影响消息的多次消耗; 保证消息的等幂性;

例如,对写入消息队列的数据进行唯一标记,在消耗消息时,判断是否由唯一标记消耗;

消息丢失:1.消息持久化

1.Exchange设置持久化: durable:true

2 .队列设置持久化

3 .消息持久化发送

2.ack确认机制

1 .信息发送确认

2 .消息接受确认

3 .设置集群镜像模式

四.消息补偿机制

1.3、MQ的使用场景,为什么要使用MQ、MQ的优劣

1.4、使用MQ时,有什么问题,怎么解决

高级方向图:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。