RocketMQ第一节(MQ的初步了解)

目录

 

1:什么是消息队列

2:MQ的基础模型

3:MQ的作用

3.1:MQ用来解耦

3.2: 削峰填谷

4:MQ怎么选


1:什么是消息队列

MQ全称是Message Queue (消息队列),是消息传输中间件,用在分布式系统中消息传输过程中保存消息的容器。

2:MQ的基础模型

生产者将消息发送到消息队列,消息队列保存消息,消息队列将消息发送给消费者,又或者消费者去消息队列拉取消息。生产者和消费者称为客户端,相对应的MQ就是服务端。

3:MQ的作用

3.1:MQ用来解耦

在微服务中分布式系统中,我们直接调用的存在调用链路复杂,使用MQ能解耦各个系统,降低耦合性,比如订单系统的下单和减库存。使用mq,下单在订单系统完成,减库存操作发送到MQ,提高并发量。

解耦之前

解耦之后

解耦带来的好处就是速度的提升:

之前请求时间:50ms*4=200ms

之后请求时间

3.2: 削峰填谷

系统没有使用mq的直接操作数据的时候,最大并发量是1000/S,当出现大并发的时候5000/S的时候,系统报错,比如数据库连接池不够用等错误。我们把这5000/S的请求打到MQ,这就是削峰。

MQ的消费者以固定的速度消费消息,比如2000/S。将MQ积压的消息消费完毕,这就是填谷。

4:MQ怎么选

市面上免费的MQ产品主要有RocketMQ、ActiveMQ、Kafka和RabbitMQ。

这几种MQ怎么选择呢?我们需要知道他们的技术特点然后结合自己的需求来选择。

我们列出这四种MQ的技术特点,然后根据需求选择。

Kafka的优缺点

优点:

  1. 高吞吐量:即使在非常廉价的机器上,Kafka也能做到每秒处理几十万条消息,而它的延迟最低只有几毫秒。

  2. 低延迟:延迟可以控制在ms以内。

  3. 持久性:Kafka可以将消息直接持久化在普通磁盘上,且磁盘读写性能优异。

  4. 扩展性。Kafka集群支持热扩展,Kaka集群启动运行后,用户可以直接向集群中添加。

  5. 容错性。Kafka会将数据备份到多台服务器节点中,即使当某个服务器节点失效时,Zookeeper将通知生产者和消费者从而使用其他的节点,也不会影响整个系统的功能。

  6. 支持多种客户端语言。Kafka支持Java、.NET、PHP、Python等多种语言。

缺点:

  1. 重复消息:Kafka保证每条消息至少送达一次,虽然几率很小,但一条消息可能被送达多次。

  2. 消息乱序:Kafka某一个固定的Partition内部的消息是保证有序的,如果一个Topic有多个Partition,partition之间的消息送达不保证有序。

  3. 复杂性:Kafka需要Zookeeper的支持,Topic一般需要人工创建,部署和维护比一般MQ成本更高。

  4. topic 从几十到几百个时候,吞吐量会大幅度下降,在同等机器下,Kafka 尽量保证 topic 数量不要过多,如果要支撑大规模的 topic,需要增加更多的机器资源。

RabbitMQ的优缺点

优点:

  1. 持久化:RabbitMQ可以保证所在的服务器宕机后,消息不会丢失。

  2. 高可用:部分机器宕机了还可以继续使用。

  3. 高级功能:如消息重试、死信队列等

缺点:

  1. 首先是RabbitMQ吞吐量比较低,大概在每秒几万的样子,这样像对于大型电商促销秒杀就不能胜任。

  2. 集群线性扩展比较麻烦。

  3. 开发语言是erlang,懂得人不是很多,无法对其改造。

RocketMQ的优缺点

