消息队列
RocketMQ,Kafka,ActiveMQ,RabbitMQ
weixin_42073629
这个作者很懒,什么都没留下…
展开
-
Kafka集成SparkStreaming
Spark Streaming + Kafka集成指南Kafka项目在版本0.8和0.10之间引入了一个新的消费者API,因此有两个独立的相应Spark Streaming包可用。请选择正确的包,请注意,0.8集成与后来的0.9和0.10代理兼容,但0.10集成与早期的代理不兼容。注意:从Spark 2.3.0开始,不推荐使用Kafka 0.8支持。Spark Streaming从Kafka接收数据,转换为spark streaming中的数据结构Dstream。数据接收方式有两种 :1 使用.原创 2020-10-03 02:14:55 · 584 阅读 · 1 评论 -
Kafka集群管理工具kafka-manager的安装使用
一.kafka-manager简介 kafka-manager是目前最受欢迎的kafka集群管理工具,最早由雅虎开源,用户可以在Web界面执行一些简单的集群管理操作。具体支持以下内容:管理多个集群 轻松检查群集状态(主题,消费者,偏移,代理,副本分发,分区分发) 运行首选副本选举 使用选项生成分区分配以选择要使用的代理 运行分区重新分配(基于生成的分配) 使用可选主题配置创建主题(0.8.1.1具有与0.8.2+不同的配置) 删除主题(仅支持0.8.2+并记住在代理配置中设置d..原创 2020-10-03 02:03:06 · 296 阅读 · 0 评论 -
kafka可视化客户端工具(Kafka Tool)的基本使用
1、下载下载地址:http://www.kafkatool.com/download.html2、安装根据不同的系统下载对应的版本,我这里kafka版本是1.1.0,下载kafka tool 2.0.1。双击下载完成的exe图标,傻瓜式完成安装。3、简单使用kafka环境搭建请参考:CentOS7.5搭建Kafka2.11-1.1.0集群1)连接kafka打开kafka tool安装目录,点击exe文件提示设置kafka集群连接点击确定,设置.原创 2020-10-03 01:53:21 · 653 阅读 · 1 评论 -
Kafka(五)Kafka的API操作和拦截器
一 kafka的API操作1.1环境准备1)在eclipse中创建一个java工程2)在工程的根目录创建一个lib文件夹3)解压kafka安装包,将安装包libs目录下的jar包拷贝到工程的lib目录下,并build path。4)启动zk和kafka集群,在kafka集群中打开一个消费者[root@node21 kafka]$ bin/kafka-console-consumer.sh --zookeepernode21:2181,node22:2181,node23:218..原创 2020-10-03 01:50:41 · 382 阅读 · 0 评论 -
Kafka(四)Kafka在zookeeper中的存储
一 Kafka在zookeeper中存储结构图二 分析2.1 topic注册信息/brokers/topics/[topic] :存储某个topic的partitions所有分配信息[zk: localhost:2181(CONNECTED) 1] get /brokers/topics/firstTopicSchema:{ "version": "版本编号目前固定为数字1", "partitions": {"partitionId编号": [ 同步副本组broker.原创 2020-10-03 01:34:58 · 262 阅读 · 0 评论 -
Kafka(三)Kafka的高可用与生产消费过程解析
一 Kafka HA设计解析1.1 为何需要Replication 在Kafka在0.8以前的版本中,是没有Replication的,一旦某一个Broker宕机,则其上所有的Partition数据都不可被消费,这与Kafka数据持久性及Delivery Guarantee的设计目标相悖。同时Producer都不能再将数据存于这些Partition中。 如果Producer使用同步模式则Producer会在尝试重新发送message.send.max.retries(默认值为3)次后抛出Ex.原创 2020-10-03 01:24:58 · 196 阅读 · 0 评论 -
Kafka(一)Kafka的简介与架构
一、简介1.1 概述Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。主要应用场景是:日志收集系统和消息系统。Kafka主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。 高吞吐率。即使在非原创 2020-10-03 00:41:35 · 237 阅读 · 0 评论 -
Kafka(二)CentOS7.5搭建Kafka2.11-1.1.0集群与简单测试
一、下载下载地址:http://kafka.apache.org/downloads.html 我这里下载的是Scala 2.11对应的kafka_2.11-1.1.0.tgz二、kafka安装集群规划IP 节点名称 Kafka Zookeeper Jdk Scala 192.168.100.21 node21 Kafka Zookeeper Jdk Scala 192.168.100.22 node2...原创 2020-10-03 01:09:44 · 464 阅读 · 0 评论 -
Spring Cloud 事件总线 Kafka 入门
1. 概述友情提示:在开始本文之前,胖友需要对 Kafka 进行简单的学习。可以阅读《Kafka 极简入门》文章,将第一二小节看完,在本机搭建一个 Kafka 服务。Kafka 是一种高吞吐量的分布式发布订阅消息系统,她有如下特性:通过 O(1) 的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。 高吞吐量:即使是非常普通的硬件kafka也可以支持每秒数十万的消息。 支持通过 Kafka 服务器和消费机集群来分区消息。本文我们来学习Spr.原创 2020-08-09 13:16:27 · 945 阅读 · 0 评论 -
Spring Cloud 消息队列 Kafka 入门
1. 概述本文我们来学习Spring Cloud Stream Kafka组件,基于Spring Cloud Stream的编程模型,接入Kafka作为消息中间件,实现消息驱动的微服务。FROM《分布式发布订阅消息系统 Kafka》Kafka 是一种高吞吐量的分布式发布订阅消息系统,她有如下特性:通过 O(1) 的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。 高吞吐量:即使是非常普通的硬件kafka也可以支持每秒数十万的消息。...原创 2020-08-09 10:23:33 · 1588 阅读 · 1 评论 -
Spring Boot 消息队列 Kafka 入门
1. 概述如果胖友还没了解过分布式消息队列Apache Kafka,建议先阅读下艿艿写的《芋道 Kafka 极简入门》文章。虽然这篇文章标题是安装部署,实际可以理解成《一文带你快速入门 Kafka》,哈哈哈。考虑这是 Kafka 如何在 Spring Boot 整合与使用的文章,所以还是简单介绍下 Kafka 是什么?FROM《分布式发布订阅消息系统 Kafka》Kafka 是一种高吞吐量的分布式发布订阅消息系统,她有如下特性:通过 O(1) 的磁盘数据结构提供消息的持久化,...原创 2020-05-20 23:56:34 · 966 阅读 · 0 评论 -
Kafka 极简入门
1. 概述Kafka是基于发布与订阅的消息系统。它最初由 LinkedIn 公司开发,之后成为 Apache 项目的一部分。因为朋友已经写了一篇很不错的 Kafka 入门文章,所以艿艿就可以光明正大的偷懒了。对 Kafka 不了解的胖友,可以先阅读《消息队列之 Kafka》文章的「1. Kafka 特点」和「2. Kafka 中的基本概念」两个小节。????2. 单机部署操作系统:macOS 10.14其它系统,基本一致的。Kafka 依赖 ZooKeeper 服务,所以...原创 2020-08-08 23:07:08 · 622 阅读 · 0 评论 -
RocketMQ 入门 —— 原理与实践
这篇文章写成距今(201808)已经两年半了,其中的内容我已经不能保证是否已经过时,由于当前的业务中也没有在使用RocketMQ,因此很少有时间再去刨代码,很多实践方面的问题也不能很好的为大家解决。因此,建议大家权当入门文章看看,实践中遇到问题的话,在本机跑一跑代码且调试一下,或者去社区逛逛,有可能对你解决问题的帮助会大一些。当然简单的问题,我会尽力和大家交流,谢谢大家。分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问.原创 2020-06-06 18:46:32 · 182 阅读 · 0 评论 -
RocketMQ 入门 —— 基于 Spring 使用 RocketMQ 以及监控
前提通过前面两篇文章可以简单的了解 RocketMQ 和 安装 RocketMQ ,今天就将 SpringBoot 和 RocketMQ 整合起来使用。创建项目在 IDEA 创建一个 SpringBoot 项目,项目结构如下:pom 文件引入 RocketMQ 的一些相关依赖,最后的 pom 文件如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.o..原创 2020-06-06 18:36:06 · 571 阅读 · 0 评论 -
RocketMQ 入门 —— 初探
概念专业术语Producer消息生产者,负责产生消息,一般由业务系统负责产生消息。Consumer消息消费者,负责消费消息,一般是后台系统负责异步消费。Push ConsumerConsumer 的一种,应用通常向 Consumer 对象注册一个 Listener 接口,一旦收到消息,Consumer 对象立刻回调 Listener 接口方法。Pull ConsumerConsumer 的一种,应用通常主动调用 Consumer 的拉消息方法从 Broker 拉消息,主动权由原创 2020-06-06 18:10:01 · 111 阅读 · 0 评论 -
RocketMQ 源码分析 —— RPC 通信(二)
在(一)篇中主要介绍了RocketMQ的协议格式,消息编解码,通信方式(同步/异步/单向)、消息发送/接收以及异步回调的主要通信流程。而本篇将主要对RocketMQ消息队列RPC通信部分的Netty多线程模型进行重点介绍。一、为何要使用Netty作为高性能的通信库?在看RocketMQ的RPC通信部分时候,可能有不少同学有这样子的疑问,RocketMQ为何要选择Netty而不直接使用JDK的NIO进行网络编程呢?这里有必要先来简要介绍下Netty。 Netty是一个封装了JDK的NIO库的高性能网络原创 2020-06-06 17:03:41 · 331 阅读 · 0 评论 -
RocketMQ 源码分析 —— RPC 通信(一)
消息队列的本质在于消息的发送、存储和接收”。那么,对于一款消息队列来说,如何做到消息的高效发送与接收是重点和关键一、RocketMQ中Remoting通信模块概览RocketMQ消息队列的整体部署架构如下图所示:先来说下RocketMQ消息队列集群中的几个角色:(1)NameServer:在MQ集群中做的是做命名服务,更新和路由发现 broker服务;(2)Broker-Master:broker 消息主机服务器;(3)Broker-Slave:broker 消息从机服务器;原创 2020-06-06 17:01:26 · 181 阅读 · 0 评论 -
RocketMQ 源码分析 —— 集成 Spring Cloud
RocketMQ 介绍RocketMQ是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用、手游、视频、物联网、车联网等。具有以下特点:能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力RocketMQ 基本使用下载 RocketMQ下载Rocke..原创 2020-06-06 00:03:27 · 242 阅读 · 0 评论 -
RocketMQ 源码分析 —— 集成 Spring Boot
1. 概述在开始分享https://github.com/apache/rocketmq-spring项目(RocketMQ 集成到 Spring Boot 中),我们先恶趣味的看一段历史:2014-08 Spring Boot 1 正式发布。 2018-03 Spring Boot 2 正式发布。 2018-12 RocketMQ 团队发布 RocketMQ 集成到 Spring Boot 的解决方案,并且提供了中文文档。在阅读本文之前,希望胖友能够先熟读中文文档。最好呢,当然不强制...原创 2020-06-06 00:02:46 · 1274 阅读 · 0 评论 -
RocketMQ 源码分析 —— 事务消息
1. 概述必须必须必须前置阅读内容:《事务消息(阿里云)》2. 事务消息发送2.1 Producer 发送事务消息活动图如下(结合核心代码理解):实现代码如下:1: // ⬇️⬇️⬇️【DefaultMQProducerImpl.java】 2: /** 3: * 发送事务消息 4: * 5: * @param msg 消息 6: * @param tranExecuter 【本地事务】执行器 7: * @param arg 【本地事务】执...原创 2020-06-06 00:02:30 · 180 阅读 · 0 评论 -
RocketMQ 源码分析 —— Filtersrv
1. 概述Filtersrv,负责自定义规则过滤Consumer从Broker拉取的消息。为什么Broker不提供过滤消息的功能呢?我们来看看官方的说法:Broker 端消息过滤 在 Broker 中,按照 Consumer 的要求做过滤,优点是减少了对于 Consumer 无用消息的网络传输。 缺点是增加了 Broker 的负担,实现相对复杂。 (1). 淘宝 Notify 支持多种过滤方式,包含直接按照消息类型过滤,灵活的语法表达式过滤,几乎可以满足最苛刻的过滤需求。...原创 2020-06-05 23:15:36 · 138 阅读 · 0 评论 -
RocketMQ 源码分析 —— 定时消息与消息重试
1. 概述建议前置阅读内容:《RocketMQ 源码分析 —— Message 发送与接收》 《RocketMQ 源码分析 —— Message 拉取与消费(下)》???? 为什么把定时消息与消息重试放在一起?你猜。???? 你猜我猜不猜。2. 定时消息定时消息是指消息发到 Broker 后,不能立刻被 Consumer 消费,要到特定的时间点或者等待特定的时间后才能被消费。下图是定时消息的处理逻辑图:2.1 延迟级别RocketMQ目前只支持固定精度的定时消息。官原创 2020-06-05 23:09:28 · 156 阅读 · 0 评论 -
RocketMQ 源码分析 —— 高可用
1. 概述本文主要解析Namesrv、Broker如何实现高可用,Producer、Consumer怎么与它们通信保证高可用。2. Namesrv 高可用启动多个Namesrv实现高可用。相较于Zookeeper、Consul、Etcd等,Namesrv是一个超轻量级的注册中心,提供命名服务。2.1 Broker 注册到 Namesrv????多个Namesrv之间,没有任何关系(不存在类似Zookeeper的Leader/Follower等角色),不进行通信与...原创 2020-06-05 23:01:38 · 177 阅读 · 0 评论 -
RocketMQ 源码分析 —— Message 顺序发送与消费
1. 概述建议前置阅读内容:《RocketMQ 源码分析 —— Message 发送与接收》 《RocketMQ 源码分析 —— Message 拉取与消费(下)》当然对Message发送与消费已经有一定了解的同学,可以选择跳过。RocketMQ提供了两种顺序级别:普通顺序消息 :Producer将相关联的消息发送到相同的消息队列。 完全严格顺序 :在普通顺序消息的基础上,Consumer严格顺序消费。绝大部分场景下只需要用到普通顺序消息。例如说:给用户发送短信消息 ...原创 2020-06-05 01:20:50 · 250 阅读 · 0 评论 -
RocketMQ 源码分析 —— Message 拉取与消费(下)
1、概述本文接:《RocketMQ 源码分析 —— Message 拉取与消费(上)》。主要解析Consumer在消费逻辑涉及到的源码。2、ConsumerMQ 提供了两类消费者:PushConsumer: 在大多数场景下使用。 名字虽然是Push开头,实际在实现时,使用Pull方式实现。通过Pull不断不断不断轮询Broker获取消息。当不存在新消息时,Broker会挂起请求,直到有新消息产生,取消挂起,返回新消息。这样,基本和Broker主动Pu...原创 2020-06-05 01:07:18 · 292 阅读 · 0 评论 -
RocketMQ 源码分析 —— Message 拉取与消费(上)
1、概述本章主要解析消费逻辑涉及到的源码。 因为篇幅较长,分成上下两篇:上篇:Broker相关源码。 下篇:Consumer相关源码。本文即是上篇。ok,先看第一张关于消费逻辑的图:再看消费逻辑精简的顺序图(实际情况会略有差别):2、ConsumeQueue 结构ConsumeQueue、MappedFileQueue、MappedFile的关系如下:ConsumeQueue:MappedFileQueue:MappedFile= 1 :...原创 2020-06-04 01:14:27 · 247 阅读 · 0 评论 -
RocketMQ 源码分析 —— Message 存储
1、概述本文接《RocketMQ 源码分析 —— Message 发送与接收》。 主要解析CommitLog存储消息部分。2、CommitLog 结构CommitLog、MappedFileQueue、MappedFile的关系如下:CommitLog:MappedFileQueue:MappedFile= 1 : 1 : N。反应到系统文件如下:Yunai-MacdeMacBook-Pro-2:commitlog yunai$ pwd/Users/yunai...原创 2020-06-04 00:55:58 · 229 阅读 · 0 评论 -
RocketMQ 源码分析 —— Message 发送与接收
1、概述Producer发送消息。主要是同步发送消息源码,涉及到 异步/Oneway发送消息,事务消息会跳过。 Broker接收消息。(存储消息在《RocketMQ 源码分析 —— Message 存储》解析)2、Producer 发送消息DefaultMQProducer#send(Message)1: @Override2: public SendResult send(Message msg) throws MQClientException, Remoting..原创 2020-06-04 00:49:00 · 280 阅读 · 0 评论 -
RocketMQ 源码解析 —— 调试环境搭建
友情提示阅读源码之前,建议胖友对 RocketMQ 的文档已经熟读。目前 RocketMQ 4 的中文文档很少,所以英文不太好的胖友,推荐看看如下资料:《RocketMQ 用户指南》基于 RocketMQ 3 的版本。 《RocketMQ 原理简介》基于 RocketMQ 3 的版本。 《RocketMQ 最佳实践》基于 RocketMQ 3 的版本。 《阿里云 —— 消息队列 MQ》阿里云的消息队列,就是 RocketMQ 的云服务。1. 依赖工具JDK :1.8+ Mave...原创 2020-06-04 00:37:34 · 278 阅读 · 0 评论 -
RocketMQ 源码分析 —— 为什么阅读 RocketMQ 源码?
为什么阅读RocketMQ源码?深入了解 MQ ,知其然知其所以然,如何实现高性能、高可用 最终一致性,是如何通过 MQ 进行实现 了解 Netty 在分布式中间件如何实现网络通信以及各种异常场景的处理 了解 MQ 消息存储,特别是磁盘 IO 部分 最重要的,希望通过阅读源码,在技术上的认知和能力上,有新的突破步骤[x] namesrv 启动 [ ] broker 启动 [x] producer 启动 [x] consumer 启动 [ ] 消息模型 [ ] 消息唯一编号原创 2020-06-03 23:55:20 · 272 阅读 · 0 评论 -
Spring Cloud Alibaba 消息队列 RocketMQ 入门
1. 概述本文我们来学习Spring Cloud Alibaba提供的Spring Cloud Stream RocketMQ组件,基于Spring Cloud Stream的编程模型,接入 RocketMQ 作为消息中间件,实现消息驱动的微服务。RocketMQ是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用...原创 2020-06-03 23:49:21 · 2560 阅读 · 1 评论 -
Spring Boot 消息队列 RocketMQ 入门
1. 概述如果胖友还没了解过分布式消息队列Apache RocketMQ,建议先阅读下艿艿写的《芋道 RocketMQ 极简入门》文章。虽然这篇文章标题是安装部署,实际可以理解成《一文带你快速入门 RocketMQ》,哈哈哈。考虑这是 RocketMQ 如何在 Spring Boot 整合与使用的文章,所以还是简单介绍下 RocketMQ 是什么?FROM《消息中间件 Apache RocketMQ》RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延...原创 2020-05-19 23:56:41 · 827 阅读 · 0 评论 -
RocketMQ 极简入门
. 概述在开始搭建 RocketMQ 服务之前,我们先来对它做下简单的了解。RocketMQ是阿里巴巴在 2012 年开源的分布式消息中间件,目前已经捐赠给 Apache 软件基金会,并于 2017 年 9 月 25 日成为 Apache 的顶级项目。作为经历过多次阿里巴巴双十一这种“超级工程”的洗礼并有稳定出色表现的国产中间件,以其高性能、低延时和高可靠等特性近年来已经也被越来越多的国内企业使用。如下是 RocketMQ 产生的原因:淘宝内部的交易系统使用了淘宝自主研发的 Notify.原创 2020-06-03 23:31:08 · 354 阅读 · 0 评论