RabbitMQ基础篇 (一)

一.主流消息中间件的选型

        1 .ActiveMQ(最"老"老牌,但维护比较慢)

                1.1有Apache出品,java开发,支持JMS1.1协议和J2EE1.4的规范

                1.2支持广泛的连接协议:OpenWire/STOMP/REST/XMPP/AMQP

                1.3支持多种语音客户端,支持插件,管理方便,便于配置集群代理

     优点: 基于JAVA,跨平台运行,可以用JDBC连接多种数据库,有完善的界面、监控、安                          全机制,自动重连和错误重重试

     缺点: 社区活跃度不及RabbitMQ,目前重心放到6.0产品Apollo,对5的Bug维护少,不适合用于上千个对列的应用场景

        2.RabbitMQ(最"火",适合大小公司,各种场景通杀)

                2.RabbitMQ(最"火",适合大小公司,各种场景通杀)

                2.2高可靠性,支持发送确认,投递确认等特性

                2.3高可用,支持镜像对列

                2.4支持插件

        优点: 基于Erlang,支持高并发,支持多种平台,多种客户端,文档齐全,可靠性,在互联网公司有较大规模的应用,社区活跃度搞

        缺点:Erlang语言较为小众,不利于二次开发, 代理架构下,中央节点增加了延迟,影响性能,使用了AMQP协议,使用起来有学习成本

        3.RocketMQ(最"猛",功能强,但考验公司的运维能力)

                3.1阿里巴巴团队开发,经受双十一考验

                3.2能够保证严格的消息顺序

                3.3亿级消息堆积能力

                3.4丰富的消息拉取模式

        优点:基于java开发,方便二次开发,单机支持1万以上的持久化对列,内存和磁盘都有一份数据,保证性能+高可用,开发度较活跃,版本更新很快

        缺点:客户端种类不多,较成熟的是java,没有Web界面,提供一个CLI(命令行界面),社区关注度及成熟不如RabbitMQ

        4.Kafka(最"强",支持超大量数据,但消息可靠性弱)

                4.1Linkedln开发的分布式的日子提交系统

                4.2独特的分区特性,适用于大数据系统

                4.3性能高效、可扩展良好

                4.4可复制、可容错

        优点:原生的分布式系统,零拷贝技术,减少IO的操作步骤,提高系统的吞吐量,快速持久化,可以在O(1)的系统开销小进行消息持久化,支持数据批量发送和拉取

        缺点:单机超过64个对列/分区时,性能明显劣化, 使用短轮询方式,实时性取决于轮询间隔时间,消费失败不支持重试,可靠性比较差

二.RabbitMQ高性能的原因

        1.RabbitMQ底层使用Erlang实现,天生具有高性能基因        

                1.1Erlang的特点:

                        1.1.1通用的面向并发的编程语言,适用于分布式系统

                        1.1.2基于虚拟机解释运行,跨平台部署

                        1.1.3进程上下文切换效率远高于C语言

                        1.1.4有这和原生Socket一样的延迟

三.AMQP协议介绍

       1.Broker:接收和分发消息的应用,RabbitMQ就是Message Broker

        2.Virtual Host:虚拟Broker,将多个单元隔离开

        3.Connection:publisher/consumer和broker之前的TCP连接

        4.Channel:connection内部建立的逻辑连接,通常每个线程创建单独的channel

        5.Routing Key:路由键,用来指示消息的路由转发,相当于快递的地址

        6.Exchange:交换机,相当于快递的分拨中心

         7.Queue:消息对列,消息最终被送到这里等待consumer取走

        8.Binding:exchange和queue之间的虚拟连接,用于message的分发依据

四.RabbitMQ的心脏(Exchange)

        1.Exchange是AMQP协议和RabbitMQ的核心组件

        2.Exchange的功能是根据绑定关系和路由键为消息提供路由,将消息转发至相应的对列

        3.Exchange的类型:Direct/Topic/Fanout/Headers,其中Headers使用很少,以前三种为主

五.Exchange常用类型简绍

        1.Direct Exchange模式(直接交换模式),Message中的Routing Key如果和Binding key一致,Direct Exchange则将message发到对应的queue中

2.Fanout Exchange模式(广播模式),只要和交换机绑定了的queue,都会接收到消息 

3.Topic Exchange模式(通配符模式),根据Routing Key及通配规则,将消息发送到Queue中,#:匹配任意个数的word, *:匹配任意1个word 

六.RabbitMQ安装

        1.先安装erlang 

        2.在安装RabbitMQ

七.RabbitMQ可视化界面 

        1.访问 http://localhost:15672/#/

        2.默认账号密码:guest , guest

 八.RabbitMQ命令行管理

        1.使用场景

                1.1生产环境、端口限制等不便打开网页端工具的场景

                1.2使用脚本自动化配置RabbitMQ

        2.使用口诀

                2.1想看什么就List什么

                2.2想清空什么就purge什么

                2.3想删除什么就Delete什么

                2.4一切问题记得使用 --help

 

九.RabbitMQ消息交换的关键是什么? 

        1.深刻理解AMQP协议

        2.消息流转流程

                2.1由生产者发送到Exchange,再由路由规则将消息转发到指定的queue,消费者从对列中将消息取走

        3.合理的交换机和对列设置

                3.1交换机数量不能过多,一般来说同一个业务,或者同一类业务使用同一个交换机

                3.2合理设置对列数量,一般来说一个微服务监听一个对列,或者一个微服务的一个业务监听一个队列

                3.3合理配置交换机类型,使用Topic模式时仔细设置绑定键

        4.尽量使用自动化配置

               4.1将创建交换机/对列的操作固话在应用代码中,免去复杂的运维操作,高效且不易出错

                4.2一般来说,交换机由双方同时声明,对列由接收方声明并配置绑定关

                4.3交换机/对列的参数一定要由双方开发团队确认,否则重复声明试,若参数不一致,会导致声明失败

嘿嘿本章就到这啦,希望可以帮到大家了解RabbitMQ!下一章会带着大家去使用MQ,以及后面会有进阶,集群啊等等(来自本人学习的笔记)

        

 

       

 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值