代码编织梦想

本文是最近看儒猿技术窝视频做的一些笔记

高可用

面试题:如何保证消息队列的高可用?

RabbitMQ的高可用

RabbitMQ有三种模式:单机模式、普通集群模式、镜像集群模式。
在这里插入图片描述
在这里插入图片描述

kafka的高可用

在这里插入图片描述

消息重复

面试题:如何保证消息不被重复消费(如何保证消息消费时的幂等性)?
在这里插入图片描述
在这里插入图片描述

消息丢失

面试题:如何保证消息的可靠性传输(如何处理消费丢失的问题)?

在这里插入图片描述

消息顺序错乱

面试题:如何保证消息的顺序性?

rabbitMQ的消息错乱

在这里插入图片描述

在这里插入图片描述

kafka的消息错乱

在这里插入图片描述
在这里插入图片描述

消息积压

面试题:如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百完消息持续积压几小时,说说怎么解决?
在这里插入图片描述

像这种情况,只能操作临时紧急扩容了,具体操作步骤和思路如下:

(1)先修复consumer的问题,确保其恢复消费速度,然后将现有consumer都停掉

(2)新建一个topic,partition是原来的10倍,临时建立好原先10倍或者20倍的queue数量

(3)然后写一个临时的分发数据的consumer程序,这个程序部署上去消费积压的数据,消费者之后不做耗时的处理,直接均匀轮询写入临时建立好的10倍数量的queue

(4)接着临时征用10倍的机器来部署consumer,每一批consumer消费一个临时queue的数据

(5)这种做法相当于是临时将queue资源和consumer资源扩大10倍,以正常的10倍速度来消费数据

(6)等快速消费完积压数据之后,得恢复原先部署架构,重新用原先的consumer机器来消费数据



如果想要详细了解的话,我觉得可以看石杉老师讲解的视频,真心不错。
附上链接:儒猿技术窝 | Java工程师面试突击第一季【免费】

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_43771998/article/details/111084654

通过RabbitMQ实现邮箱的发送订阅功能-爱代码爱编程

邮件配置准备工作 配置邮件服务 #配置邮件 spring.mail.host=smtp.qq.com spring.mail.username = 1261349543@qq.com spring.mail.password = 授权码 spring.mail.port = 587 spring.mail.default-encoding=UTF-8

RabbitMQ 消费者回执和发布确认-爱代码爱编程

为了保证数据安全,消费者和生产者的回执(ack)都是非常重要的。 由于我们无法保证消息都能像我们期望的那样,正常到达另一端或者被 Consumer 消费成功。因此,publisher 和 consumer 都需要一种机制,来确保消息投递成功了和消息消费成功了。 在 AMQP 0-9-1 中,消费者处理完消息后返回 acknowledgement,被称为

美团十年架构师精心分享:手写分布式消息中间件RocketMQ笔记-爱代码爱编程

RocketMQ作为一款高可靠、低延迟、高并发、支持海量Topic的分布式消息中间件,服务于阿里巴巴、VIPKID、 滴滴出行、微众银行、华为等国内各大企业。在阿里巴巴内的业务涵盖了阿里巴巴全部的业务,也是双11的核心链路支撑者之一。笔者所在公司选择它,也是由于RocketMQ具有高可靠、吞吐高的特点。 本篇介绍了RocketMQ的基本使用方法

解决org.springframework.amqp.AmqpIOException: java.io.IOException错误-爱代码爱编程

今天安装好rabiitmq,创建了一个队列,进行测试发现报这个错误 Caused by: org.springframework.amqp.AmqpIOException: java.io.IOException at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.c

RabbitMQ安装(Windows)-爱代码爱编程

RabbitMQ安装(Windows) RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。 下载Erlang和RabbitMQ安装包:ErlangOTP_win64

centos7 安装rabbitmq-爱代码爱编程

1、检查是否已安装 2、下载erlang wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm 3、安装erlang依赖 rpm -Uvh erlang-solutions-1.0-1.noarch.rpm 检测到需要release 安装re

windows上安装zookeeper、kafka (问题汇总)-爱代码爱编程

windows上安装zookeeper、kafka (问题汇总) Yi. Zookeeper启动时端口被占用Er. Kfaka启动报错San. 解决启动zookeeper时Could not find or Load main class org.apache.zookeeper.server.quorum. QuorumPeerMain的报错

kafka原理解析之-消息交付语义-爱代码爱编程

消息交付语义 kafka消息交付语义假设存在完美无缺的 broker, 从producer 和 consumer 角度讨论数据保证机制,主要表现重试生产消息或重新消费消息(可能是不同的消费实例)时的情况。 Kafka提供了三种消息交付语义,如下。 At most once——消息可能会丢失但绝不重传。At least once——消息可以重传但绝不丢

Kafka 使用java api从指定位移消费 (从开头消费/从结尾消费)-爱代码爱编程

一、auto.offset.reset值详解 在 Kafka 中,每当消费者组内的消费者查找不到所记录的消费位移或发生位移越界时,就会根据消费者客户端参数 auto.offset.reset 的配置来决定从何处开始进行消费,这个参数的默认值为 “latest” 。 auto.offset.reset 的值可以为 earliest、latest 和 no

Zookeeper、Kafka集群一键启动、关闭,脚本编写-爱代码爱编程

Zookeeper集群一键启动 在 /usr/local/bin目录下创建脚本 zk #!/bin/sh case $1 in "start"){ for i in centos3 centos4 centos5 do echo "********$i --> zkServer.sh start **********" ssh $

Kafka Producer-爱代码爱编程

为了备战四级,这段时间就没有写博客,今天考完,废话不多说,来一篇 下图为Kafka发送消息的主要步骤: 步骤1: 我们首先创建一个ProducerRecord对象,从上图可以看出,里面包含着发送的目标主题,分区,键,值,Partition和key可以不指定,但是Topic和Value必须指定。在发送ProducerRecord对象时,

Flink connector学习笔记总结-爱代码爱编程

目录   1. 概述 2. Flink预定义的source和sink 2.1 基于文件的source/sink 2.2 基于Socket的Source和Sink 2.3 基于内存Collections、Iterators的Source 3. Bundled Connectors 4. Apache Bahir 5. Async I/O