RocketMQ 02 功能大纲介绍

RocketMQ 02

主流的MQ有很多,比如ActiveMQ、RabbitMQ、RocketMQ、Kafka、ZeroMQ等。

之前阿里巴巴也是使用ActiveMQ,随着业务发展,ActiveMQ IO 模块出现瓶颈,后来阿里巴巴 通过一系列优化但是还是不能很好的解决,之后阿里巴巴把注意力放到了主流消息中间件kafka上面,但是kafka并不能满足他们的要求,尤其是低延迟和高可靠性。

所以RocketMQ是站在巨人的肩膀上(kafka)MetaQ的内核,又对其进行了优化让其更满足互联网公司的特点。它是纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。 RocketMQ目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog分发等场景。

RocketMQ 功能 大纲

RocketMQ介绍

  • 消息队列应用场景
  • rocketmq中的角色
    • nameserver
  • 官网解读

消息发送

  • 同步发送

  • 异步发送

  • 单向发送

  • 消息批量发送

  • 消息结构

  • 消息发送流程

消息存储

  • 存储方式
  • 发送消息时存储流程
  • 存储文件与内存映射
  • 刷盘机制
  • 文件恢复与过期删除机制
  • 索引

消息消费

  • 消息订阅
  • 消息拉取和推送
  • 消息处理队列
  • 顺序消费
  • 定时消息机制
  • 消息过滤TAG与sql92
  • FilterServer过滤机制
  • 并发消息消费
  • 消费负载与算法
  • 消费者动态添加
  • 消息消费过程
  • ACK
  • 消费进度与offset

Rocketmq集群 HA

  • 集群搭建
  • 主从同步复制原理
  • 读写分离机制

整合

  • 使用spring
  • SpringCloud整合

监控与运维

  • rocketmq-console监控平台
  • 命令行运维 MQAdmin
  • 自定义日志

消息队列介绍

消息队列是《数据结构》中先进先出的一种数据结构,在当前的架构中,作为中间件提供服务。

消息中间件功能

应用解耦

AB应用不在互相依赖

流量削峰

流量达到高峰的时候,通常使用限流算法来控制流量涌入系统,避免系统被击瘫,但是这种方式损失了一部分请求

此时可以使用消息中间件来缓冲大量的请求,匀速消费,当消息队列中堆积消息过多时,我们可以动态上线增加消费端,来保证不丢失重要请求。

大数据处理

消息中间件可以把各个模块中产生的管理员操作日志、用户行为、系统状态等数据文件作为消息收集到主题中

数据使用方可以订阅自己感兴趣的数据内容互不影响,进行消费

异构系统

跨语言

RocketMQ 角色

broker
  • Broker面向producer和consumer接受和发送消息
  • 向nameserver提交自己的信息
  • 是消息中间件的消息存储、转发服务器。
  • 每个Broker节点,在启动时,都会遍历NameServer列表,与每个NameServer建立长连接,注册自己的信息,之后定时上报。
broker集群
  • Broker高可用,可以配成Master/Slave结构,Master可写可读,Slave只可以读,Master将写入的数据同步给Slave。
    • 一个Master可以对应多个Slave,但是一个Slave只能对应一个Master
    • Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义BrokerId为0表示Master,非0表示Slave
  • Master多机负载,可以部署多个broker
    • 每个Broker与nameserver集群中的所有节点建立长连接,定时注册Topic信息到所有nameserver。
producer
  • 消息的生产者
  • 通过集群中的其中一个节点(随机选择)建立长连接,获得Topic的路由信息,包括Topic下面有哪些Queue,这些Queue分布在哪些Broker上等
  • 接下来向提供Topic服务的Master建立长连接,且定时向Master发送心跳
consumer

消息的消费者,通过NameServer集群获得Topic的路由信息,连接到对应的Broker上消费消息。

注意,由于Master和Slave都可以读取消息,因此Consumer会与Master和Slave都建立连接。

nameserver

底层由netty实现,提供了路由管理、服务注册、服务发现的功能,是一个无状态节点

nameserver是服务发现者,集群中各个角色(producer、broker、consumer等)都需要定时想nameserver上报自己的状态,以便互相发现彼此,超时不上报的话,nameserver会把它从列表中剔除

nameserver可以部署多个,当多个nameserver存在的时候,其他角色同时向他们上报信息,以保证高可用,

NameServer集群间互不通信,没有主备的概念

nameserver内存式存储,nameserver中的broker、topic等信息默认不会持久化

为什么不用zookeeper?:rocketmq希望为了提高性能,CAP定理,客户端负载均衡

对比JSM中的Topic和Queue

Topic是一个逻辑上的概念,实际上Message是在每个Broker上以Queue的形式记录。
在这里插入图片描述

对应到JMS中的topic实现是由客户端来完成的

        consumer.setMessageModel(MessageModel.BROADCASTING);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/311101.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么进入抖音企业号管理页面?抖音企业号后台管理入口

抖音企业号上线于2018年6月,截止2020年,开通抖音企业号的企业数超过500万。抖音企业号,是企业商户在抖音平台上的经营阵地,能够帮助企业面向抖音用户“打品牌,找客户,做推广,带销量”&#xff0…

流媒体服务器的应用场景

流媒体服务器的应用场景 流媒体常用协议 RTSP 不适合手机和浏览器端 RTMP 比较适合手机和浏览器端直播 HLS 延迟比较高,适合点播

【JAVA基础篇教学】第八篇:Java中List详解说明

博主打算从0-1讲解下java基础教学,今天教学第八篇:Java中List详解说明。 在 Java 编程中,List 接口是一个非常常用的集合接口,它代表了一个有序的集合,可以包含重复的元素。List 接口提供了一系列操作方法,…

