![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
消息队列
东境物语
这个作者很懒,什么都没留下…
展开
-
如何保证消息的顺序性
如何保证消息的顺序性?其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题。剖析我举个例子,我们以前做过一个 mysql binlog 同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql -> mysql)。常见...转载 2019-08-08 19:01:54 · 241 阅读 · 0 评论 -
RabbitMQ脑裂问题
脑裂问题RabbitMQ集群的网络分区容错性并不高,在网络质量较差的环境中会比较容易出现问题,其中最明显的就是脑裂问题所谓的脑裂问题,就是在多机热备的高可用HA系统中,当两个节点心跳突然断开,就分裂为了两个独立的个体,由于互相失去联系,都认为对方出现了故障,因此都会去争抢对方的资源,争抢启动,由此就会发生严重的后果举个形象的例子,A和B作为一个双机热备集群的两个节点,各...转载 2019-09-19 17:59:00 · 3474 阅读 · 0 评论 -
RabbitMQ分布式集群架构
RabbitMQ分布式集群架构和高可用性(HA)(一) 功能和原理设计集群的目的允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量1 集群配置方式RabbitMQ可以通过三种方法来部署分布式集群系统,分别是:cluster,federation,shovel cluster: 不支持跨网段,用于同一个网段内的局域网...转载 2018-03-28 11:30:15 · 351 阅读 · 0 评论 -
记一次kafka数据丢失问题的排查
数据丢失为大事,针对数据丢失的问题我们排查结果如下。第一:是否存在数据丢失的问题?存在,且已重现。第二:是在什么地方丢失的数据,是否是YDB的问题?数据丢失是在导入阶段,数据并没有写入到Kafka里面,所以YDB也就不会从Kafka里面消费到缺失的数据,数据丢失与延云YDB无关。第三:是如何发现有数据丢失?1.测试数据会一共创建365个分区,每个分区均是9亿...转载 2019-09-18 15:02:29 · 903 阅读 · 1 评论 -
Canal( 增量数据订阅与消费 )的理解
背景早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分版本的日志解析...转载 2018-10-29 11:36:12 · 4617 阅读 · 0 评论 -
RabbitMQ基础知识
RabbitMQ基础知识一、背景 RabbitMQ是使用erlang开发的开源消息队列,通过erlang的Actor模型实现了数据的稳定可靠传输,支持AMQP、XMQP、SMTP等多种协议,因此也比较重量级。由于采用broker代理架构,发送给客户端时,先在阻塞队列进行排队,rabbitMQ的单机吞吐量在万级。 RabbitMQ的官网是http://www.rabbitm...原创 2018-12-24 16:07:05 · 205 阅读 · 0 评论 -
如何保证消息队列的高可用
RabbitMQ 的高可用性RabbitMQ 是比较有代表性的,因为是基于主从(非分布式)做高可用性的,我们就以 RabbitMQ 为例子讲解第一种 MQ 的高可用性怎么实现。RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式。单机模式单机模式,就是 Demo 级别的,一般就是你本地启动了玩玩儿的,没人生产用单机模式。普通集群模式(无高可用性)普通集群模式,...转载 2019-08-09 11:41:14 · 161 阅读 · 0 评论 -
消息队列MQ选型 - Kafka、RabbitMQ对比
适应场景异步处理,应用解耦,流量削锋和消息通讯RabbitMQ:使用erlang开发的开源消息队列,通过erlang的actor模型实现了数据的稳定可靠传输,支持AMQP、XMQP、SMTP等多种协议,因此也比较重量级。由于采用broker代理架构,发送给客户端时,先在阻塞队列进行排队,rabbitMQ的单机吞吐量在万级。kafka:由scala开发的高性能、跨语言、分布式消息队列,单...转载 2019-08-09 09:46:20 · 569 阅读 · 0 评论 -
RabbitMQ 消费端限流、TTL、死信队列
目录消费端限流 1. 为什么要对消费端限流 2.限流的 api 讲解 3.如何对消费端进行限流 TTL 1.消息的 TTL 2.队列的 TTL 死信队列 实现死信队列步骤 总结 消费端限流1. 为什么要对消费端限流假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费者客户端,会出现这样情况: 巨量的消...转载 2019-07-03 22:03:49 · 461 阅读 · 0 评论 -
RabbitMQ 延迟队列,消息延迟推送
目录应用场景 消息延迟推送的实现 测试结果应用场景目前常见的应用软件都有消息的延迟推送的影子,应用也极为广泛,例如:淘宝七天自动确认收货。在我们签收商品后,物流系统会在七天后延时发送一个消息给支付系统,通知支付系统将款打给商家,这个过程持续七天,就是使用了消息中间件的延迟推送功能。 12306 购票支付确认页面。我们在选好票点击确定跳转的页面中往往都会有倒计时,代表着 30 分...转载 2019-07-03 22:01:53 · 1049 阅读 · 0 评论 -
使用RabbitMQ实现延迟任务
场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时。场景二:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单、库存回滚。上述类似的需求是我们经常会遇见的问题。最常用的方法是定期轮训数据库,设置状态。在数据量小的时候并没有什么大的问题,但是数据量一大轮训数据库的方式就会变得特别耗资源。当面对千万级、上亿级数据量时,本身写入的IO就比较高,导致长...转载 2019-04-29 10:06:06 · 456 阅读 · 0 评论 -
RabbitMQ任务分发机制
Round-robin(轮询分发)使用任务队列的优点之一就是可以轻易的并行工作。如果我们积压了好多工作,我们可以通过增加工作者(消费者)来解决这一问题,使得系统的伸缩性更加容易。修改一下NewTask,使用for循环模拟多次发送消息的过程:for (int i = 0; i < 5; i++) { // 发送的消息 String message = "Hello World...转载 2019-06-29 12:15:10 · 1180 阅读 · 1 评论 -
RabbitMQ从入门到精通---ACK机制
首先需要思考一个问题:我们为什么要MQ?通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。 MQ提供松耦合的应用架构。Consumer可能需要一段时间才能处理完收到的数据。如果在这个过程中,Consumer出错了,异常退出了,而数据还没有处理完成,这段数据就丢失了。如果我们采用no-ack的方式进行确认,也就是说,每次Consumer接到数据后,而不管是否处理完成,Rabb...转载 2018-12-24 16:45:51 · 4025 阅读 · 0 评论 -
kafka顺序消息
顺序消息包括以下两方面:全局顺序 局部顺序全局顺序全局顺序就目前的应用范围来讲,可以列举出来的也就限于binlog日志传输,如mysql binlog日志传输要求全局的顺序,不能有任何的乱序。这种的解决办法通常是最为保守的方式:全局使用一个生产者 全局使用一个消费者(并严格到一个消费线程) 全局使用一个分区(当然不同的表可以使用不同的分区或者topic实现隔离与扩展)局部顺序...转载 2019-06-24 18:06:21 · 475 阅读 · 0 评论 -
RabbitMQ简介
前言:MQ是什么?队列是什么,MQ我们可以理解为消息队列,队列我们可以理解为管道。以管道的方式做消息传递。场景: 1.其实我们在双11的时候,当我们凌晨大量的秒杀和抢购商品,然后去结算的时候,就会发现,界面会提醒我们,让我们稍等,以及一些友好的图片文字提醒。而不是像前几年的时代,动不动就页面卡死,报错等来呈现给用户。 在这业务场景中,我们就可以采用队列的机制...转载 2019-05-07 19:01:55 · 202 阅读 · 0 评论 -
RabbitMQ和kafka从几个角度简单的对比
业界对于消息的传递有多种方案和产品,本文就比较有代表性的两个MQ(rabbitMQ,kafka)进行阐述和做简单的对比,在应用场景方面,RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上。1)在架...转载 2019-04-16 19:02:09 · 206 阅读 · 0 评论 -
RabbitMQ—消息确认机制(AMQP事务)
我们知道可以通过持久化(交换机、队列和消息持久化)来保障我们在服务器崩溃时,重启服务器消息数据不会丢失。但是我们无法确认当消息的发布者在将消息发送出去之后,消息到底有没有正确到达Broker代理服务器呢?如果不进行特殊配置的话,默认情况下发布操作是不会返回任何信息给生产者的,也就是默认情况下我们的生产者是不知道消息有没有正确到达Broker的。如果在消息到达Broker之前已经丢失的话,持久化操作...转载 2018-12-27 17:33:47 · 1553 阅读 · 0 评论 -
RabbitMQ的四种ExChange
在message到达Exchange后,Exchange会根据route规则进入对应的Queue中,message可能进入一个Queue也可能进入对应多个Queue,至于进入哪个Queue或者是说哪个Queue都不进入,这要依据ExChange的ExchangeType和Exchange所绑定的路由规则,实现AMQP0.9.1协议的RabbitMQ Broker提供了四种ExChangeType。...转载 2018-12-21 15:24:48 · 1351 阅读 · 0 评论 -
kafka的consumer消费能力很低的情况下的处理方案
简介由于项目中需要使用kafka作为消息队列,并且项目是基于spring-boot来进行构建的,所以项目采用了spring-kafka作为原生kafka的一个扩展库进行使用。先说明一下版本:spring-boot 的版本是1.4.0.RELEASEkafka 的版本是0.9.0.x 版本spring-kafka 的版本是1.0.3.RELEASE用过kafka的人都知道,对于使用k转载 2018-02-06 17:35:32 · 7131 阅读 · 1 评论 -
kafka重复消费问题
问题描述 采用kafka读取消息进行处理时,consumer会重复读取afka队列中的数据。问题原因 kafka的consumer消费数据时首先会从broker里读取一批消息数据进行处理,处理完成后再提交offset。而我们项目中的consumer消费能力比较低,导致取出的一批数据在session.timeout.ms时间内没有处理完成,自动提交offset失败,然后kafka会重转载 2018-02-06 17:28:08 · 1499 阅读 · 0 评论 -
kafka安装
Step 1: 下载代码http://kafka.apache.org/downloads.html0.10.0.0是最新版本。 当前的稳定版本是0.10.0.0。下载0.10.0.0版本并且解压它。> tar -zxvf kafka_2.10-0.10.0.0.tgz > cd kafka_2.11-0.10.0.0Step 2: 启动服务运行k原创 2018-02-05 17:37:16 · 193 阅读 · 0 评论 -
kafka web console监控软件的安装
1、安装kafka web console软件前先安装sbt(安装步骤:http://blog.csdn.net/wwd0501/article/details/79267672)2、我们从https://github.com/claudemamo/kafka-web-console上面将源码下载下来,并执行命令解压: unzip kafka-web-console-master.zi原创 2018-02-06 10:24:37 · 927 阅读 · 0 评论 -
Kafka简介
概述Kafka是Apache软件基金会旗下的子项目,是一个分布式的消息系统,它用简洁的设计实现了一个消息系统的功能。首先,回顾一下消息系统的基本语义: - Kafka中消息的载体是一个主题(Topic) - 向Topic中发布消息的程序是消息生产者(Producer) - 从Topic中消费消息的程序是消费者(Consumer)生产者-Kafka集群(Topic转载 2018-02-05 14:36:55 · 218 阅读 · 0 评论 -
大型网站架构系列:分布式消息队列
以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。本次分享大纲消息队列概述消息队列应用场景消息中间件示例JMS消息服务常用消息队列参考(推荐)资料本次分享总结一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式转载 2016-05-27 18:40:00 · 1002 阅读 · 0 评论 -
快速理解Kafka分布式消息队列框架
简单的说,Kafka是由Linkedin开发的一个分布式的消息队列系统(Message Queue) 目标Scope(解决什么问题) kafka开发的主要初衷目标是构建一个用来处理海量日志,用户行为和网站运营统计等的数据处理框架。在结合了数据挖掘,行为分析,运营监控等需求的情况下,需要能够满足各种实时在线和批量离线处理应用场合对低延迟和批量吞吐性能的要求。从需求转载 2016-05-27 18:38:09 · 581 阅读 · 0 评论