【Kafka技术内幕】(一):认识MQ——典型应用场景和基本特性概述

rocketMQ学习笔记——broker的启动和高可用服务 broker的启动和高可用服务brokercontrollerstartmessage的startHAServicemaster与slave的通信netty服务启动后记 broker 本文仅仅探讨broker的启动和高可用注册, 以及如何提供消息服务 这里有一个不理解的地方就是, broker的高可用服务并没有使用到netty, 而是使用了NIO的socket broker就是个代理商, 生产者的消息发送给broker后, 消费者再去broker上面拉消息 rocketMQ的broker有高可用机制, 可以 阅读详情

我是少侠露飞。学习塑造人生,技术改变世界。

引言

从本篇开始,少侠将会和大家一起进入消息队列(MQ)的学习。学习MQ之前,首先必须要掌握它的应用场景(不能为了用而用),然后继续深入关键特性。

1 MQ的应用场景

1.1 MQ应用场景:解耦

在这里插入图片描述

  • 语言间解耦
  • 应用间解耦
    屏蔽实现细节
    异步通信,做到上下游各自扩展
    以投递通知的方式,上游不关注下游,不必同时在线
  • 地域之间解耦:数据复制、传递

1.2 MQ应用场景:广播

在这里插入图片描述

  • RPC:发送次数由消费者决定
  • MQ:生产者只发送一次

1.3 MQ应用场景:流量削峰

在这里插入图片描述
Produce rate > Consume rate

  • MQ可能出现短暂积压
  • 实际场景:商品秒杀,热点评论,外卖订单,批量导入

2 MQ的基本特性

2.1 消息的完整性

2.1.1 不丢失数据

在这里插入图片描述
要保证MQ不丢失数据,一般从两个方面考虑:

  1. 数据可靠
    通过副本replica保证,如上图所示,每条消息保存了三份,生产者投递到leader里,然后每个leader有两个follower,这些follower从leader中拉取最新的消息数据(这个过程类似与MySQL主从模式下slave通过binlog日志从master同步数据)。数据有三份,并且保存在不同的服务器上,这样的话即使宕机了一台,也不会出现数据的丢失,从而保证了数据的可靠性。
  2. 投递可靠
    数据到服务器上保存是可靠的,那还有可能发送的时候失败了啊,这怎么保证呢?别怕,正经的MQ都有投递的ACK机制。简单来说,就是Producer投递完消息到leader之后,会根据返回值判断是否成功投递,如果出现失败的话就会重新投递。这样从Producer端保证了投递的可靠性。

2.1.2 消费一次

记录消费的位置
至少消费一次(at least once)

  • 正常情况只消费一次

业务幂等

2.1.3 顺序消费

全局有序

  • 绝对的全局序:单生产线程+单队列+单消费线程

局部有序

  • hash一类消息至一个分区下

大致有序

  • 时间窗口期之间是有序

2.2 MQ支撑的业务场景

可靠VS性能

  • 高吞吐&低可靠
  • 高可靠&低吞

容量:集群,可横向扩展
特性:延迟消息、事务消息、回溯、死信

2.3 容灾

在这里插入图片描述

  • 节点容灾:某个数据分片不可用
  • 集群容灾:某个节点不可用
  • 机房容灾:某个机房不可用
  • 地域容灾:某地域的机房均不可用

小结

消息队列的基本认识到这里就结束了,大家看其实也没太难,重点注意MQ的应用场景可能会在面试中被考察。从下节开始,我们就正式进入Kafka的相关学习。

RocketMQ生产者详解 本文主要介绍生产者常用API,生产者核心参数和使用场景,以及发送时常见问题(broker busy,system busy等)和解决办法 阅读详情

相关推荐

Kafka vs CTG-MQ:电信级消息队列可靠性保障选型实战

