MQ的相关学习

一、什么是MQ?

 MQ代表消息队列,是一种应用程序对应用程序的通信方法;通过消息传递队列发送和接收消息数据,支持应用程序、系统、服务和文件之间的信息交换,这简化了业务应用程序的创建和维护。

消息队列有流量削峰、应用解耦和异步通信三个作用

1.ActiveMQ

ActiveMQ 是 Apache 下的一个子项目。

优点:

  单机吞吐量每秒万级,时效性毫秒级,可用性高,基于主从架构实现高可用性,消息可靠性较低的 概率丢失数据。支持多种语言、支持 Spring2 的特性、支持多种传送协议、支持通过 JDBC 和 journal 提供高 速的消息持久化。

缺点:官方社区现在的维护越来越少;社区活跃度不高。

2.Kafka

Kafka 是一个分布式消息发布订阅系统。为大数据而生的消息中间件,大数据的杀手锏

优点:

单机吞吐量每秒百万级,时效性毫秒级,不会丢失数据,不会导致不可用

缺点:支持消息顺序,但是一台代理宕机后,就会产生消息乱序;消费失败不支持重试;社区更新较慢

3.RocketMQ

RocketMQ 是阿里系下开源的一款分布式、队列模型的消息中间件,3.0 版本名称改为 RocketMQ,是阿里参照 kafka 设计思想使用 java 实现的一套消息队列。

优点:单机吞吐量十万级,时效性毫秒级,消息可以做到 0 丢失,支持 10 亿级别的消息堆积

缺点:支持的客户端语言不多,目前是 java 及 c++;社区活跃度一般; 

二、RocketMQ的详解

  1、RocketMQ 主要由 Producer、Broker、Consumer 三部分组成,其中 Producer 负责生产消息,Consumer 负责 消费消息,Broker 负责存储消息。

  • Consumer 支持 Push 和 Pull 两种消费模式,支持集群消费和广播消费。
  • Producer 支持以多种负载均衡的模式向 Broker 发送消息。

NameSever 需要独立服务部署,但是不妨碍节点互相通信构成集群。

NameSever 可以看作是轻量级的单 体服务,主要的功能:

1、管理 Broker 集群,定期发送心跳包检测 Broker 是否存在。

2、为生产者和消费者以 及 Broker 进行路由管理。 Broker 负责 Topic 和 Queue 的消息存储,支持推和拉两种模式。提供上亿级别的消息顺序消息堆积。此 外提供可视化管理平台 rocketmq-console-ng,这些都是特有功能。

流程如下:

1、NameServer 启动,Broker 进行服务注册,NameServer 需要注册所有的 Broker。

2、服务发现,连接所有的生产者和消费者,并且定时进行心跳包发送。

3、生产者发送消息之前从 NameServer 获取 Broker 的注册列表,根据负载均衡算法选出其中一台 Broker 进行 消息推送。

4、Nameserver 和 Broker 保持长连接,同时每 30S 进行一次心跳检测,如果检测到超过 120S 没有心跳,从 路由表将其删除。

5、消费者订阅某个主题前,需要先从 NameSever 查找对应的 Broker 列表或者某个集群,从 Broker 当中订阅 消息进行消费,同时由 Broker 指定订阅规则。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值