ClickHouse--16--普通函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、日期函数1、时间或日期截取函数(返回非日期)2、时间或日期截取函数(返回日期)3、日期或时间日期生成函数 二、类…

纯css实现左右拖拽改变盒子大小

效果&#xff1a; 代码 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html;charsetutf-8"><title></title><style>body {background-color: black;color: white;}.column {ove…

Python 物联网入门指南(四)

原文&#xff1a;zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第九章&#xff1a;构建光学字符识别的神经网络模块 本章介绍以下主题&#xff1a; 使用光学字符识别&#xff08;OCR&#xff09;系统 使…

【项目实战】记录一次PG数据库迁移至GaussDB测试(上)

目录 一、说明 1.1、参考文档 1.2、注意事项 1.3、环境基本情况 二、GaussDB新环境安装 2.1 配置操作环境变量 2.1.1 关闭防火墙 步骤1 执行以下命令&#xff0c;检查防火墙是否关闭。 步骤2 执行以下命令&#xff0c;关闭防火墙并禁止开机启动。 步骤3 修改/etc/sel…

根据后端获取到的文档流,下载打开显示“无法打开文件”

原代码&#xff1a; download(item) {this.axios.get(api.download/item.name).then(res > {// console.log(res)let bob new Blob([res.data],{type: application/vnd.ms-excel})const link document.createElement(a);let url window.URL.createObjectURL(bob);link.d…

attention and tell论文【无标题】

这个公式使用LaTeX语法表示为&#xff1a; ( i t f t o t c t ) ( σ σ σ tanh ⁡ ) T D m n , n ( E y t − 1 h t − 1 x t ) \begin{pmatrix}i_t \\f_t \\o_t \\c_t\end{pmatrix} \begin{pmatrix}\sigma \\\sigma \\\sigma \\\tanh\end{pmatrix}T_{Dmn,n}\begin{pmatri…

php未能在vscode识别?

在设置里搜php&#xff0c;找到settings.json&#xff0c;设置你的安装路径即可。 成功

性能测试汇总一

目录 性能测试流程​编辑性能相关概念 什么是新能测试 性能测试思维 性能测试环境要求 负载测试 压力测试 可靠性测试 稳定性测试 压力测试 容量测试 性能指标 并发用户数 响应时间 TPS 吞吐量 吞吐率 QPS 性能测试流程 测试准备 性能测试环境搭建 性能测试…

光场相机建模与畸变校正改进方法

摘要&#xff1a;光场相机作为一种新型的成像系统&#xff0c;可以直接从一次曝光的图像中得到三维信息。为了能够更充分有效地利用光场数据包含的角度和位置信息&#xff0c;完成更加精准的场景深度计算&#xff0c;从而提升光场相机的三维重建的精度&#xff0c;需要实现精确…

Scrapy框架 进阶

Scrapy框架基础Scrapy框架进阶 【五】持久化存储 命令行&#xff1a;json、csv等管道&#xff1a;什么数据类型都可以 【1】命令行简单存储 &#xff08;1&#xff09;语法 Json格式 scrapy crawl 自定义爬虫程序文件名 -o 文件名.jsonCSV格式 scrapy crawl 自定义爬虫程…

华为云CodeArts IDE For Python 快速使用指南

CodeArts IDE 带有 Python 扩展&#xff0c;为 Python 语言提供了广泛的支持。Python 扩展可以利用 CodeArts IDE 的代码补全、验证、调试和单元测试等特性&#xff0c;与多种 Python 解释器协同工作&#xff0c;轻松切换包括虚拟环境和 conda 环境的 Python 环境。本文简要概述…

基于springboot+vue实现的疫情防控物资调配与管理系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

算法—分治

分而治之:指的是当主问题可以被分解为一个相同次级问题加相同基本问题时&#xff0c;采用这种思想&#xff0c;基本问题指问题规模最小时的情况&#xff0c;次级问题是指主问题的n级降低n-1级的问题。 具体实现&#xff1a;多数采用递归操作分解&#xff0c;然后递归操作&#…

视频国标学习

总体介绍 GB/T28181协议&#xff0c;全名叫《安全防范视频监控联网系统信息传输、交换、控制技术要求》&#xff0c;是由中国国家标准委员会发布的一种国家级的标准。它主要对视频监控系统的各个方面做了明确的规定&#xff0c;使得不同厂商生产的视频监控设备能够相互连通&am…

多普勒频移

下面从频谱的角度理解多普勒频移。 设目标以速度接近雷达&#xff0c;在时刻距离&#xff0c;则在任意时刻目标与雷达的距离为 设雷达发射信号为。设时刻发射的信号经过遇到目标&#xff0c;则由于目标与信号相向运动&#xff0c;有 得到&#xff0c;从而时刻发射的信号经过返回…

2024蓝桥杯——宝石问题

先展示题目 声明 以下代码仅是我的个人看法&#xff0c;在自己考试过程中的优化版&#xff0c;本人考试就踩了很多坑&#xff0c;我会—一列举出来。代码可能很多&#xff0c;但是总体时间复杂度不高只有0(N) 函数里面的动态数组我没有写开辟判断和free&#xff0c;这里我忽略…

C语言:文件操作(三)

目录 前言 5、文章的随机读写 5.1 fseek 5.2 ftell 5.3 rewind 结语 前言 本篇文章继续讲解文件操作&#xff0c;讲解文件的随机读写&#xff0c;主要有三个函数&#xff1a;fseek&#xff1b;ftell&#xff1b;rewind。 前面讲解的函数都是对文件内容进行顺序读写&#x…