摘要:本文分享了电信大数据平台中Kafka与CTG-MQ的双MQ架构选型实践。针对日均1.5亿条话单记录的处理需求,我们根据业务特性进行技术选型:Kafka用于高吞吐日志采集(100万条/秒)和实时监控,CTG-MQ则保障金融级可靠的话单传输(99.999%可靠性)。文章详细对比了两者在吞吐量(Kafka 100万+/秒 vs CTG-MQ 50万+/秒)、延迟(5-10ms vs 2-5ms)和事务支持等核心指标,并提供了Kafka日志采集的架构设计和代码实现示例,包括偏移量管理等可靠性保障机制。

老谢的专栏 562

RocketMQ

消息中间件以前常用RabbitMQ和ActiveMQ,由于业务需要,后期业务偏向大数据,现着重学习一下RocketMQ(RocketqMQ原理同ctg-mq),后续更新Kafka。

闰土的博客 1874

MQ的应用场景

1异步处理 场景说明: 用户注册后,需要发注册邮件和注册短信,传统的做法有两种1 .串行的方式2 .并行的方式 1.串行方式: 将注册信息写入数据库后,发送注册邮件再发送注册短信,以上三个任务全部完成后才返回给客户端。 这有一个问题是,邮件,短信并不是必须的,它只是一个通知,而这种做法让客户端等待没有必要等待的东西. 2.并行方式: 将注册信息写入数据库后,发送邮件的同时,发送短信,以上三个任务完成后,返回给客户端,并行的方式能提高处理的时间。 3.消息队列: 广播模型 ..

Ciel_Y的博客 6112

消息中间件(二)MQ使用场景

一、消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ 二、消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。     ...

jcpp9527的博客 1万+

大数据-什么是Kafka?&&Kafka的基本概念&&Kafka指令及数据同步&&Kafka和MQ的区别&&什么是零拷贝

一、什么是Kafka 一、概述 Kafka是发布订阅模式的消息队列 Kafka是由LinkedIn(领英)公司开发后来贡献给了Apache的消息队列 Kafka的特征: 发布和订阅消息流 在存储消息流的时候要提供容错机制 当数据流出现的时候能够及时处理 Kafka的应用场景: 能够在系统或者应用之间构建可靠的数据传输的实时流管道 能够构建一个转化或者应对数据流的实时流应用 Kafka是利用了Scala语言构建的,Scala天然支持并发和吞吐,保证Kafka的并发量和吞吐

weixin_47055922的博客 1854

从华为杯建模到论文录用:我的Biomedical Signal Processing and Control投稿全记录(含Latex模板与审稿人推荐技巧)

本文详细记录了作者从华为杯数学建模竞赛到Biomedical Signal Processing and Control期刊投稿的全过程,分享了如何将竞赛成果转化为学术论文的实用技巧,包括LaTeX排版中的常见陷阱与解决方案,以及审稿人推荐策略。特别提供了针对Elsevier模板的优化建议和高效回复审稿意见的方法,适合生物医学信号处理领域的研究者参考。

weixin_42549037的博客 454

【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka

一文详解三大MQ,RabbitMQ、RocketMQ、Kafka,各自的使用、原理和适用场景。

BugMan的博客 2万+

果蔬及菜品识别系统

果蔬及菜品识别系统

我的博客 2118

MQ: 消息队列常见应用场景及主流消息队列ActiveMQ、RabbitMQ、RocketMQ和Kafka的简单对比

1.关于消息队列 消息队列,外文名Message Queue,简称MQ,是指在消息的传输中保存消息的容器或服务。 消息队列,是分布式系统实现高性能、高可用、可伸缩等高级特效的重要组件,适用多种场景,如:消息通讯、异步处理、应用解耦、流量削峰等等。 常见的主流消息队列:ActiveMQ、RabbitMQ、RocketMQ和Kafka。 2.应用场景 2.1.消息通讯 作为消息队列,其本职场景就是实现...

韩超的博客 (hanchao5272) 5656

