【消息中间件】RocketMQ

一、RocketMQ的构成

RocketMQ的几个角色:
在这里插入图片描述
Nameserver

  • nameserver是服务发现者,集群中各个角色(producer、broker、consumer等)都需要定时(30s)向nameserver上报自己的状态,以便互相发现彼此,超时不上报的话(90s),nameserver会把它从列表中剔除。
  • 底层由netty实现,提供了路由管理、服务注册、服务发现的功能,是一个无状态节点
  • NameServer集群间互不通信,没有主备的概念
  • 内存式存储,broker、topic等信息默认不会持久化

Broker

  • 每个Broker节点,在启动时,都会遍历NameServer列表,与每个NameServer建立长连接,注册自己的信息,之后定时上报。

Producer

  • 随机选择其中一个NameServer节点建立长连接,获得Topic路由信息
  • 与提供topic服务的master建立长连接,且定时向master发送心跳

Consumer

  • 通过NameServer集群获得Topic的路由信息,连接到对应的Broker上消费消息
  • 与Master和Slave都建立连接进行消费消息,Master和Slave都可以读取消息。

二、消息的类型

RocketMQ支持普通消息、分区有序消息、全局有序消息、延迟消息和事务消息:

  • 普通消息:称为并发消息,和传统的队列相比,并发消息没有顺序,生产消费都是并行进行的,单机性能可达十万级别的TPS。
  • 分区有序消息:与Kafka中的分区类似,把一个Topic消息在多个队列“保存”和消费,在每个队列中遵循FIFO(先进先出)原则
  • 全局有序消息:如果把一个 Topic 的分区数设置为 1,那么该 Topic 中的消息就是单队列,所有消息都遵循FIFO(先进先出)的原则。
  • 延迟消息:消息发送后,消费者要在一定时间后,或者指定某个时间点才可以消费。在没有延迟消息时,基本的做法是基于定时计划任务调度,定时发送消息。在 RocketMQ中只需要在发送消息时设置延迟级别即可实现
  • 事务消息:主要涉及分布式事务,即需要保证在多个操作同时成功或者同时失败时,消费者才能消费消息。RocketMQ通过发送Half消息、处理本地事务、提交(Commit)消息或者回滚&
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值