优点:

  1. 高吞吐量:大概普通机器有十万QPS往上。

  2. 消息可靠性:

    • 生产者的可靠性保证:生产者发送消息后返回SendResult,如果isSuccess返回true,则表示消息已经确认发送到服务器并被服务器接收保存。整个发送过程是一个同步过程。

    • 服务器的可靠性:消息生产者发送的消息,RocketMQ服务收到后在做必要的校验和检查之后马上保存到磁盘,写入成功后返回给生产者。因此可以确认每条发送结果为成功的消息都会被消息服务器写入磁盘。

    • 消费者的可靠性:消费者是一条一条顺序消费的,之后在成功消费一条后才会消费吓一跳。如果在消费某一条消息时失败则会重试消费这条消息,默认为5次,如果超过最大次数仍然无法消费,则将消息保存到本地,后台线程继续重试消费,主线程则会继续往后走,消费队列后面的消息。

  3. 消息持久性RocketMQ收到消息后,会将消息持久化到文件,并利用Linux文件系统内存来提高性能

  4. 消息实时性:RocketMQ采取长轮询+PULL模式保证消息的实时性

  5. 消息堆积:支持10亿级别的消息堆积,不会因为消息堆积影响性能

  6. 高级功能:如延迟消息、消息回朔等

  7. 使用的java开发

缺点:

  1. 消息重复:对于消费者来说,通过拉取方式将消息保存到本地,消费完再向服务器返回,在网络异常的情况下可能会出现重复。

  2. 消息过滤:

  • 服务器端过滤:减少不必要消息传输,但是会增加服务器负担

  • 客户端过滤:根据客户端需求来定制消息,缺点是客户端会收到对它来说没用的消息,如果客户端无法承载这么多消息就会导致故障



 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

huggingface下载的.arrow数据集读取与使用说明

1.数据下载方式:load_dataset 将数据集下载到本地:(此处下载的是一个物体目标检测的数据集) from datasets import load_dataset # 下载的数据集名称, model_name keremberke/plane-detection # 数据集保存的路径 save_path da…

mac十大必备软件排行榜 mac垃圾清理软件哪个好

刚拿到全新的mac电脑却不知道该怎么使用?首先应该装什么软件呢?如果你有同样的疑惑,今天这篇文章一定不要错过。接下来小编为大家介绍mac十大必备软件排行榜,以及mac垃圾清理软件哪个好。 一、mac十大必备软件排行榜 1.CleanMyM…

停车场管理系统的设计与实现_kaic

目 录 1 概 述 1.1研究背景 1.2研究现状 1.3研究内容 2 相关技术简介 2.1 JSP技术 2.2 JAVA技术 2.3 MYSQL数据库 2.4 B/S结构 3 系统需求分析 3.1 系统可行性分析 3.1.1 操作可行性 3.1.2 经济可行性 3.1.3 技术可行性 3.2 系统性能分析 3.3系统流程分析 3.3.1注册流程 3.3.…

智慧园区数字化转型下的移动App发展

随着智慧城市的建设和智慧园区的崛起,智慧园区数字一体化建设成为园区发展的重心,当然数字转型离不开移动应用的整合服务。 在过去的几年中,智慧园区移动应用已经发展成为园区管理和服务的重要手段之一,为企业和员工提供了更加便…

Machine Learning-Ex6(吴恩达课后习题)Support Vector Machines

目录 1. Support Vector Machines 1.1 Example Dataset 1 1.2 SVM with Gaussian Kernels 1.2.1 Gaussian Kernel 1.2.2 Example Dataset 2 1.2.3 Example Dataset 3 2. Spam Classification 2.1 Preprocessing Emails 2.1.1 Vocabulary List 2.2 Extracting Feature…

安卓GB28181-2022 RTP over TCP

使用TCP传输RTP包,GB28181-2016和GB28181-2022 都是按IETF RFC4571来的。使用TCP发送RTP包,前面加个16位无符号长度字段就好(网络字节序)。具体定义格式如下: 需要注意的是LENGTH值可以是0,0的话表示空包; 另外UDP传输RTP包&#…

第二届易派客工业品展圆满落幕 3天超7万人次观展

4月15日,第二届易派客工业品展览会在苏州国际博览中心成功闭幕,展会期间共7.4万人次观展。展会以“绿色•智造•融通•赋能”为主题,为参展企业衔接供需、共享商机、共促发展提供平台,推动工业企业数字化转型、致力供应链优化升级…

blast的-max_target_seqs?

Shah, N., Nute, M.G., Warnow, T., and Pop, M. (2018). Misunderstood parameter of NCBI BLAST impacts the correctness of bioinformatics workflows. Bioinformatics. 杂志Bioinformatics以letter to the editor的形式刊发了来自美国马里兰大学计算机系的Nidhi Shah等人…