VESC电调高级调参指南:电机校准与性能优化实战解析

本文详细解析了VESC电调的高级调参方法,包括电机校准与性能优化实战技巧。从基础参数设置到高级机械参数优化,再到动态性能调优,提供了全面的调参指南。特别针对电机类型、功率设置、电池参数配置等关键环节给出实用建议,帮助用户充分发挥VESC电调的性能潜力。

weixin_30772105的博客 196

微信删除的聊天记录怎么恢复(2024年最新攻略合集)

随着微信对我们生活中方方面面的渗透,微信已然从一款简单的社交软件过渡成为现时代的一种生活方式,而微信中的聊天记录就是我们和朋友之间历程的最好证明。对此,今天我们来聊聊微信删除的聊天记录怎么恢复的问题。

m0_70960708的博客 945

MQ和kafka的区别

AMQP简单来说就是规定好了MQ的各个抽象组件,RabbitMQ则是一款完全严格按照AMQP来实现的开源MQ,使得很好被开源框架所集成,比如Spring AMQP专门就是用来操作AMQP架构的中间件的,因此RabbitMQ可以被Spring Boot很方便的集成。这样在被调用的应用挂掉以后,应用之间的调用不会直接产生异常,请求仍可以正常发送,待被调用应用重新起来以后,再去消费处理MQ中挤压的调用请求,为系统的修复争取到了时间。向消费者推送message,消费者向MQ返回ack,告知所推送的消息消费成功。

srlahsly的博客 4044

【QNX+Android虚拟化方案】00 - 系列文章链接汇总

【QNX+Android虚拟化方案】00 - 系列文章链接汇总

|~~~热爱生活、努力学习的小伙汁~~~| 1万+

Kafka 和 MQ 的区别

1.1.MQ简介消息中间件,其实准确的叫法应该叫消息队列(message queue),简称MQ。其本质上是个队列,有FIFO的性质,即first in first out,先入先出。RabbitMQRocketMQKafka1.2.MQ的应用场景流量削锋应用解耦异步任务1.流量削锋流量过大的时候,用MQ作为一个中间层,暂时存储流量,让流量在队列中排队去访问服务,从而控制直接访问服务的流量,减轻服务的实时流量压力。2.应用解耦使用MQ作为应用之间的中间层,从而使得应用之间不存在。

2401_83691559的博客 2586

无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方案

本文主要介绍了无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方案,希望能对使用wIndows的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 12万+

【Block总结】DiffAttention,差分注意力融入CLIP架构,抑制噪声,增强对相关特征的关注|即插即用

DiffCLIP通过微小的结构改动实现了显著的性能提升,为多模态模型的轻量化与高效化提供了新范式。

AI浩 1561

MQ学习笔记(一)Kafka简介

Message Queue 消息队列 ,在消息的传递过程中保存消息的容器。父亲==》书架《==儿子好处:应用解耦,异步提速,限流削峰使用成本:引入复杂度,最终一致性,高可用性何时使用:生产者不需要从消费者处获得反馈能够容忍短暂的不一致性效果要大于副作用。

qq_36509457的博客 1356

YOLOv8首创原创改进:即插即用|创新的轻量化非对称多级压缩LADH检测头

总结而言,本文介绍了一种名为轻量化非对称多级压缩LADH检测头的原创改进,该改进可与YOLOv8无缝适配,并显著提升了检测器的性能。在本文中,我们介绍了一种原创改进的检测头,名为轻量化非对称多级压缩LADH检测头,它可与YOLOv8无缝适配,显著提升了检测器的性能。此外,我们引入了多级压缩的概念,通过在不同的检测层级上应用不同程度的压缩,进一步提升了检测头的轻量化特性。具体而言,我们采用了逐级减少卷积核数量和通道数量的策略,以降低模型的参数量和计算复杂度,同时保持较高的检测精度。

IbcVue的博客 2181

kafka和MQ

