系列一、RocketMQ入门

一、MQ概述

1.1、MQ简介

        MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程的API软件系统。消息:消息即数据,一般消息的体量不会很大。

1.2、MQ用途

        从网上可以查看到很多关于MQ用途的叙述,但总结起来其实就以下三点:

1.2.1、限流削峰

        MQ可以将系统的超量请求暂存其中,以便系统后期可以慢慢进行处理,从而避免了请求的丢失或系统被压垮。

 

1.2.2、异步解耦

        上游系统对下游系统的调用若为同步调用,则会大大地降低系统的吞吐量与并发度,且系统耦合度较高,而异步调用则会解决这些问题。所以两层之间若要实现由同步到异步的转化,一般性做法就是,在这两层之间添加一个MQ层。

1.2.3、数据搜集

        分布式系统会产生海量级数据流,例如:业务日志、监控数据、用户行为等。针对这些数据流进行实时或者批量采集汇总,然后对这些数据流进行大数据分析,是当前互联网平台的必备技术。通过MQ完成此类数据搜集是最好的选择。

1.3、常见MQ产品

1.3.1、ActiveMQ

        ActiveMQ是使用Java语言开发的一款MQ产品。早期很多公司与项目中都在使用,但是现在的社区活跃度已经很低了,现在的项目中也已经很少使用了。

1.3.2、RabbitMQ

        RabbitMQ是使用ErLang语言开发的一款MQ产品。其吞吐量较Kafka和RocketMQ要低,且由于其不是Java语言开发,所以公司内部对其实现定制化开发难度较大。

1.3.3、Kafka

        Kafka是使用Scala/Java语言开发的一款MQ产品。其最大的特点就是高吞吐量,常用于大数据领域的实时计算、日志采集等场景,其没有遵循任何常见的MQ协议,而是使用自研协议。

1.3.4、RocketMQ

        RocketMQ是使用Java语言开发的一款MQ产品。经过数年阿里巴巴双11的考验,性能与稳定性非常高,其没有遵循任何常见的MQ协议,而是使用自研协议。对于Spring Cloud Alibaba,其支持RabbitMQ、Kafka,但建议使用RocketMQ。

1.3.5、对比

1.4、MQ常见协议

        一般情况下MQ的实现都要遵循一些常规性协议,常见的协议如下:

1.4.1、JMS

        JMS,Java Message Service(Java消息服务),是Java平台上有关MOM(Message Oriented Middleware:面向消息的中间件)的技术规范,它便于系统中的Java应用程序进行消息交换,并且提供标准的生产、发送、接收消息的接口,简化企业应用的开发。ActiveMQ是该协议的典型实现。

1.4.2、STOMP

        STOMP,Streaming Text Oriented Message Protocol(面向流文本的消息协议),是一种MOM设计的简单文本协议。STOMP提供一个可互操作的连接格式,允许客户端与任意STOMP消息代理(Broker)进行交互。ActiveMQ是该协议的典型实现,RabbitMQ铜鼓插件可以支持该协议。

1.4.3、AMQP

        AMQP,Advanced Message Queuing Protocol(高级消息队列协议),一个提供统一消息服务的应用层标准,是应用层协议的一个开放标准,是一种MOM设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品、不同开发语言的限制。RabbitMQ是该协议的典型实现。

1.4.4、MQTT

        MQTT,Message Queuing Telemetry Transport(消息队列遥测传输),是IBM公司开发的一个即时通讯协议,是一种二进制协议,主要用于服务器和低功耗IoT(物联网)设备间的通信。该协议支持所有平台,几乎可以把所有物联网物品和外部连接起来,被用来当做传感器和制动器的通信协议。RabbitMQ通过插件可以支持该协议。

二、RocketMQ概述

2.1、RocketMQ简介

         RocketMQ是一款阿里巴巴开源的消息中间件。2016年11月28日,阿里巴巴向Apache软件基金会捐赠RabbitMQ,成为Apache孵化项目。2017年9月25日,Apache宣布RocketMQ孵化成为Apache顶级项目(TLP),成为国内首个互联网中间件在Apache上的顶级项目。

