
RocketMQ
要争气
人生来平凡,因奋斗进取而不凡。
展开
-
rocketMq和kafka对比
为什么在RocketMQ和kafka中选型在单机同步发送的场景下,Kafka>RocketMQ,Kafka的吞吐量高达17.3w/s,RocketMQ吞吐量在11.6w/s。kafka高性能原因生产者Kafka会把收到的消息都写入到硬盘中,它绝对不会丢失数据。为了优化写入速度Kafak采用了两个技术,顺序写入和MMFile。顺序写入因为硬盘是机械结构,每次读写都会寻址->写入,其中寻址是一个“机械动作”,它是最耗时的。所以硬盘最“讨厌”随机I/O,最喜欢顺序I/O。为了提转载 2021-11-25 17:05:21 · 10376 阅读 · 0 评论 -
rocketMq和kafka的架构区别
概述 其实一直想写一篇rocketMq和kafka在架构设计上的差别,但是一直有个问题没搞明白所以迟迟没动手,今天无意中听人点播了一下似乎明白了这个问题,所以就有了这篇对比。 这篇博文主要讲清楚kafka和rocketMq的两个不同点,1、rocketMq的namesvr和kafka的zookeeper对比;2、kafka为什么比rocketMq有更大的吞吐量。如果能够讲清楚上面两个问题我觉得就已经很满足了。 最后,文章引入的参考文章里面有一些比较好的链接,有兴趣的话可以好好看...转载 2021-11-25 15:11:38 · 383 阅读 · 0 评论 -
高并发异步解耦利器:RocketMQ究竟强在哪里?
消息队列的发展史:并且详细介绍了RabbitMQ,其功能也是挺强大的,那么,为啥又要搞一个RocketMQ出来呢?是重复造轮子吗?本文我们就带大家来详细探讨RocketMQ究竟好在哪里。RocketMQ是一个分布式消息中间件,具有低延迟、高性能和可靠性、万亿级别的容量和灵活的可扩展性。它是阿里巴巴于2012年开源的第三代分布式消息中间件。随着阿里巴巴的电商业务不断发展,需要一款更高性能的消息中间件,RocketMQ就是这个业务背景的产物。RocketMQ是一个分布式转载 2021-11-25 14:58:34 · 573 阅读 · 0 评论 -
RocketMQ生产环境操作及优化
线上通常配置多个NameServer,以实现高可用;线上通常采用多主多从至少2主2从同步双写异步刷盘的集群架构,由于从节点只能消费,这样可以保证master宕机,可以在其他master节点写入,同步双写确保数据安全性,异步刷盘提升性能;线上通常关闭自动创建Topic,以免topic命名不规范或与线上其他topic重复,导致一系列问题;性能优化思路:cpu:是否占用过高,可使用top分析;网卡:网络带宽是否存在性能瓶颈,可用sar -n DEV 2 10 分析网络接口信息,如单位时间发原创 2021-11-24 16:25:53 · 1673 阅读 · 0 评论 -
RocketMQ双主双从集群搭建
主从采用同步双写,刷盘采用异步刷盘模式,参考集群(broker cluster)架构如下:参考前面的RocketMQ集群搭建,上传RocketMQ源码包到各个服务节点,进行编译部署。由于机器内存限制,需要修改运行脚本(runbroker.sh runserver.sh)的默认jvm内存参。在部署broker前还需启动nameserver。一 部署master a根据安装目录修正如下路径进入修改配置文件/usr/local/java/rocketmq/rocketmq/dis..原创 2021-11-24 15:22:26 · 2238 阅读 · 0 评论 -
RocketMQ实现分布式事务
基于RocketMQ可以实现分布式事务的最终一致性解决方案,它使用TransactionMQProducer发送事务消息,事务消息的状态包括:Unknown 未知状态,初始发送的消息就是该状态,该状态下事务消息不会被消费者消费;Commit状态 提交状态,该状态下事务消息会被消费者消费;Rollback状态 回滚状态,事务消息会在broker端被移除,不会被消费者消费。它的处理流程是这样:首先生产者通过TransactionMQProducer发送事务消息到broker,此时事务消息的状态是...原创 2021-11-23 17:51:11 · 2309 阅读 · 0 评论 -
基于RocketMQ实现分布式事务
前言在系统变的复杂后,分布式、微服务等架构技术,就要考虑到应用在系统中了。尤其数据量大了后,就需要对数据库进行拆分。如:注册的用户数据,量大了后,就需要考虑分库分表一旦数据库进行了分拆,那就出现很多头疼的问题,其中之一就是事务问题。那我们就来看看问题是怎么出现的?场景先来上个图进行数据拆分后,就类似上面的架构上图中我们就拿用户的数据进行举例,用户量一旦几千万时,就需要进行分库分表;上图就分了3个库,每个库都保证了高可用。这样的架构设计,会遇到事务.转载 2021-11-23 15:58:11 · 325 阅读 · 0 评论 -
RocketMQ中的消息存储位置
CommitLog消息内容原文的存储文件,同Kafka一样,消息是变长的,顺序写入生成规则:每个文件的默认1G =1024 * 1024 * 1024,commitlog的文件名fileName,名字长度为20位,左边补零,剩余为起始偏移量;比如00000000000000000000代表了第一个文件,起始偏移量为0,文件大小为1G=1 073 741 824Byte;当这个文件满了,第二个文件名字为00000000001073741824,起始偏移量为1073741824, 消息存储的时候会转载 2021-11-22 15:27:13 · 2292 阅读 · 1 评论 -
RocketMQ 使用TAG进行消息过滤
RocketMQ支持Broker端和Consumer端的TAG过滤,Broker端过滤:减少无用消息的网络传输,但是增加了broker端的负担;Consumer端过滤,增加了无用消息的网络传输,但是减少了broker端的负担。SQL过滤,使用了服务端实现,TAG过滤,主要使用消费端实现。SQL过滤:性能低,支持使用SQL语句复杂的过滤逻辑;TAG过滤:性能高,只支持简单的过滤。Broker端过滤:先变量消息队列中TAG与消费者订阅的TAG使用HASHCODE比较,匹配上则把对应的消息发给消费...原创 2021-11-19 18:01:05 · 5459 阅读 · 0 评论 -
RocketMQ 消费端核心配置
consumeFromWhere: CONSUME_FROM_FIRST_OFFSET: 初次从消息队列头部开始消费,即历史消息(还储存在broker的)全部消费一遍,后续再启动接着上次消费的进度开始消费 CONSUME_FROM_LAST_OFFSET: 默认策略,初次从该队列最尾开始消费,即跳过历史消息,后续再启动接着上次消费的进度开始消费 CONSUME_FROM_TIMESTAMP : 从某个时间点开始消费,默认是半个小时以前,后续再启动接着上次消费的进度开始消费 allo..原创 2021-11-19 15:18:35 · 996 阅读 · 0 评论 -
RocketMQ顺序消息
RocketMQ顺序消息是指消息发送顺序与消费顺序一致,包括全局顺序消息和局部顺序消息,全局顺序消息可以使用一个Topic对应1个队列来实现,但是吞吐量特别低;局部顺序消息,是指在一个队列上消息有序的发送和消费,但是对应异步发送和广播消费模式不支持顺序。局部顺序消息,在发送消息时使用MessageQueueSelector让特定的消息到达特定的一个队列上,在消费消息时,使用MessageConsumerOrderly来消费消息,它可以保证有序消费。让特定的消息到达指定的队列(消息在单...原创 2021-11-19 14:39:48 · 1663 阅读 · 0 评论 -
消息发送到Topic下的某个特定队列
一个Topic默认自动创建4个队列,如果想让某条消息到达Topic的某个特定的队列中,可以在发送消息时使用MessageQueueSelector来指定,消息要到达的队列。在同步发送和异步发送消息时,都支持指定特定的队列。 同步发送时指定队列: // 消息队列选择器指定Topic下的某个队列进行发送 @GetMapping("sendSelect") Object callbackSelect(String text) throws ...原创 2021-11-18 17:37:06 · 450 阅读 · 0 评论 -
RocketMQ延迟消息
通过给消息设置延迟时间,到达延迟时间后消息才会被消费者消费,在延迟消息中,最先发送的消息不一定最先被消费,而是最早达到延迟时间的消息被优先消费。延迟消息经常用于电商系统,如实现延迟关单功能。 //延迟消息 @GetMapping("sendDelay") Object callbackDelay(String text) throws InterruptedException, RemotingException, MQClientException, MQBr...原创 2021-11-18 16:35:44 · 452 阅读 · 0 评论 -
RocketMQ中三种发送消息的方式
RockeMQ消息发送有三种方式:同步、异步和OneWay。同步发送: 发送消息后需等待结果,消息的可靠性高发送速度慢; // 同步发送 @GetMapping("send") Object callback(String text) throws InterruptedException, RemotingException, MQClientException, MQBrokerException {// Message message = n...原创 2021-11-18 15:22:11 · 1360 阅读 · 0 评论 -
RocketMQ发送及消费重试机制
发送重试机制: RocketMQ支持发送失败内部重试,默认是2次,在异步、SendOneWay模式下不支持重试。消费重试机制: RocketMQ在消费失败时,支持消费端重试继续消费消息,默认支持16次重试,每次重试的时间间隔增加,只有在Cluster模式支持重试、广播模式不支持重试。 在重试期间,消息的key和ID不会发生改变,应用程序可以以此做好幂等性控制。 在重试期间,还可以继续消费其它新消息。package c...原创 2021-11-18 14:30:26 · 2309 阅读 · 0 评论 -
RocketMQ发送状态
SendStatus类作为发送消息后结果状态,SendStatus状态说明信息如下:SEND_OK:消息投递成功FLUSH_DISK_TIMEOUT:同步刷盘超时FLUSH_SLAVE_TIMEOUT:同步双写,写Slave节点超时SLAVE_NOT_AVAILABLE:同步双写,获取不到从节点,如从节点宕机...原创 2021-11-17 17:48:22 · 892 阅读 · 0 评论 -
生产者常见核心配置
原创 2021-11-17 16:25:32 · 98 阅读 · 0 评论 -
RocketMQ集群搭建
RocketMQ集群,包括多主多从异步复制、多主多从同步双写等多种模式,下面搭建一个一主一从异步复制集群。准备两个虚拟机节点node1:部署主节点、部署nameServer、部署RocketMQ管控台node2:部署从节点、部署nameServer在node1 node2上传RocketMQ源码包,使用mvn -Prelease-all -DskipTests clean inst...原创 2021-11-16 17:31:55 · 2789 阅读 · 0 评论 -
SpringBoot整合RocketMQ
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0..原创 2021-11-15 17:56:54 · 498 阅读 · 0 评论 -
RocketMQ控制台rocketmq-console编译安装
下载rocketmq-console对项目解压后进入项目目录修改pom.xml中RocketMQ版本为对应版本<rocketmq.version>4.4.0</rocketmq.version>修改springboot的配置文件application.properties,指定nameServer地址为实际的部署地址。rocketmq.config.namesrvAddr=127.0.0.1:9876编译项目mvn clean package .原创 2021-11-11 17:25:39 · 829 阅读 · 0 评论 -
RocketMQ源码编译安装
安装平台为需要Linux、Unix或Mac,Windows不兼容。下载安装包:rocketmq-all-4.4.0-source-release.zip要安装JDK和maven环境进行解压编译:unzip rocketmq-all-4.4.0-source-release.zipcd rocketmq-all-4.4.0/mvn -Prelease-all -DskipTests clean install -Ucd distribution/target/apache-rocket原创 2021-11-09 15:57:44 · 982 阅读 · 0 评论