1.传统串行化服务的 缺点: 1.1各个模块之间耦合性太强(类似于高中时期的串联电路) 1.2系统吞吐量不大,耗时多 优点:系统架构简单,排查错误方便 2.消息队列 适合用户量很大的 优点2.1解耦,提升性能 缺点:分布事务解决方案 事务:只要是涉及到消息队列,肯定是要处理事务问题(事务的性质:原子性即我的所有动作要么执行要么全都不执行,比如张三给我100块,执行的是两个动作张三-100我加100) 架构设计: 从功能块的访问量来选择。消息队列,redis,zookeeper,锁,jvm,Spring,

qq_45703474的博客 7533

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Kafka(一):概述

Kafka学习:安装部署操作、Kafka工作流程和架构

学习记录和总结 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

主流MQ [Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ]

下面是关于主流的 Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ 的一些介绍:Kafka 是一个分布式流处理平台,设计用于处理高吞吐量的实时数据流。它具有高可靠性、可扩展性和持久性,适用于构建实时数据管道和流式处理应用程序。Kafka 使用发布-订阅模型,消息以主题(topic)的形式进行发布和订阅。RabbitMQ 是一个功能丰富且易于使用的开源消息队列系统,实现了高级消息队列协议(AMQP)。

小电玩 3122

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

(一)MQ概述与技术选型

为什么使用消息队列? 消息队列的优缺点? ActiveMQ、Kafka、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 为什么使用消息队列? 答案:解耦、异步、削峰。 看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃...... 在这个场景中,A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。A.

lss446937072的博客 1975

MQ对比选型:RocketMQ、Kafka、RabbitMQ、ActiveMQ、ZeroMQ

MQ对比选型:RocketMQ、Kafka、RabbitMQ、ActiveMQ、ZeroMQ

namelessmyth的专栏 5426

系列一、MQ简介

一、MQ简介 1.1、概述 MQ(Message Queue),是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息(消息即数据,一般消息的体量不会很大)生产、存储、消费全过程的API软件系统。 1.2、应用场景 MQ常用的应用场景主要分为以下三种,即:流量削峰、异步解耦、数据搜集,下面一 一介绍。 1.2.1、流量削峰 MQ可以将系统的超量请求暂存其中,以便系统后期可以慢慢进行处理,从而避免了请求的丢失或系统被压垮。

仰望星空,脚踏实地!安全感是自己给的,努力才是一辈子的安全感。 1188

kafka-connect-mq-source:将IBM MQ数据流无缝导入Apache Kafka

kafka-connect-mq-source:将IBM MQ数据流无缝导入Apache Kafka 项目介绍 kafka-connect-mq-source 是一个用于将IBM MQ中的数据复制到Apache Kafka的Kafka Connect源连接器。该连接器以源代码形式提供,你可以轻松地将其构建为一个JAR文件。它支持两种连接方式:客户端连接和绑定连接,使得在不同场景下都能够灵活使用。 ...

gitblog_01088的博客 1120

浅谈Kakfa【一】Kafka基本概述与Partition

文章目录一、前言1.为什么引入MQ?2.哪些场景需要MQ?3.使用MQ需要注意哪些?二、Kafka概述与日志存储结构1.Kafka名词解释:2.Kafka特性:3.Kafka日志存储:3.1 Partition的数据文件3.2 数据文件的分段3.3 数据文件的索引3.4 偏移量索引3.6 时间戳索引三、结语 一、前言 本系列是Kafka基本知识与原理解读,不涉及源码的翻译与解释,可以全面了解Kafka的相关概念与底层实现原理。 1.为什么引入MQ? (1) 解耦:将两个或多个互相强关联的系统进行解耦,

Yu_uuuuu的博客 916
上一篇: 【享学Redis】Redis典型应用及原理分析
下一篇: 【Kafka技术内幕】(二):Kafka简介
少侠露飞
博客等级 码龄9年 214粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值