Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
RabbitMQ introduction
Search
baishen
June 06, 2014
Programming
110
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RabbitMQ introduction
baishen
June 06, 2014
Other Decks in Programming
See All in Programming
R8 の設定見直しでアプリサイズ削減
andpad
0
220
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
790
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
200
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
ActionController meets Protocol Buffers
sorah
0
450
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
200
速習iPhone Duo対応
yuukiw00w
2
990
wkhtmltopdfの次どうするか問題2026
willnet
2
1.9k
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
Featured
See All Featured
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Leo the Paperboy
mayatellez
10
2.4k
Embracing the Ebb and Flow
colly
88
5.2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How GitHub (no longer) Works
holman
316
150k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Faster Mobile Websites
deanohume
310
32k
GraphQLとの向き合い方2022年版
quramy
50
15k
The Language of Interfaces
destraynor
162
27k
Ethics towards AI in product and experience design
skipperchong
2
430
Transcript
RabbitMQ介绍 @白珅 @白珅 2014年06月06日
Agenda Agenda 消息队列介绍 • 消息队列介绍 • AMQP介绍 AMQP介绍 • RabbitMQ介绍
• RabbitMQ持久化 • RabbitMQ集群 RabbitMQ集群
什么是消息队列 什么是消息队列 • Message Queue • 应用之间的通信工具 应用之间的通信工具 • 提供异步通信方式
• 存储消息的容器 • Pubish/Subscribe模式 Pubish/Subscribe模式
为什么使用消息队列 为什么使用消息队列 • 减少耦合:使用异步的方式分离业务,不 阻塞正常业务 • 扩展性:在不影响现有业务的情况下,增 加新业务 加新业务 •
冗余:处理数据失败时,可以将消息保存 在队列中
AMQP协议 AMQP协议 • Advanced Message Queuing Protocol • 由金融领域的软件专家发起 由金融领域的软件专家发起
• 全行业广泛使用的消息队列规范 • 面向消息、队列、路由 • 可靠性 安全性要求严格 可靠性、安全性要求严格 • 主要实现:ActiveMQ、ZeroMQ、RabbitMQ
RabbitMQ RabbitMQ 完全兼容 协 • 完全兼容AMQP协议 • 基于Erlang语言开发,高稳定性和高性能 基于Erlang语言开发,高稳定性和高性能 •
高可靠性,支持持久化 • 强大的路由功能 • 支持集群和负载均衡 支持集群和负载均衡 • 客户端支持多种语言开发 • 完全开源
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代表一个会话任务
RabbitMQ消息传递流程 RabbitMQ消息传递流程
RabbitMQ路由方式 RabbitMQ路由方式 广播式 不论消息路由关键字是什 • Fanout:广播式。不论消息路由关键字是什 么,这条消息都会被路由到所有与该交换 机绑定的队列中 机绑定的队列中 •
Direct:直接式。通过精确匹配消息的路由 直接式 精确匹配消息的路由 关键字,将消息路由到零个或多个队列中 • Topic:主题式 通过小的路由关键字和绑 Topic:主题式。通过小的路由关键字和绑 定关键字的模式匹配,将消息路由到绑定 的队列中 绑定关键字支持通配符:*匹配 的队列中。绑定关键字支持通配符: 匹配 一个词组,#匹配零个或多个词组
RabbitMQ路由方式 RabbitMQ路由方式
RabbitMQ持久化 RabbitMQ持久化 默 不持久化 消息保存在 中 重启消 • 默认不持久化,消息保存在ram中,重启消 失
• 持久化,消息保存到disk,重启不消失 设置持久化方式 • 设置持久化方式: • • exchange exchange设为 设为durable durable g g 设为 设为 • • queue queue设置为 设置为durable durable 的 的 设为 设为 • • message message的 的Delivery Mode Delivery Mode设为 设为2 2
RabbitMQ集群 RabbitMQ集群 • 单点部署可靠性差,实际使用时按通常会 部署成cluster • exchange和queue分布在各个节点,消息只 保存在一个节点 保存在一个节点 •
优点: 节省存储空间,不用同步数据,性能 好 • 缺点: 可靠性较差 一个节点挂了 存储在 • 缺点: 可靠性较差, 个节点挂了,存储在 这个节点的消息无法读取
RabbitMQ集群 RabbitMQ集群
RabbitMQ mirror queue集群 RabbitMQ mirror queue集群 节点分为 和 收到消息后 •
节点分为master和slave,master收到消息后 会在各个slave节点各保存一份 • master收到consumer的ack后,才会删除消 息 并同时删除slave节点的消息 息,并同时删除slave节点的消息 • 若master节点失效,则mirror queue会自动 选举出一个节点作为master • 前端可以加一个proxy进行负载均衡 • 前端可以加 个proxy进行负载均衡
RabbitMQ mirror queue集群 RabbitMQ mirror queue集群
RabbitMQ负载均衡 RabbitMQ负载均衡
Thank you!