RabbitMQ实战:高效部署分布式消息队列(读书笔记)
2016-02-03 21:10
274 查看
RabbitMQ实战:高效部署分布式消息队列
目录
1历史简介
2
理解消息通信
3
运行和管理Rabbit
4
编码与模式
5
集群及处理失败
6
故障恢复
7
warren和Shovel:故障转移和复制
8
从Web端管理RabbitMQ
9
使用REST API控制Rabbit
10
监控
11
提升性能,保障安全
12
聪明的Rabbit:扩展RabbitMQ
13
附录
历史简介
理解消息通信
信道(channel)接受者确认之后消息就会从队列中删除(anycast任播?)
AMQP交换器(exchange)和绑定(bind):
4种类型的交换器:direct(如果key匹配)、fanout(广播)、topic(汇聚,使用*通配符)、headers
队列绑定到交换器
多租户:vhost(感觉RabbitMQ完全可以理解为一个HTTP 2.0 Web服务器啊?)
持久化
durable=true;投递模式选项=2(令人震惊!这什么技术书???)
性能不佳?靠
?AMQP事务
更好的:‘发送方确认模式’(信道设为confirm模式)
Python客户端演示:
import pika
conn_params = ...
conn_broker = pika.BlockingConnection(conn_params)
chan = conn_broker.channel()
chan.exchange_decalre(exachange="name-a", type="direct", passive=False, durable=True, auto_delete=False) #注意名字需要保证唯一性
chan.queue_declcare(queue="q-1")
chan.queue_bind(queue="q-1", exachange="name-a", routing_key="k") #靠
...
chan.basic_consume(msg_consumer, queue="q-1", consumer_tag=...)
chan.start_consuming()
当信道为confirm模式时,发送的每条消息都会返回唯一ID(有点类似于数据库插入记录时的生成ID??)
消息ID需要由发送者自己维护?靠
运行和管理Rabbit
rabbitmq.config:这个配置文件本身就是Erlang代码,还挺时髦的~Mnesia是一个文档型数据库???
Mnesia会基于主机名创建数据库名称?wtf
php-amqplib
疑难解答
Erlang cookie
badrpc、nodedown
编码与模式
发后即忘告警日志
图片缩略图(fanout)
嗯,php代码是在后台执行的吗?
用RabbitMQ实现RPC
其实就是借用了前者的消息序列化代码吧,脑残
私有队列和发送确认
怎么保证只有发送者收到确认(机制?),即使指定了reply_to字段和exclusive参数的情况下
我觉得用pipe-filter-lambda的术语来描述分布式消息队列通信似乎更容易理解一点?
集群及处理失败
内部集群架构4种类型的内部元数据:队列、交换器、bind、vhost
分布式交换器(只不过是一张查询表)
routing_key让我想起了SDN中的内部路由IP地址。。。
内存节点 or 磁盘节点
元数据更新必须写到至少一个磁盘节点,内存节点可以认为是磁盘读快照,不能被更新(Me:事实上也是可以的,比如Spark这类基于内存的分布式流处理框架)
镜像队列(master-slave)和保留消息
声明镜像队列:传入一个x-ha-policy参数到queue.declare调用中(手工指定master?Fk)
故障恢复
为Rabbit做负载均衡HAProxy(不就是一个TCP代理嘛)
warren和Shovel:故障转移和复制
warren:主/备份(无共享)Shovel:自定义一个RabbitMQ上的队列和另一个RabbitMQ上的交换器的复制关系(异步复制,让我想起了网络传输协议中的ATM。。。)
从Web端管理RabbitMQ
超越rabbitmqctl:Management插件CLI
使用REST API控制Rabbit
REST API一般基于HTTP,有连接开销,一般仅用于‘控制’吗?监控
Nagios提升性能,保障安全
消息持久化:delivery-mode=2topic:11秒时间,针对2000个模式,匹配100000个topic(每秒10w个消息投递?)
Erlang进程计数:上限2^20
SSL连接
聪明的Rabbit:扩展RabbitMQ
STOMP:基于文本的协议(可与ActiveMQ一起工作)LDAP认证
自定义交换器:Riak
靠,这里完全就是Erlang编程了
附录
node-amqp、Rabbit.js这书太弱了,Fk
相关文章推荐
- 【数据库】FaceDataset常用的人脸数据库
- IT痴汉的工作现状25-技术之养成
- 深度剖析——超融合架构应用与实践分享
- 为何谷歌围棋AI AlphaGo可能会把李世石击溃
- 了解HTML表单之input元素的30个元素属性
- java第二弹--基础知识
- 吕鑫MFC学习系列二
- VC6.0 error LNK2001: unresolved external symbol _main解决办法
- IP address 与 bigint 之间的转换
- C#成神之路<8> C#引用数据类型详述
- 二分查找
- 详解c++指针的指针和指针的引用
- ubuntu14.04设置静态ip
- Java并发之AbstractQueuedSynchronizer分析
- 记录mysql
- 【slighttpd】基于lighttpd架构的Server项目实战(1)—前言及设计思路
- (转)C++ stringstream介绍,使用方法与例子
- 分布式缓存学习总结
- linux目录对照命令——meld
- 【SSH框架】--Hibernate入门