官网地址

https://rocketmq.apache.org/

2.2、RocketMQ发展历程

 

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

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

相关文章

从零开始 Spring Boot 52:@Embedded 和 @Embeddable

从零开始 Spring Boot 52:Embedded 和 Embeddable 图源:简书 (jianshu.com) 这篇文章会介绍Embedded和Embeddable两个注解在 JPA 中的用法。 简单示例 先看一个示例: AllArgsConstructor Builder Data Entity Table(name "user_stu…

【小沐学Unity3d】Unity播放视频(VideoPlayer组件)

文章目录 1、简介2、脚本播放示例3、界面播放示例3.1 2d界面全屏播放3.2 2d界面部分区域播放3.3 3d模型表面播放 结语 1、简介 使用视频播放器组件可将视频文件附加到游戏对象,然后在运行时在游戏对象的纹理上播放。 视频播放器 (Video Player) 组件: 属性功能Sourc…

Mysql锁机制介绍

Mysql锁机制 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题&#xff0…

【算法】最长递增子序列:动态规划贪心+二分查找

文章目录 最长递增子序列解法一:动态规划解法二:LIS 和 LCS 的关系解法三:贪心 二分查找 相关题目673. 最长递增子序列的个数 https://leetcode.cn/problems/number-of-longest-increasing-subsequence/1964. 找出到每个位置为止最长的有效障…

理解mysql数据库

1.MySQL 在 Centos 7环境安装 1.1 卸载不要的环境 ps ajx |grep mariadb # 先检查是否有 mariadb 存在 systemctl stop mariadb.service # 停⽌ mariadb 服务 ps ajx |grep mariadb # 再 检查是否有 mariadb 存在 1.2 删除多余的安装包 rpm -qa | grep mysql #查看默认安装…

Unity内置渲染管线升级URP教程

简介 URP全称为Universal Render Pipeline(通用渲染管线),可以提供更加灵活的渲染方案,通过添加Render Feature实现各种渲染效果。并且可以针对移动平台进行专门的优化,同时还提供了SRPBatcher提高渲染效率。Unity的一些工具,比如…

《项目实战》构建SpringCloud alibaba项目(三、构建服务方子工程store-user-service)

系列文章目录 构建SpringCloud alibaba项目(一、构建父工程、公共库、网关) 构建SpringCloud alibaba项目(二、构建微服务鉴权子工程store-authority-service) 构建SpringCloud alibaba项目(三、构建服务方子工程stor…

95道MongoDB面试题

1、mongodb是什么? MongoDB 是由 C语言编写的,是一个基于分布式文件存储的开源数据库系统。 再高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在给 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数…

前端技术栈 - ES6 - Promise -模块化编程

文章目录 🕛ES6⚡let变量⚡const常量⚡数组解构⚡对象解构⚡模板字符串⚡对象声明简写⚡对象方法简写⚡对象运算符扩展⚡箭头函数⚡作业布置 🕐Promise⚡需求分析⚡传统ajax回调嵌套⚡promise改进⚡promise异常捕获⚡promise链式调用⚡promise代码重排优…

Spark 3.4.x Server Client模式下的数据传输实现

背景 在Spark中python和jvm的通信杂谈–ArrowConverter中,我们提到Spark 3.4.x中是Client和Server之间的数据传输是采用Arrow IPC的,那具体是怎么实现的呢? 分析 直接上代码ClientE2ETestSuite test("createDataFrame from complex t…

Redis————主从架构

主从架构搭建 单机多实例 粗制一份redis.conf文件 将相关配置修改为如下值: port 与主节点端口后不相同即可 pidfile pid进程号保存文件pidfile的路径 logfile 日志文件名称 dir 指定数据存放目录 #需要注释掉bind #bind 127.0.0.1(bind绑定的是自己机…

Git使用与配置

Git分布式版本控制工具 一、Git安装与配置 Git基本配置 打开Git Bash 设置用户信息 # 配置用户名和用户邮箱 git config --global user.name xxx git config --global user.email xxxxx.com查看用户信息 # 查看用户名和用户邮箱 git config --global user.name git config --g…