RocketMQ

文章目录

  • 一、消息中间件的产生的背景
    • 1.1什么是消息中间件
    • 1.2.消息中间件使用场景
      • 1.2.1 异步处理
      • 1.2.2应用解耦
  • 二、RocketMQ
    • 2.1.RocketMQ的架构及概念
    • 2.2消费模式
    • 2.3发送方式的区别


一、消息中间件的产生的背景

在网络通讯中,Http请求默认采用同步请求方式,基于请求与响应模式,在客户端与服务器进行通讯时,客户端调用服务端接口后,必须等待服务端完成处理后返回结果给客户端才能继续执行,这种情况属于同步调用方式。如果服务器端发生网络延迟、不可达的情况,可能客户端也会受到影响

1.1什么是消息中间件

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)例如:寄快递

RocketMQ_第1张图片

1.2.消息中间件使用场景

1.2.1 异步处理

场景说明:用户注册后,需要发注册邮件和注册短信
传统的做法有两种

  • a.串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信,以上三个任务全部完成后,返回给客户端
    RocketMQ_第2张图片

  • b.并行方式:将注册信息写入数据库成功后,发送注册邮件的同时发送注册短信,以上三个任务完成
    后,返回给客户端;与串行的差别是并行的方式可以提高处理的时间
    RocketMQ_第3张图片

引入消息队列,改造后的架构如下
RocketMQ_第4张图片
按照以上约定,用户的响应时间相当于是注册信息写入数据库的时间,也就是50毫秒。注册邮件,发送短信写入消息队列后,直接返回,因此写入消息队列的速度很快,基本可以忽略,因此架构改变后,系统的吞吐量比串行提高了3倍,比并行提高了2倍

1.2.2应用解耦

场景说明:用户下单后,订单系统需要通知库存系统,传统的做法是订单系统调用库存系统的接口
RocketMQ_第5张图片
订单系统:假如在下单时库存系统不能正常使用,也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了,实现订单系统与库存系统的应用解耦

二、RocketMQ

这里我们介绍一款中间件RocketMQ,RocketMQ是阿里巴巴开源的分布式消息中间件,现在是Apache的一个顶级项目。在阿里内部使用非常广泛,已经经过了"双11"这种万亿级的应用场景考验。


特点
1.能够保证严格的消息顺序
2.提供丰富的消息拉取模式
3.高效的订阅者水平扩展能力
4.实时的消息订阅机制
5.亿级消息堆积能力

2.1.RocketMQ的架构及概念

RocketMQ_第6张图片

如上图所示,整体可以分成4个角色,分别是:NameServerBrokerProducerConsumer

  • NameServer(邮局)
    • 消息队列的协调者,Broker向它注册路由信息,同时Producer和Consumer向其获取路由信
  • Broker(邮递员)
    • Broker是RocketMQ的核心,负责消息的接收,存储,投递等功能
  • Producer(寄件人)
    • 消息的生产者,需要从NameServer获取Broker信息,然后与Broker建立连接,向Broker发
      送消息
  • Consumer(收件人)
    • 消息的消费者,需要从NameServer获取Broker信息,然后与Broker建立连接,从Broker获
      取消息
  • Topic(地区)
    • 用来区分不同类型的消息,发送和接收消息前都需要先创建Topic,针对Topic来发送和接收
      消息
  • Message Queue(邮件)
    • 为了提高性能和吞吐量,引入了Message Queue,一个Topic可以设置一个或多个Message
      Queue,这样消息就可以并行往各个Message Queue发送消息,消费者也可以并行的从多个
      Message Queue读取消息
  • Message
    • Message 是消息的载体。

2.2消费模式

消费模式由Consumer决定,消费维度为Topic
1.集群消费:

  • 一条消息只会被同Group种的一个Consumer消费
  • 多个Group同时消费一个Topic时,每个Group都会有一个Consumer消费到数据
    2.广播消费:
  • 消息将对一个Consumer Group下的各个Consumer实例都消费一边,即即使这些Counsumer属于同一个Consumer Group,消息也会被Counsumer Group种的每个Counsumer都消费一次。

2.3发送方式的区别

发送方式 发送TPS 发送结果反馈 可靠性
同步发送 不丢失
异步发送 可能丢失
单向发送 最快 可能丢失

你可能感兴趣的:(rocketmq)