Apache RocketMQ

云原生时代 RocketMQ 运维管控的利器

拈花ヽ惹草 提交于 2020-10-25 03:16:38
作者 | 刘睿、杜恒 导读 : RocketMQ Operator 现已加入 OperatorHub ,正式进入 Operator 社区。本文将从实践出发,结合案例来说明,如何通过 RocketMQ Operator 在 Kubernetes 上快速搭建一个 RocketMQ 集群,并提供一些 RocketMQ 集群管理功能包括 Broker 扩容等。 本文主要分为三个部分: 首先简单介绍一下 RocketMQ Operator 的相关知识; 然后结合案例详细介绍 RocketMQ Operator 提供的自定义资源及使用方法; 最后介绍 Operator 社区目前的情况并展望 RocketMQ Operator 下一步的发展方向。 相关背景知识 1. RocketMQ 2012~2013 年期间,阿里巴巴中间件团队自主研发并对外开源了第三代分布式消息引擎 RocketMQ,其高性能、低延迟、抗堆积的特性稳定支撑了阿里巴巴 双11 万亿级数据洪峰业务,其云产品 Aliware MQ 在微服务、流计算、IoT、异步解耦、数据同步等无数工况场景大放异彩。 2016 年,阿里巴巴向 Apache 软件基金会捐赠了 RocketMQ。次年,RocketMQ 顺利从基金会毕业,成为 Apache 顶级开源项目,与 Apache Hadoop,Apache Spark 一起为全球分布式

架构设计 | 分布式体系下,服务分层监控策略

老子叫甜甜 提交于 2020-10-24 22:47:08
本文源码: GitHub·点这里 || GitEE·点这里 一、分布式故障 分布式系统的架构,业务开发,这些在良好的思路和设计文档规范之下,是相对来说好处理的,这里的相对是指比较分布式架构下生产环境的突然故障。 在实际的开发中,有这样一个很妖娆的情况:越是核心复杂的业务,越是担心出问题,越容易出问题。 所以当核心服务的链路出现故障时,如何快速定位问题就是一件很头疼的事情,尤其是一些特殊情况下,问题很模糊很难复现,外加客户或者领导催促,这种场景心里阴影是大部分开发都有的。更有甚者,可能问题发生的切入点的开发是某人负责的,实际问题是发生在请求链路的其他服务上,这种情况遇多了,甩锅水平会直线上升。 越是复杂的系统,越是经验丰富的开发或者运维,对监控系统就越是有执念,尤其是全链路的监控,底层,网络,中间件,服务链路,日志观察预警等,用来快速定位问题,省时省心。 二、全链路监控 1、监控层次 在分布式系统中,需要监控的体系和层次极其复杂,通常整体上划分为三个层次:应用服务,软件服务,硬件服务。 通常情况,运维管理硬件服务,开发管理应用和软件服务。 2、应用服务 应用层为开发的业务逻辑服务,也是最容易突发问题的一个层面,当在一家公司待久了,因为开发过多个业务线,就会感觉自己不是开发,是个打杂的,每天都要分出大量时间处理各种问题。应用层监控涉及下面几个核心模块: 请求流量 任何服务

线上遇到RocketMQ消息丢失,差点扣绩效,看我如何力挽狂澜~

本秂侑毒 提交于 2020-10-24 15:16:45
本文作者信息: 丁威,《RocketMQ技术内幕》作者,RocketMQ社区优秀布道师、CSDN2019年度博客之星TOP10,现就职于中通快递技术平台部担任资深架构师,主要负责消息中间件与全链路压测。 # 问题现象 首先接到项目反馈使用 RocketMQ 会出现如下错误: 错误信息关键点: MQBrokerException:CODE:2 DESC:[TIMEOUT_CLEAN_QUEUE]broker busy,start flow control for a while,period in queue:205ms,size of queue:880 由于项目组并没有对消息发送失败做任何补偿,导致丢失消息发送失败,故需要对这个问题进行深层次的探讨,并加以解决。 # 问题分析 首先我们根据关键字:TIMEOUT_CLEAN_QUEUE 去 RocketMQ 中查询,去探究在什么时候会抛出如上错误。根据全文搜索如下图所示: 该方法是在 BrokerFastFailure 中定义的,通过名称即可以看成其设计目的:Broker 端快速失败机制。 Broker 端快速失败其原理图如下: 1、消息发送者向 Broker 发送消息写入请求,Broker 端在接收到请求后会首先放入一个队列中(SendThreadPoolQueue),默认容量为 10000。 2、Broker

阿里P8大佬整合的四大主流中间件学习笔记,助你金九银十稳进大厂

