IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> RabbitMQ 介绍 -> 正文阅读

[大数据]RabbitMQ 介绍

RabbitMQ

介绍

  • RabbitMQ是一个基于AMQP的开源消息管理系统
  • 可以作为消息中间件
  • 支持主流操作系统:Linux、Windows、MacOX等。
  • 多种开发语言支持,java、python、ruby、PHP、node.js等。

RabbitMQ基本工作流程

  • **Broker:**是一个还是RabbitMQ集群

  • 虚拟主机: Broker由一个交换机(Exchange)和一个消息队列(Queue)组成,两者结合起来称为一个虚拟主机(Virtual Host),一个rabbitMQ有7个交换机

  • **绑定:**队列必须绑定到交换才能接收消息

  • Channel: Channel,复用连接中独立的双向数据流通道。通道是在真实的 TCP 连接中建立的虚拟连接。AMQP 命令通过通信发送。无论是发布消息、订阅、排队还是接收消息,这些动作都是通过通道完成的。由于操作系统建立和销毁 TCP 的开销很大,因此引入了通道的概念来重用 TCP 连接。

  • **发送消息:**发布者(publisher)通过连接通道(Channel)将消息发送到交换(Exchange),交换将消息分发到消息队列(队列可以是一个或多个)

  • **接收消息:**接收者(Consumer)通过连接通道(Channel)连接到消息队列,获取消息

  • 补充:

    • 为什么要有渠道:
      • 每次连接完成都会断开连接去取数据,无法同时取多个队列的消息,也很消耗性能
      • 一个链接中可以有多个通道,不同的通道可以通过不同的队列获取不同的消息
      • 通道使用完毕后,关闭通道即可
    • 消息由消息头和消息体组成。

      • 消息体是不透明的,消息头由一系列可选属性组成,例如routing-key(路由密钥)、priority(相对于其他消息的优先级)、delivery-mode(指出消息可能需要持久化存储) ) 等待
      • 并不是说交换机和路由连接成功,队列就可以拿到数据了。该队列只能根据routing-key(路由密钥)接收添加产品的消息,其他队列可以接收和存储修改和删除。
    • Broker 中有 6 种消息传递模式。

RabbitMQ常用命令和接口

  1. 常用命令
    • 启动服务:systemctl start rabbitmq-server.service
    • 停止服务:systemctl stop rabbitmq-server.service
    • 查看服务状态:systemctl status rabbitmq-server.service
    • 重启服务:systemctl restart rabbitmq-server.service
  2. 管理界面
    • 安装rabbitmq时需要关闭防火墙:systemctl stop firewalld.service
    • 启动后台管理界面:rabbitmq-plugins enable rabbitmq-management
    • 访问页面:http://127.0.0.1:15367/默认不允许用户远程连接,不支持指定ip登录
    • 默认用户名和密码:guest
  3. 账户管理命令
    • 添加管理员账号密码:rabbitmqctl adduser admin admin
    • 分配账号角色:rabbitmqctl set_user_tags admin adminstrator(设置管理员权限,这个账号可以远程登录,其他后台监控权限也可以在页面添加)
    • 更改密码:rabbitmqctl change_password admin 123456
    • 查看用户列表:rabbitmqctl list_users
  4. 端口:
    • 5672:Rabbitmq 的编程语言客户端连接端口
    • 15672:rabbitmq 管理接口端口
    • 25672:rabbitmq 集群端口

RabbitMQ的优缺点

  1. RabbitMQ的优势
    • 可以搭建一个集群,形成一个大型的Broker中间件集群,可以实现负载均衡,从而实现高可用

    • 便捷的管理界面

    • 有跟踪机制:如果消息异常,用户可以看到发生了什么
    • **有序性:**消息存储在队列中,因此首先处理第一个

    • 有插件机制,可以多方面进步,也可以自己写插件

    • 支持多种消息队列协议,如STOMP、MQTT等。

    • 有消息消费确认机制
    • 队列和消息都可以持久化,粒度更小,灵活性更高。

  2. RabbitMQ 的缺点
    • **系统的可用性降低。**一旦Rabbitmq挂了,消息就不能继续传输了

    • 系统稳定性降低
      • 系统向中间件发送消息,突然由于网络故障等问题导致数据丢失;
    • 插入大量带有重复数据和脏数据的消息

    • 一致性差
      • 如果ABC的三个系统写库,A和B都写成功,C失败怎么办,导致数据库不一致。

RabbitMQ应用场景

  1. 异步处理
    • 比如用户注册时的确认邮件和短信交给rabbitMQ异步处理
  2. 应用解耦
    • 例如,发送和接收消息都可以使用消息队列,它具有一定的缓冲功能
  3. 流量高峰
    • 一般用于秒杀活动,可以控制用户数量,也可以减少流量
  4. 日志处理
    • 分别存储info、warning、error等不同的记录

常见的MQ产品

  1. ActiveMQ:基于JMS
  2. RabbitMQ:基于AMQP协议,erlang语言开发,稳定性好
  3. RocketMQ:基于JMS,阿里巴巴产品,目前移交给Apache基金会
  4. Kafka:分布式消息系统,高吞吐量,处理日志,Scala和java编写
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-31 15:30:56  更:2021-08-31 15:31:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:38:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码