zoukankan      html  css  js  c++  java
  • 菜鸟刷面试题(二、RabbitMQ篇)

    目录:

    • rabbitmq 的使用场景有哪些?
    • rabbitmq 有哪些重要的角色?
    • rabbitmq 有哪些重要的组件?
    • rabbitmq 中 vhost 的作用是什么?
    • rabbitmq 的消息是怎么发送的?
    • rabbitmq 怎么保证消息的稳定性?
    • rabbitmq 怎么避免消息丢失?
    • 要保证消息持久化成功的条件有哪些?
    • rabbitmq 持久化有什么缺点?
    • rabbitmq 有几种广播类型?
    • rabbitmq 怎么实现延迟消息队列?
    • rabbitmq 集群有什么用?
    • rabbitmq 节点的类型有哪些?
    • rabbitmq 集群搭建需要注意哪些问题?
    • rabbitmq 每个节点是其他节点的完整拷贝吗?为什么?
    • rabbitmq 集群中唯一一个磁盘节点崩溃了会发生什么情况?
    • rabbitmq 对集群节点停止顺序有要求吗?

    rabbitmq 的使用场景有哪些?

    1、异步调用

    2、应用解耦

    3、流量削峰

    4、数据冗余

    5、延迟队列

    6、分布式事务

    ......

    rabbitmq 有哪些重要的角色?

    1、生产者:发送消息的角色。

    2、消费者:接收并处理消息的角色。

    3、消息代理者:传递消息的角色,本身不产生和消费消息。

    rabbitmq 有哪些重要的组件?

    1、生产、消费者

    2、消息、信道

    3、交换器、路由键、队列、broker

    rabbitmq 中 vhost 的作用是什么?

    vhost可以看作是小型的RabbitMQ服务器,他拥有自己独立的交换器、队列、绑定关系、以及权限管理

    客户端连接RabbitMQ时必须制定一个vhost,默认使用"/"

    也就是说一个RabbitMQ服务可以拥有很多个子RabbitMQ服务,这些字RabbitMQ服务可以为其它很多应用程序提供服务;这样可以减少RabbitMQ服务器搭建的成本

    rabbitmq 的消息是怎么发送的?

    生产者通过信道将消息发送到交换器,然后交换器再根据路由键将消息路由到对应的队列中。

    rabbitmq 怎么保证消息的稳定性?

    对于发送方来说,可以使用事务或更轻量级别的发送方确认机制来保证消息达到RabbitMQ服务器。

    对于接收方来说,autoAck设置成false,在处理完消息后再手动确认

    rabbitmq 怎么避免消息丢失?

    1、队列的durable设为true,将消息持久化到磁盘。

    2、采用消费者确认模式。

    3、对RabbitMQ集群,通过镜像队列备份数据。

    4、可以将requeue设置为true,将漏处理的消息重新入队。

    要保证消息持久化成功的条件有哪些?

    1、队列必须为持久化的

    2、消息的投递模式必须是持久化的,deliveryMode=2

    3、消息已到达持久化的交换器和队列

    rabbitmq 持久化有什么缺点?

    持久化会多一次IO操作,在一定程度上会降低RabbitMQ的吞吐量,如果不计服务器成本的话可以考虑使用固态硬盘(SSD)来优化

    rabbitmq 有几种广播类型?

    fanout、direct、topic。

    rabbitmq 怎么实现延迟消息队列?

    采用死信交换器,也有些人叫做死信队列,在创建队列时指定x-message-ttl、x-dead-letter-exchange这两个参数来实现(利用消息过期会进入死信队列的特性)。

    rabbitmq 集群有什么用?

    1、不仅可以线性扩展RabbitMQ的吞吐量。

    2、还可以使用镜像队列来降低消息丢失的风险。

    3、以及某台服务器出现问题后RabbitMQ还能正常的提供服务。

    rabbitmq 节点的类型有哪些?

    磁盘节点和内存节点:

    1、磁盘节点主要用于持久化交换器、队列及用户角色权限等

    2、内存节点主要用于读写RabbitMQ消息,但消息都存储在内存中,服务器重启则消息丢失;但其性能高于磁盘节点。

    rabbitmq 集群搭建需要注意哪些问题?

    1、保证各个节点的cookie一致,否则节点之间无法通信。

    2、必须存在一个磁盘节点,高可用的话最好一个以上

    rabbitmq 每个节点是其他节点的完整拷贝吗?为什么?

    不是;集群节点不对其它节点的队列进行复制,只会存储队列所在节点及元数据

    rabbitmq 集群中唯一一个磁盘节点崩溃了会发生什么情况?

    虽然还能够正常的读写消息,但无法创建交换器、队列、绑定关系以及用户和用户的权限角色等

    rabbitmq 对集群节点停止顺序有要求吗?

    停止服务:应当先关闭内存节点,再关闭磁盘节点。先关闭磁盘节点的话会导致无法创建交换器、队列、绑定关系,从而可能会导致数据丢失。

    启动服务:先启动磁盘节点,再启动内存节点。

  • 相关阅读:
    精通CSS高级Web标准解决方案(5、对列表应用样式和创建导航条)
    精通CSS高级Web标准解决方案(4、对链接应用样式)
    精通CSS高级Web标准解决方案(3-1 背景图像与图像替换)
    【高性能并行计算】——第一课
    动态规划算法详解及经典例题
    分治算法详解及经典例题
    CUDA线程、线程块、线程束、流多处理器、流处理器、网格概念的深入理解
    【模式识别与机器学习】——最大似然估计 (MLE) 最大后验概率(MAP)和最小二乘法
    【计算机算法设计与分析】——NP
    【模式识别与机器学习】——PCA与Kernel PCA介绍与对比
  • 原文地址:https://www.cnblogs.com/bzfsdr/p/12041579.html
Copyright © 2011-2022 走看看