RocketMq应用(一)---设计理念

一、简介

RocketMq是一个基于主题的发布与订阅模式,也就是常说的消息队列,整体设计追求简单与高性能。
核心功能:消息发送、消息存储(broker)、消息消费。

二、特点

1.摒弃了业界常用zookeeper充当信息管理的注册中心,而是使用nameServer来管理元数据(topic的路由信息等)。nameServer集群之间互相不通信,极大降低了nameServer的实现复杂度,相比zookeeper性能有很大提升。

2.高效的IO存储机制。rocketMq追求消息发送的高吞吐量,它的消息存储文件设计成文件组的概念,组内单个文件大小固定,方便引入内存映射机制,所有主题的消息基于顺序写入,极大提升了消息写性能,同时引入了消费队列文件和索引文件,提升了消息消费和消息查找性能。

3.只保证消息被消费者消费,但是允许消息被重复消费,极大简化了rocketmq的内核,消息重复消费的问题可以在业务端解决。

三、设计目标

1.架构模式
rocketMq和大部分消息中间件一样,采用发布订阅模式。
基本组件包括:消息发送者、消息服务器(消息存储)、消息消费、路由发现。

2.顺序消费
rocketMq可以严格保证消息有序,即消费者按照消息到达消息服务器的顺序消费。

3.消息过滤
消费者可以对同一主题下的消息按照规则只消费自己感兴趣的消息。
rocketMq支持在服务端(broker)和消费端的消息过滤机制。

  • 消息在broker端过滤:broker只将消费者需要的消息发送给消费者
  • 消息在消费端过滤:过滤方式完全由消费者定义,缺点是会有很多无用的消息传递到消费者端。

4.消息存储
rocketMq追求消息存储的高性能,引入内存映射机制,所有的主题消息顺序存储在同一个文件中。为了避免消息无限累积,还引入了消息文件过期机制与文件存储空间告警机制。

5.消息的高可用
同步刷盘机制:当数据写入内存中后马上同步到硬盘上,然后返回写入成功状态。
异步刷盘机制:当数据写入内存中后,先返回写入成功状态,然后开启异步线程同步到硬盘

6.消息到达(消费)低延迟
在消息不发生消息堆积时,以长轮询实现实时的消息推送模式。

7.确保消息必须被消费一次
通过消息消费确认机制ACK来确保消息至少被消费一次。

8.消息回溯
已经消费过的消息,由于业务需要重新消费消息。
rocketMq支持按时间回溯消息,时间纬度可以精确到毫秒,可以向前或者向后。

9.消息堆积
消息中间件的主要功能是实现异步解偶,必须能应对前端的数据洪峰,提高后端系统的可用性。rocketMq使用磁盘文件存储消息,并且提供了过期机制,默认保留3天。

10.定时消息
定时消息是指消息发送到broker后,不会马上被消费者消费,要等到特定时间后才能被消费。

11.消息重试机制
如果消息在消费是发生了异常,消息中间件会重新投递消息。

[参考文档] 《RocketMq技术内幕》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值