初学rabbitMQ及Kafka

在这里插入图片描述
左client 客户端 生产者
broker 中转站
右client 客户端 消费者

exchange 交换机(快递员) 和 queue 队列(邮箱) 直接进行绑定

如果有个订单业务,用户下完单后就要发短信,
传统的实现方式都是给mysql,mysql插入数据,之后发短信,再取数据发送,但这里就比较耗时,也耗数据库的性能。
怎么优化呢?做拆分,异步任务
往mysql插入数据成功后,向rabbitMQ 插入数据,
如果发短信的话,rabbitMQ去发短信就好了

在这里插入图片描述

RabbitMQ的使用场景? (很多设计思想)

1.解耦 比如微服务中可以不同服务之间的消息通信

在这里插入图片描述

2.异步 将消息写入消息队列,非必要的业务逻辑以异步的方式运行。加快响应速度

3.削峰 并发量大的时候,所有请求直接到数据库,造成数据库连接异常

4.广播 基于Pub/Sub实现一对多通信

5.延迟信息处理 比如10分钟之后给下单未付款的用户发送邮件提醒 (TTL和死信队列)

TTL: 对于队列中超过该时间的消息将会被移除
死信队列这篇贼清晰

如何保证RabbitMQ不被重复消费? 幂等性问题

RabbitMQ有种机制,是当mq将信息给消费者,消费者消费完后,会向RabbitMQ回复已经ok(ps这个机制叫confirm机制),请删除这条数据,但是如果某种情况下,消费完后,没有收到回复,此时数据会再发给其他消费者,此时产生重复消费。用幂等性解决。

在这里插入图片描述

保证消息的唯一性,就算是多次传输,不要让消息的多次消费带来影响,保证消息幂等性。
mysql唯一键索引,或者主键。
比如 在写入消息队列的数据做唯一标识,消费消息时,根据唯一标识判断是否消费过。

解决幂等性问题!!!

如何保证RabbitMQ的高可用?

采用镜像集群

RabbitMQ如何保证消息的顺序性?

1.生产的消息,必须保证在投递到同一个队列,当消费者只有一个,防止多个消费者乱序

2.并且发送的时候,不要多线程 并发发送,要同步发送,防止多线程乱序发送

3.发送完后要采用confirm确认机制,确认发送成功了,才进行下一条发送。否则程序就执行中断进程,为了防止当前消息发送失败,然后下一条又开始发送并且发送成功。

RabbitMQ如何提高消息的消费速率?

1.增加消费者机器

2.优化代码,带宽等等

RabbitMQ有哪几种路由方式?

在这里插入图片描述

RabbitMQ 交换机与队列,队列与消费者的绑定关系是什么样的?多个消费者监听一个队列时,消息会重复消费吗?

在这里插入图片描述

RabbitMQ的vhost是什么? 起什么作用?

相当于mysql里面的数据库
在这里插入图片描述

RabbitMQ消息基于什么传输?

channel是在TCP之上的,一个TCP可以生成多个channel,channel是信道,TCP可以复用了
在这里插入图片描述

RabbitMQ 死信队列和延迟队列的使用?

消息被拒绝,并且requeue参数的值为false
消息过期了,
或者队列达到最长
在这里插入图片描述

使用消息队列会有什么缺点?

在这里插入图片描述

RabbitMQ多个消费者监听一个队列时,消息如何分发?

在这里插入图片描述
每次处理多少条,能力越大,处理的越多
qos

消息什么时候会变成死信?

在这里插入图片描述

RabbitMQ如何实现延时队列?

TTL (队列的消息存活时间或者消息存活时间)加上死信交换机
在这里插入图片描述

RabbitMQ的集群模式和集群节点类型?

在这里插入图片描述

如何自动删除长时间没有消费的消息

在这里插入图片描述

RabbitMQ集群怎么避免重启后消失丢失?

把消息持久化磁盘,保证服务器重启消息不丢失,每个集群中至少有一个物理磁盘,保证消息落入磁盘

RabbitMQ对集群节点停止顺序有要求么?

在这里插入图片描述
内存关机就会消失,磁盘里面是做持久化用的

RabbitMQ有哪些重要的组件?

在这里插入图片描述

消息的持久化是如何实现的?

在这里插入图片描述

如何保证消息不丢失

1生产者开启事务或者发送方确认机制 confirm
2设置持久化,
3.消费者开启消费确认机制 ack机制
在这里插入图片描述

RabbitMQ中的概念

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

RabbitMQ消息什么时候需要持久化?

官方介绍在两种情况下会消息写入磁盘
1.消息本身在于publish的时候就要求消息写入磁盘
2.内存紧张,需要将部分内存中的消息转移到磁盘

RabbitMQ消息什么时候会刷到磁盘?

在这里插入图片描述

如果让你写一个消息队列,该怎么进行架构设计?说一下你的思路

在这里插入图片描述
RabbitMQ是镜像集群,一个挂了,其他里面有同样的数据,而kafka则是有个分区的概念(多副本)

Kafka

在这里插入图片描述
消费者这里是4个
分为两个组,A组和B组
如果kafka发来消息,它会给每个组都会收到同一个消息,但是每个组里面有两个消费者,只会有一个会收到消息,不会重复消费一条。

消费者
1生产者往中间键推消息有一个ack机制(相当于RabbitMQ里面的confirm机制) 相当于确认机制
2还有个同步异步机制
同步推
在这里插入图片描述
异步推
在这里插入图片描述

partition 0 ,partition 1是分区,用来拓展用的
可以在别的服务器加分区,拓展性好,无限制的扩充。
依托磁盘 利用内存进行加速。

leader 分片和follower 副本
leader挂了之后,另一个服务的 副本就可以提升为分片。 一个leader两个follow

topic A 主题 类似rabbitmq的 队列
主题同时位于分区0,分区1上

主题可以存在多个分区。主题可以跨服务器和分区。分布式存储,不是单机存储。
一个主题可以无限扩充。

topic A 分区0 和1 存的数据是不一样的

同一个组的两个消费者,会接到不同服务器的不同分区的信息

zookeeper 保存的三台服务器的信息,以及分组数据,集群相关配置信息。
可以放到其他服务器。zookeeper也有leader和follow

kafka 中是怎么体现消息的顺序性的?

在这里插入图片描述
在这里插入图片描述
RabbitMQ 可靠 消费有ask 生成有confirm
kafka吞吐量大,生产有ask 消费是批量消费
用在日志收集
kafka 采用zookeeper对集群中的broker,consumer进行管理

rabbitMQ 是镜像模式

kafka可以通过增加分区进行扩展,而不需要通过添加额外的节点而在运行中造成任何停机

在这里插入图片描述

深度习是机器习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行习和模式识别。深度习模型能够习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医图像分析等应用至关重要。以下是深度习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mr.杰瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值