微笑、不失礼 提交于 2020-10-23 17:40:58
RabbitMQ: 优点:轻量,迅捷,容易部署和使用,拥有灵活的路由配置 缺点:性能和吞吐量较差,不易进行二次开发 RocketMQ: 优点:性能好,稳定可靠,有活跃的中文社区,特点响应快 缺点:兼容性较差,但随意影响力的扩大,该问题会有改善 ActiveMQ: 目前,消息队列在各大互联网平台,尤其是电商平台如京东、淘宝、去哪儿等网站有着深入的应用,主要作用是高并发访问高峰,通过异步消息模式减少网站响应时间,提高系统吞吐量。ActiveMQ作为众多MQ中的一员,而且也是最老牌的一员,有其优势:1)多编程语言多协议支持。2)完全支持JMS1.1和J2EE 1.4规范 3)对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去 4)从设计上保证了高性能的集群。 Kafka: 优点:拥有强大的性能及吞吐量,兼容性很好 缺点:由于“攒一波再处理”导致延迟比较高,有可能消息重复消费 作为一个有着丰富经验的微服务架构师,经常有人问我:“应该选择 MQ 还是 Kafka ?”。基于某些原因,许多开发者会把这两种技术当作等价的来看待。的确,有些案例场景下选择 RabbitMQ 还是 Kafka 没什么差别,但是这两种技术在底层实现方面是有许多差异的。不同场景需要不同的解决方案,选错一个方案能够严重的影响你对软件的设计,开发和维护的能力。

“分布式事务各大方案详细解读2PC、3PC、TCC、本地消息表、MQ事务、Saga”

我们两清 提交于 2020-10-21 20:52:56
这篇文章将介绍什么是分布式事务,分布式事务解决什么问题,对分布式事务实现的难点,解决思路,不同场景下方案的选择,通过图解的方式进行梳理、总结和比较。 相信耐心看完这篇文章,谈到分布式事务,不再只是有“2PC”、“3PC”、“MQ的消息事务”、“最终一致性”、“TCC”等这些知识碎片,而是能够将知识连成一片,形成知识体系。 什么是事务 介绍分布式事务之前,先介绍什么是事务。 事务的具体定义 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。 简单地说,事务提供一种“ 要么什么都不做,要么做全套(All or Nothing) ”机制。 数据库事务的 ACID 属性 事务是基于数据进行操作,需要保证事务的数据通常存储在数据库中,所以介绍到事务,就不得不介绍数据库事务的 ACID 特性。 ACID 指数据库事务正确执行的四个基本特性的缩写,包含: 原子性(Atomicity) 整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。 事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 例如:银行转账,从 A 账户转 100 元至 B 账户,分为两个步骤: 从 A 账户取 100 元

消息中间件—SpringBoot下RabbitMQ实战