powershell搞定烦人的Windows Defender

0x00 Windows Defender真烦 最近装了不少虚拟机,发现目前较新版本的windows Defender是真的烦,关了一段时间后,自己又打开。特别是装了域控后的winserver 2016,半都关不掉,做个实验是真烦。 顺手去查了下如何使用pow…

ThinkPHP模型操作上

ThinkPHP模型操作上 前言模型一、创建模型二、模型操作 总结 前言 在mvc架构中,模型的解释是写逻辑代码的地方,其实还可以这样理解,就是一串操作写在一个模型类中,就是你要完成某一项功能,将这个功能的代码写在一个mod…

2023年产业基金研究报告

第一章 行业概况 1.1 概述 产业基金,又称为产业投资基金,是一种由政府、企业、金融机构等出资设立的,专门用于支持和促进特定产业发展的投资基金。产业基金通常以股权投资和长期投资为主,旨在推动产业结构升级、促进科技创新、提…

基于ResNet-attention的负荷预测

一、attention机制 注意力模型最近几年在深度学习各个领域被广泛使用,无论是图像处理、语音识别还是自然语言处理的各种不同类型的任务中,都很容易遇到注意力模型的身影。从注意力模型的命名方式看,很明显其借鉴了人类的注意力机制。我们来看…

融云 CTO 岑裕:出海技术前沿探索和排「坑」实践

在本文中,你将看到以下内容: 全球通信网络在接入点、链路加速、服务商、协议等层面的动态演进; 进入到具体市场,禁运国、跨国拦截、区域一致性差等细节“坑点”如何应对; 融云如何从技术侧帮助开发者应对本地化用户体…

Hive与HBase的区别及应用场景

目录: 零、前言一、定义二、区别三、应用场景 零、前言 在学大数据分析的过程中,Hive和HBase是两个非常重要的内容,对于初学者而言容易混淆。所以比较两者区别,能够帮助我们对这两个组件有一个清晰的认识和定位。那么,…

一篇文章看懂MySQL的多表连接(包含左/右/全外连接)

MySQL的多表查询 这是第二次学习多表查询,关于左右连接还是不是很熟悉,因此重新看一下。小目标:一篇文章看懂多表查询!! 这篇博客是跟着宋红康老师学习的,点击此处查看视频,关于数据库我放在了…

大神们分享STM32的学习方法

单片机用处这么广,尤其是STM32生态这么火!如何快速上手学习呢? 第一:你要考虑的是,要用STM32实现什么 为什么使用STM32而不是8051? 是因为51的频率太低,无法满足计算需求?是51的管脚太少,无法…

云HIS(二级医院,乡镇医院,民营医院,标准化HIS医院信息管理系统源码)

传统 HIS(基于医院信息系统) 和云 HIS(基于云计算的医院信息系统)各有优缺点,选择哪种系统需要根据具体情况进行权衡。 传统 HIS 系统通常由医院自行开发和维护,适用于医院内部信息化程度较高、数据安全性…

【软件测试】第1章 软件测试概述

系列文章目录 文章目录 系列文章目录前言第1章 软件测试概述1.1 软件、软件危机和软件工程1.1.1 基本概念1.1.2 软件工程的目标及其一般开发过程1.1.3 软件过程模型 1.2 软件缺陷与软件故障1.2.1 基本概念1.2.2 典型案例 1.3 软件测试的概念1.3.1 软件测试的定义1.3.2 软件测试…

计算机程序安装及使用须知_kaic

安装及使用须知 1 数据库建模程序的使用 本文件夹中的“PowerDesigner建模”目录下包含三个可运行文件TMS1.cdm,TMS.cdm,TMS.pdm分别为TMS系统的实体关系简图、实体关系图和数据库模型,使用PowerDesigner集成开发环境打开任意一个文件即可运…

Linux系统与shell编程第一节课

目录 1.1 Linux发展历史 1.2 什么是linux? 1.3 Linux的发行版 Host-Only(仅主机模式) windows开发 linux服务 区块链, 特点:稳定,安全,可移植性,低资源消耗,开源软…