![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
消息中心组件 - mq
文章平均质量分 91
消息中心组件 - mq
文晓武
专注搜索推荐问答推荐工程领域,涉及到的技术有:Java、ElasticSearch、SpringBoot、SpringCloud、Dubbo、Linux、Docker、Sql、Kafka、RabbitMQ、RocketMQ、MyBatis、XXl-Job、Zookeeper、Nginx、Redis、Tomcat、Git、SVN、Maven、K8S等,每周不定期更新精华文章!
展开
-
RabbitMQ 怎么保证可靠性、幂等性、消费顺序?
RabbitMQ消息丢失的三种情况方法一:生产者在发送数据之前开启RabbitMQ的事务(采用该种方法由于事务机制,会导致吞吐量下降,太消耗性能。)方法二:开启confirm模式(使用springboot时在application.yml配置文件中做如下配置,实现confirm回调接口,生产者发送消息时设置confirm回调)小结:事务机制和 confirm机制最大的不同在于,事务机制是同步的,你提交一个事务之后会阻塞在那儿,但是 confirm机制是异步的,你发送个消息之后就可以发送下一个消息,Rabbi转载 2022-06-17 15:51:23 · 131 阅读 · 0 评论 -
RocketMQ发布5.0版本:架构大重构,代码变更比例高达60%
RocketMQ 是一个来自阿里巴巴的分布式消息中间件,于 2012 年开源,并在 2017 年正式成为 Apache 顶级项目。2017 年 2 月 20 日,RocketMQ 正式发布 4.0 版本。差不多 5 年之后,我们终于等来了 5.0 版本。RocketMQ 5.0 专注于消息基础架构的云原生化演进,聚焦在消息领域的后处理场景,支持消息的流式处理和轻计算,帮助用户实现消息的就近计算和分析,并将全面拥抱 Serverless 和 EDA。据阿里云消息产品线负责人林清山介绍,这次发布的版本,因为进行转载 2022-06-15 06:33:54 · 2679 阅读 · 0 评论 -
《RabbitMQ》| 解决消息延迟和堆积问题
消息可靠性问题:如何确保发送的消息至少被消费一次?延迟消息问题:如何实现消息的延迟投递?消息堆积问题:如何解决数百万级以上消息堆积,无法及时消费问题?我们在上篇已经说明了如何解决的问题,也就是保证了消息的可靠性,那么其余两个问题同样重要,这篇我们将讲述其余两个问题的解决方式~!延迟消息 字面意思就是让延迟接收消息,那么如何能让消息延迟到达?这就是我们要思考解决的问题,在了解延迟队列之前我们需要先明白 中的两个概念死信交换机TTL1)死信交换机死信(dead letter),也就是废弃已死亡的消息,那什么情转载 2022-06-15 06:25:25 · 1788 阅读 · 3 评论 -
深入理解:一文讲透RabbitMQ
关于RabbitMQ出身:诞生于金融行业的消息队列语言:Erlang协议:AMQP(Advanced Message Queuing Protocol 高级消息队列协议)关键词:内存队列,高可用,一条消息Producer/Consumer:生产者消费者Exchange:交换器,可以理解为队列的路由逻辑,交换器主要有三种,图中是Direct交换器Queue:队列Binding:绑定关系,实际是交换器上映射队列的规则在上图的模式下,交换器的类型为Direct,伪代码表示消息的生产和消费消息生产Routin转载 2022-06-15 06:10:16 · 338 阅读 · 0 评论 -
深入理解RabbitMQ架构模型
RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息。可以把消息传递的过程想象成:当你将一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上,RabbitMQ 就好比由邮局、邮箱和邮递员组成的一个系统。从计算机术语层面来说,RabbitMQ 模型更像是一种交换机模型。Producer:生产者,就是投递消息的一方。生产者创建消息,然后发布到 RabbitMQ 中。消息一般可以包含 2 个部分:消息体和标签(Label)。消息体也可以称之为 payload,在实际应用中,转载 2022-06-15 05:43:08 · 253 阅读 · 0 评论 -
RabbitMQ 如何保证全链路数据100%不丢失?
- 前言 -我们都知道,消息从生产端到消费端消费要经过3个步骤:生产端发送消息到RabbitMQ;RabbitMQ发送消息到消费端;消费端消费这条消息;这3个步骤中的每一步都有可能导致消息丢失,消息丢失不可怕,可怕的是丢失了我们还不知道,所以要有一些措施来保证系统的可靠性。这里的可靠并不是一定就100%不丢失了,磁盘损坏,机房爆炸等等都能导致数据丢失,当然这种都是极小概率发生,能做到99.999999%消息不丢失,就是可靠的了。下面来具体分析一下问题以及解决方案。- 生产端可靠性投递转载 2022-06-14 13:54:10 · 60 阅读 · 0 评论 -
Kafka为什么吞吐量大、速度快?
Kafka是大数据领域无处不在的消息中间件,目前广泛使用在企业内部的实时数据管道,并帮助企业构建自己的流计算应用程序。Kafka虽然是基于磁盘做的数据存储,但却具有高性能、高吞吐、低延时的特点,其吞吐量动辄几万、几十上百万。但是很多使用过Kafka的人,经常会被问到这样一个问题,Kafka为什么速度快,吞吐量大;大部分被问的人都是一下子就懵了,或者是只知道一些简单的点,本文就简单的介绍一下Kafka为什么吞吐量大,速度快。众所周知Kafka是将消息记录持久化到本地磁盘中的,一般人会认为磁盘读写性能差,可能会转载 2022-06-14 12:02:40 · 1297 阅读 · 0 评论 -
RabbitMQ 和 Kafka 的区别
kafka是apache开源的消息队列顶级项目之一,在大数据场景下使用较多,由linkedin开源,目前社区活跃,全球较多组织开始使用kafka来进行数据交换。RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。在实际生产应用中,通常会使用kafka作为消息传输的数据管道,rabbitmq作为交易数据作为数据传输管道,主要的取舍因素则是是否存在丢数据的可能;rabbitmq在金融场景中经常使用,具有较高的严谨性,数据丢失的可能性更小,同转载 2022-06-14 12:01:16 · 3159 阅读 · 0 评论 -
如何保证消息的顺序性、消息不丢失、不被重复消费
业务场景:我们需要根据mysql的binlog日志同步一个数据库的数据到另一个库中,加如在binlog中对同一条数据做了insert,update,delete操作,我们往MQ顺序写入了insert,update,delete操作的三条消息,那么根据分析,最终同步到另一个库中,这条数据是被删除了的。但是,如果这三条消息不是按照insert,update,delete顺序被消费,而是按照delete,insert,update的顺序被消费,那么最终这条数据是会保存到新库中的。这就导致了数据错乱了。下面讲解下R转载 2022-06-09 14:22:27 · 471 阅读 · 0 评论 -
多数据中心的百万级消息服务实战 - RabbitMQ Sharding插件
背景利用RabbitMQ集群横向扩展能力,均衡流量压力,让消息集群的秒级服务能力达到百万,Google曾做过此类实验;有货在某些推送场景下也做了类似尝试,在此对此前实践经验以及踩得坑做些总结工作。RabbitMQ概述RabbitMQ是基于AMQP协议实现的消息中间件的一种,常用于在分布式系统中存储转发消息,表现为易用、可扩展、高可用等特点,最初活跃在金融系统中。消息中间件的主要作用是让服务组件之间能够解耦,消息生产者无需关注消息消费者的存在与行为。1.Message:由Producer发转载 2022-03-03 19:24:26 · 814 阅读 · 0 评论 -
4 张图,9 个维度告诉你怎么做能确保 RocketMQ 不丢失消息
引入消息队列可以方便地实现系统解耦、削峰填谷等作用。但是消息队列使用不当,可能会引起消息丢失,在一些消息敏感的业务场景下,这是不允许的。今天我们来聊一聊 RocketMQ 怎么做能确保消息不丢失。1 RocketMQ 简介RocketMQ 是阿里巴巴开源的分布式消息中间件,整体架构如下图:RocketMQ 主要包括 Producer、Consumer 和 Broker,同时 Name Server 进行集群注册管理和保存元数据。2 消息不丢失要想保证消息不丢失,需要从以下几个方面考虑转载 2022-03-02 22:40:49 · 114 阅读 · 0 评论 -
发送千万级消息,我是这样设计的
我是3y,一年CRUD经验用十年的markdown程序员👨🏻💻常年被誉为优质八股文选手前几天,我讲了什么是定时任务、为什么要用定时任务、什么是分布式定时任务、分布式定时任务的基础以及austin项目接入分布式定时任务的背景。有几个同学表示之前没接触过分布式定时任务,想让我来austin的相关逻辑,于是就有了这篇文章。01、使用定时任务推送消息对于austin消息推送平台而言,发送消息不单单是「技术侧」调用接口进行发送的,还有很多场景是「运营侧」通过设置定时进而推送。所以,作为使用消息推转载 2022-03-02 22:38:03 · 1869 阅读 · 0 评论 -
实现延时消息的6种方案
延时消息(定时消息)指的在分布式异步消息场景下,生产端发送一条消息,希望在指定延时或者指定时间点被消费端消费到,而不是立刻被消费。延时消息适用的业务场景非常的广泛,在分布式系统环境下,延时消息的功能一般会在下沉到中间件层,通常是 MQ 中内置这个功能或者内聚成一个公共基础服务。本文旨在探讨常见延时消息的实现方案以及方案设计的优缺点。实现方案基于外部存储实现的方案这里讨论的外部存储指的是在 MQ 本身自带的存储以外又引入的其他的存储系统。基于外部存储的方案本质上都是一个套路,将 M转载 2022-03-02 22:36:47 · 2119 阅读 · 0 评论 -
消息队列选型全方位对比
导语|消息队列是分布式系统中重要的中间件,在高性能、高可用、低耦合等系统架构中扮演着重要作用。本文对Kafka、Pulsar、RocketMQ、RabbitMQ、NSQ这几个消息队列组件进行了一些调研,并整理了相关资料,为业务对MQ中间件选型提供参考。一、概述消息队列是分布式系统中重要的中间件,在高性能、高可用、低耦合等系统架构中扮演着重要作用。分布式系统可以借助消息队列的能力,轻松实现以下功能: 解耦,将一个流程的上游和下游拆开,上游专注生产消息,下游专注处理消息。 ..转载 2022-03-02 22:33:32 · 552 阅读 · 0 评论 -
使用MQ的时候,怎么确保消息100%不丢失?
面试官在面试候选人时,如果发现候选人的简历中写了在项目中使用了 MQ 技术(如 Kafka、RabbitMQ、RocketMQ),基本都会抛出一个问题:在使用 MQ 的时候,怎么确保消息 100% 不丢失?这个问题在实际工作中很常见,既能考察候选者对于 MQ 中间件技术的掌握程度,又能很好地区分候选人的能力水平。接下来,我们就从这个问题出发,探讨你应该掌握的基础知识和答题思路,以及延伸的面试考点。案例背景以京东系统为例,用户在购买商品时,通常会选择用京豆抵扣一部分的金额,在这个过程中,交易服转载 2022-03-02 22:32:00 · 246 阅读 · 0 评论 -
一口气说出 6 种实现延时消息的方案
延时消息(定时消息)指的在分布式异步消息场景下,生产端发送一条消息,希望在指定延时或者指定时间点被消费端消费到,而不是立刻被消费。延时消息适用的业务场景非常的广泛,在分布式系统环境下,延时消息的功能一般会在下沉到中间件层,通常是 MQ 中内置这个功能或者内聚成一个公共基础服务。本文旨在探讨常见延时消息的实现方案以及方案设计的优缺点。实现方案基于外部存储实现的方案这里讨论的外部存储指的是在 MQ 本身自带的存储以外又引入的其他的存储系统。基于外部存储的方案本质上都是一个套路,将 M转载 2022-02-23 11:54:31 · 186 阅读 · 0 评论 -
消息队列经典十连问
前言大家好呀,我是捡田螺的小男孩。金三银四即将来临,整理了十道十分经典的消息队列面试题,看完肯定对面试有帮助的,大家一起加油哈~ 什么是消息队列 消息队列的应用场景 消息队列如何解决消息丢失问题 消息队列如何保证消息的顺序性。 消息有可能发生重复消费吗?如何幂等处理? 如何处理消息队列的消息积压问题 消息队列技术选型,Kafka还是RocketMQ,还是RabbitMQ 消息中间件如何做到高可用? 如何保证数据一致性,转载 2022-02-22 23:25:36 · 169 阅读 · 0 评论