断了今生、忘了曾经 提交于 2020-10-21 02:03:33
消息中间件简介 MQ全称(Message Queue)`又名消息队列,是一种异步通讯的中间件。 可以将它理解成邮局,发送者将消息传递到邮局,然后由邮局帮我们发送给具体的消息接收者(消费者),具体发送过程与时间我们无需关心,它也不会干扰我进行其它事情。常见的MQ有 kafka 、 activemq 、 rocketMQ 、 rabbitmq 等等** 消息中间件的应用场景 跨系统数据传递、高并发流量削峰、数据异步处理。。。。 消息中间件对比 综上,各种对比之后,有如下建议: 一般的业务系统要引入 MQ,最早大家都用 ActiveMQ,但是现在确实大家用的不多了,没经过大规模吞吐量场景的验证,社区也不是很活跃,所以大家还是算了吧,我个人不推荐用这个了; 后来大家开始用 RabbitMQ,但是确实 erlang 语言阻止了大量的 Java 工程师去深入研究和掌控它,对公司而言,几乎处于不可控的状态,但是确实人家是开源的,比较稳定的支持,活跃度也高; 不过现在确实越来越多的公司会去用 RocketMQ,确实很不错,毕竟是阿里出品,但社区可能有突然黄掉的风险(目前 RocketMQ 已捐给 Apache ,但 GitHub 上的活跃度其实不算高)对自己公司技术实力有绝对自信的,推荐用 RocketMQ,否则回去老老实实用 RabbitMQ 吧,人家有活跃的开源社区,绝对不会黄。 所以

把 4个消息队列都拉到一个群里后,他们吵起来了

时光毁灭记忆、已成空白 提交于 2020-10-20 04:38:06
从事软件开发的同学,一定都听过或用过消息队列,比如 RabbitMQ,Kafka。消息队列简单来说就是生产者将很多消息放到一个队列结构中,由其他消费者来消费。想了解更多 队列 的知识,看下我之前写的 18 个 Queue 的文章,保证整的明明白白。 传送门: 45张图庖丁解牛18种Queue 。 那如果把常见的四大消息队列拉到一个群里,会碰出哪些火花呢? 被嫌弃 四大队列被 中间件大队长 拉到了一个群里面。 群名:悟空聊架构群。 成员数:25 个。 管理员:中间件大队长。 群主:神秘悟空哥。 大家来感受下他们的聊天界面吧~ 👇👇👇 群聊画面 1 RabbitMQ 单独找中间件大队长聊天的画面。 单聊画面 1 涉及的故事: Erlang 是啥? 并非一门新语言,出现于 1987 年。并不是面向对象语言。 函数式编程,基于进程并发,高并发、分布式是它的优势。 由爱立信制造商专门为通信应用设计,在国内主要是游戏领域用到。 Erlang 为啥会被其他队列嫌弃? 因为 RocketMQ、ActiveMQ 都是用 Java 实现的,Kafka 是用 Scale 和 Java 实现的,这三种消息队列从语言实现上都有些类似。 在国内现如今超流行的 Java 的技术生态中,懂 Java 又懂 Erlang 的就比较少了,愿意花时间和精力在 Erlang 上面的就更少了。 快和慢 群聊画面 2

RocketMQ系列:rocketmq运维控制台使用详解(全网独家)

我的未来我决定 提交于 2020-10-15 06:20:54
搭建好了RocketMQ的console之后,直接在浏览器打开http://{你的ip}:8080 默认会进入到驾驶舱(dashboard)。 总览 整体横向菜单分为 八 个部分: 运维 :主要是设置nameserver和配置vipchannel 驾驶舱 :控制台的dashboard,可以分别按broker和主题来查看消息的数量和趋势。 集群 :整个RocketMq的集群情况,包括分片,编号,地址,版本,消息生产和消息消费的TPS等,这个在做性能测试的时候可以作为数据指标。 主题 :即topic,可以新增/更新topic;也看查看topic的信息,如状态,路由,消费者管理和发送消息等。 消费者 :可以在当前broker中查看/新建消费者group,包括消费者信息和消费进度 生产者 :可以在当前broker中查看生产组下的生产者group,包生产者信息和生产者状态 消息 :可以按照topc,messageID,messageKey分别查询具体的消息 用户中心 :切换语言和登陆相关(登陆需要在console的配置中打开对应配置,默认不需要登陆) 其中最常用的是 集群 , 主题 , 消费者 和 消息 这四部分。 下面分别来看各个部分。 运维 刚才讲到,运维这块儿就两个功能 设置Nameserver 打开/关闭vipchannnel 设置nameserver

RocketMQ系列:docker搭建rocketmq单机环境

℡╲_俬逩灬. 提交于 2020-10-15 00:54:01
1.引言 前面使用了rocketmq的git工程中的fast-try.sh搭建了单broker集群,这里介绍一个更快地环境搭建方式,利用docker快速搭建一套rocketmq环境。 2.环境准备 2.1 docker搭建模式 docker:用于搭建单节点broker模式/ dledger模式 docker-compose:利用docker-compose快速搭建2broker的集群 k8s docker环境搭建参考: Ubuntu下搭建docker环境 这里先介绍单节点broker模式的搭建 2.2 验证docker环境 执行如下:不报错即可 docker run docker.io/hello-world 3. 单节点模式搭建 项目地址: https://github.com/apache/rocketmq-docker 3.1 下载对应工程 git clone https://github.com/apache/rocketmq-docker.git 3.2 编译rocketmq镜像 #进入目录 cd rocketmq-docker/image-build #编译镜像,这里我编译4.7.1的镜像,我的环境是Ubuntu,执行如下命令 sh build-image.sh 4.7.1 alpine #如果你用的是centos,想编译4.5.0的镜像,可以执行如下 sh build

MQ之对比

こ雲淡風輕ζ 提交于 2020-10-13 23:58:01
activeMQ:高效、可扩展、稳定安全企业级消息通信 rabbitMQ:分布式系统可靠、可扩展、功能丰富,内存式堆积,某些条件下触发换页动作将内存中消息换页到磁盘;支持多租户 不支持重试队列,二次封装延迟队列实现呢 拉模式,不回溯,支持消息追踪 多租户 kafka:高吞吐量分布式发布订阅消息系统,可水平扩展,磁盘式堆积,冗余功能 过滤:consumerInterceptor接口或kafka stream的filter消息过滤 不支持优先级、延迟、死信、重试队列 拉模式+推模式 按offset和timestamp维度消息回溯 通插件支持消息追踪(性能) rocketMQ:高吞吐、高可用、适合大规模分布式系统 rabiitMQ一致性丢失问题 https://www.jianshu.com/p/8f7ebbcbeee5 https://blog.csdn.net/u013256816/article/details/79147591 来源: oschina 链接: https://my.oschina.net/u/4410837/blog/4671566