Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RabbitMQ introduction

RabbitMQ introduction

Avatar for baishen

baishen

June 06, 2014
Tweet

Other Decks in Programming

Transcript

  1. AMQP协议 AMQP协议 • Advanced Message Queuing Protocol • 由金融领域的软件专家发起 由金融领域的软件专家发起

    • 全行业广泛使用的消息队列规范 • 面向消息、队列、路由 • 可靠性 安全性要求严格 可靠性、安全性要求严格 • 主要实现:ActiveMQ、ZeroMQ、RabbitMQ
  2. RabbitMQ RabbitMQ 完全兼容 协 • 完全兼容AMQP协议 • 基于Erlang语言开发,高稳定性和高性能 基于Erlang语言开发,高稳定性和高性能 •

    高可靠性,支持持久化 • 强大的路由功能 • 支持集群和负载均衡 支持集群和负载均衡 • 客户端支持多种语言开发 • 完全开源
  3. RabbitMQ关键概念 RabbitMQ关键概念 • P d 消息生产者 • Producer:消息生产者 • Consumer:消息消费者

    • Broker:中间人,消息队列服务器实体 • Exchange:消息交换机。接受消息和路由信息,然后将消息发 送给消息队列 • Queue:消息队列载体,每个消息都会被投入到一个或多个队 Queue:消息队列载体,每个消息都会被投入到 个或多个队 列 • Binding:绑定,把exchange和queue按照路由规则绑定起来 • Routing Key 路由关键字 exchange根据这个关键字进行消息 • Routing Key:路由关键字,exchange根据这个关键字进行消息 投递 • Vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同 用户的权限分离 用户的权限分离 • Channel:消息通道,在客户端的每个连接里,可建立多个 channel,每个channel代表一个会话任务
  4. RabbitMQ路由方式 RabbitMQ路由方式 广播式 不论消息路由关键字是什 • Fanout:广播式。不论消息路由关键字是什 么,这条消息都会被路由到所有与该交换 机绑定的队列中 机绑定的队列中 •

    Direct:直接式。通过精确匹配消息的路由 直接式 精确匹配消息的路由 关键字,将消息路由到零个或多个队列中 • Topic:主题式 通过小的路由关键字和绑 Topic:主题式。通过小的路由关键字和绑 定关键字的模式匹配,将消息路由到绑定 的队列中 绑定关键字支持通配符:*匹配 的队列中。绑定关键字支持通配符: 匹配 一个词组,#匹配零个或多个词组
  5. RabbitMQ持久化 RabbitMQ持久化 默 不持久化 消息保存在 中 重启消 • 默认不持久化,消息保存在ram中,重启消 失

    • 持久化,消息保存到disk,重启不消失 设置持久化方式 • 设置持久化方式: • • exchange exchange设为 设为durable durable g g 设为 设为 • • queue queue设置为 设置为durable durable 的 的 设为 设为 • • message message的 的Delivery Mode Delivery Mode设为 设为2 2
  6. RabbitMQ集群 RabbitMQ集群 • 单点部署可靠性差,实际使用时按通常会 部署成cluster • exchange和queue分布在各个节点,消息只 保存在一个节点 保存在一个节点 •

    优点: 节省存储空间,不用同步数据,性能 好 • 缺点: 可靠性较差 一个节点挂了 存储在 • 缺点: 可靠性较差, 个节点挂了,存储在 这个节点的消息无法读取
  7. RabbitMQ mirror queue集群 RabbitMQ mirror queue集群 节点分为 和 收到消息后 •

    节点分为master和slave,master收到消息后 会在各个slave节点各保存一份 • master收到consumer的ack后,才会删除消 息 并同时删除slave节点的消息 息,并同时删除slave节点的消息 • 若master节点失效,则mirror queue会自动 选举出一个节点作为master • 前端可以加一个proxy进行负载均衡 • 前端可以加 个proxy进行负载均衡