RabbitMQ笔记

一 消息队列组件和 RabbitMQ

  1. 消息中间件(MOM:Message Oriented Middleware)
名称 MQTT kafka RocketMQ Redis RabbitMQ
开发语言 C Java Java C Erlang
客户端 + + Java + +
消费 push pull pull/push pull push
依赖 - JVM/ZK nameserver - Erlang
持久化 - 磁盘 磁盘 内存 内存/磁盘
解耦 Y Y Y Y Y
扩展 N Y Y O Y
削峰 N Y Y N O
回溯 N Y Y O O
顺序 Y 分区内 O Y O
协议 MQTT 私有 私有 redis AMQP
  1. RabbitMQ 特性
  • 服务端
特性 实现原理
可靠性 持久化 + 传输确认 + 发布确认
灵活路由 Exchange before queue
高可用 mirror 镜像队列
扩展性 集群 + 动态扩展集群
跨协议 STOMP、MQTT 等
功能扩展 支持插件实现多方面扩展
  • 客户端
    [1] 几乎支持所有常用语言,如Java、C、python等,但是不支持Erlang(RabbitMQ的开发语言)
    [2] 支持 broker push 和 consumer pull 两种消费模式,前者将不再有缓存削峰特性
  • 运维
    RabbitMQ 提供了一个易用的用户界面,可以通过这个界面实现消息和集群节点的监控和管理
  1. RabbitMQ 优劣
  • 劣势
    [1] Erlang开发,不利于二次开发
    [2] 为了实现 AMQP 使得实现本身比较重,门槛被拉高

  • 优势
    [1] Erlang开发,性能较高且稳定
    [2] 实现了 AMQP 功能全面,
    [3] 确认机制 实现消息优先级,能保证消息被消费

  1. RabbitMQ 文档
  • 服务端文档
    服务端文档
  • 客户端文档
    客户端文档
  • 源码
    git clone https://github.com/rabbitmq/rabbitmq-server.git

二 RabbitMQ 部署

  1. 环境准备
  • RabbitMQ 集群环境 : centos7*3
  • ansible 执行环境 + yum仓库环境 : centos7*1
  1. 搭建本地yum仓库
  2. 安装依赖环境
  3. ansible playbook编写
  4. 部署执行

三 RabbitMQ 集群配置

四 RabbitMQ 关键性能优化参数

五 RabbitMQ 消息积压问题分析和解决

六 RabbitMQ 流控和性能瓶颈

七 RabbitMQ 测试

你可能感兴趣的:(RabbitMQ笔记)