20 天前 / 程序员果果
本文根据阿里云 RocketMQ 产品文档整理,地址:https://help.aliyun.com/document_detail/29532.htmluserCode=qtldtin2 简介 RocketMQ 是由阿里捐赠给 Apache 的一款低延迟、高并发、高可用、高可靠的分布式消息中间件。经历了淘宝双十一的洗礼。RocketMQ 既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。 核心概念 Topic:消息主题,一级消息类型,生产者向其发送消息。 Message:生产者向 Topic 发送并最终传送给消费者的数据消息的载体。
91 天前 / yes的练级攻略
每个时代,都不会亏待会学习的人。 大家好,我是 yes。 继上一篇 头条终面:写个消息中间件,我提到实现消息中间件的一些关键点,今天就和大家一起深入生产级别消息中间件 - RocketMQ 的内核实现,来看看真正落地能支撑万亿级消息容量、低延迟的消息队列到底是如何设计的。 这篇文章我会先介绍整体的架构设计,然后再深入各核心模块的详细设计、核心流程的剖析。 还会提及使用的一些注意点和最佳实践。 对于消息队列的用处和一些概念不太清楚的同学强烈建议先看消息队列面试连环问,这篇文章介绍了消息队列的使用场景、基本概念和常见面试题。
98 天前 / 雇个城管打天下
在之前的《浅入浅出消息队列》一文中,我们了解了消息队列的作用、优缺点和使用场景,相信你对消息队列已经有了一个大致的概念,文末给自己埋的坑说日后会写一篇实战教程,正好现在实习结束了,也许久没有写实战教程了,于是这就来填坑了。 前置知识阅读本文前,建议有一些前置知识,包括且不限于: 常见的 Linux 命令消息队列的相关知识Docker 的基本使用docker-compose 的基础知识SpringBoot 的基本使用 那废话不多说,我们就开始吧。 本文的所涉及到的代码可在微信公众号「01 二进制」后台回复「rocketmq」获得。
108 天前 / JAVA日知录
分布式消息选型的时候是否支持事务消息是一个很重要的考量点,而目前只有 RocketMQ 对事务消息支持的最好。今天我们来唠唠如何实现 RocketMQ 的事务消息! Apache RocketMQ 在 4.3.0 版中已经支持分布式事务消息,这里 RocketMQ 采用了 2PC 的思想来实现了提交事务消息,同时增加一个补偿逻辑来处理二阶段超时或者失败的消息,如下图所示。 RocketMQ 事务流程概要 RocketMQ 实现事务消息主要分为两个阶段:正常事务的发送及提交、事务信息的补偿流程整体流程为: 正常事务发送与提交阶段生产者发送一个半消息给 MQServer(半消息是指消费者暂时不能消费的...
129 天前 / 猿天地
目录 RocketMQ 介绍 RocketMQ 概念为什么要用 RocketMQ?异步解耦削峰填谷分布式事务最终一致性数据分发 RocketMQ 架构 RocketMQ 消息类型普通消息顺序消息定时消息事务消息最佳实践消息重试消息过滤消费模式消费幂等本地事务消息封装参考代码 RocketMQ 介绍 Apache RocketMQ 是一款 低延迟、高并发、高可用、高可靠的分布式消息中间件。消息队列 RocketMQ 可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。
146 天前 / yes的练级攻略
每个时代,都不会亏待会学习的人。 大家好,我是 yes。 今天我们来谈一谈消息队列的事务消息,一说起事务相信大家都不陌生,脑海里蹦出来的就是 ACID。 通常我们理解的事务就是为了一些更新操作要么都成功,要么都失败,不会有中间状态的产生,而 ACID 是一个严格的事务实现的定义,不过在单体系统时候一般都不会严格的遵循 ACID 的约束来实现事务,更别说分布式系统了。 分布式系统往往只能妥协到最终一致性,保证数据最终的完整性和一致性,主要原因就是实力不允许。..因为可用性为王。
151 天前 / yes的练级攻略
每个时代,都不会亏待会学习的人 大家好,我是 yes。 今天我们就来谈一谈消息队列的推拉模式,这也是一个面试热点,例如你在简历里面写了 RocketMQ ,基本上会问你 RocketMQ 采用的是推模式还是拉模式啊?是拉模式?不是有 PushConsumer 吗? 今天我们就来谈谈推拉模式,并且再来看看 RocketMQ 和 Kafka 是如何做的。 推拉模式首先明确一下推拉模式到底是在讨论消息队列的哪一个步骤,一般而言我们在谈论推拉模式的时候指的是 Comsumer 和 Broker 之间的交互。
181 天前 / yes的练级攻略
点击上方「yes 的练级攻略」加个「星标」,最新文章极速到达 大家好,我是 yes。 我们都知道 RocketMQ 和 Kafka 消息都是存在磁盘中的,那为什么消息存磁盘读写还可以这么快?有没有做了什么优化?都是存磁盘它们两者的实现之间有什么区别么?各自有什么优缺点? 今天我们就来一探究竟。 存储介质 - 磁盘一般而言消息中间件的消息都存储在本地文件中,因为从效率来看直接放本地文件是最快的,并且稳定性最高。毕竟要是放类似数据库等第三方存储中的话,就多一个依赖少一份安全,并且还有网络的开销。
227 天前 / 搬运工来架构
点击上方蓝色字关注我们~前段时间发现,在使用 RockerMQ console 时,查询消息的时候出现很慢,查询耗时大于 10 秒,少则 5、6 秒,多则 14+ 秒。 如下图: 这到底是为什么?查询消息为啥会出现这么大的耗时? 当前使用的开发环境:操作系统是 Windows10,JDK8,RocketMQ 为 4.5.2。 在其它机器上则没有此问题,也在本机器上的虚拟机 VMware 上安装的 Linux 部署了 RocketMQ 和 console,并且验证是没问题的。 那么到底我的机器是怎么了??? 由于当前是接口的耗时问题,我们并不知道耗时主要在哪个地方,所以使用 Arthas 来跟踪下调用链的耗时。
233 天前 / 方丈的寺院
概念说明通常一个消息队列需要掌握的知识点有 Topic(主体)、Producer(生产者)、Consumer(消费者)、Queue(队列)、Delivery Semantics(消息传递范式) 蛋疼的是不同的消息队列关于这些名词叫法不一样,含义也不是很精确。所以阿里起了一个项目 OpenMessaging 去发起首个分布式消息领域的国际标准。不过好像并没有多少人买账,但这并不妨碍我们按照这个规范去梳理学习消息队列的知识。 有兴趣的可以对照着看:https://github.com/openmessaging/specification/blob/master/specification-schema.md rocketmq 官方文档已经说的比较清楚了...
272 天前 / Ccww
欢迎关注公众号【Ccww 技术博客】,原创技术文章第一时间推出 RocketMQ 服务器启动 linux 环境下载编译源码 # 下载 $ > wget wget http://mirror.bit.edu.cn/apache/rocketmq/4.6.0/rocketmq-all-4.6.0-source- > # 解压 $ >unzip rocketmq-all-4.7.0-source-release.zip > cd rocketmq-all-4.7.0/ # 编译 $ > mvn -Prelease-all -DskipTests clean install -U > cd distribution/target/rocketmq-4.7.0/rocketmq-4.7.0 启动 Name Server # 启动 Name Server 服务 > nohup sh bin/mqnamesrv & # 启动完成后...
283 天前 / Ccww
欢迎关注公众号【Ccww 技术博客】,原创技术文章第一时间推出 RocketMQ 是一个纯 java、分布式、队列模型的开源消息中间件,前身是 MetaQ,是阿里研发的一个队列模型的消息中间件,后开源给 apache 基金会成为了 apache 的顶级开源项目,具有高性能、高可靠、高实时、分布式特点, 同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用、手游、视频、物联网、车联网等。
286 天前 / 互联网平头哥
你可能没有看过 RocketMQ 的架构图,没关系,一起来学习一下,RocketMQ 架构图如下: RocketMQ 架构图在 RocketMQ 中,有四个角色: 「Producer」:消息的生产者,每个 MQ 中间件都有。「Consumer」:消息的消费者,每个 MQ 中间件都有。「NameServer」:RocketMQ 的路由中心,跟 ZooKeeper 差不多。「Broker」:消息服务器,RocketMQ 的消息全部存储在这里。Producer 发送消息之前,先从 NameServer 中获取到 Broker 服务器列表,然后根据负载均衡策略选择一台 Broker 发送,消息消费时也是同样的道理。
286 天前 / 互联网平头哥
你可能没有看过 RocketMQ 的架构图,没关系,一起来学习一下,RocketMQ 架构图如下: RocketMQ 架构图在 RocketMQ 中,有四个角色: 「Producer」:消息的生产者,每个 MQ 中间件都有。「Consumer」:消息的消费者,每个 MQ 中间件都有。「NameServer」:RocketMQ 的路由中心,跟 ZooKeeper 差不多。「Broker」:消息服务器,RocketMQ 的消息全部存储在这里。Producer 发送消息之前,先从 NameServer 中获取到 Broker 服务器列表,然后根据负载均衡策略选择一台 Broker 发送,消息消费时也是同样的道理。
290 天前 / 互联网平头哥
我们知道 RocketMQ 是一款高性能、高可靠的分布式消息中间件,高性能和高可靠是很难兼得的。因为要保证高可靠,那么数据就必须持久化到磁盘上,将数据持久化到磁盘,那么可能就不能保证高性能了。 RocketMQ 在兼容这两方面做的不错,先从磁盘说起,「现在的磁盘都是高性能的,写速度并不一定比网络的数据传输速度慢」。比如 SSD 固态硬盘在 M.2 NVMe 协议下,顺序写的速度可以达到 1500 MB/s,就算是普通磁盘,如果性能比较高的话,顺序写的速度可以达到 450MB/s~600MB/s。