当前位置: 首页 > news >正文

凡网站建设/长尾关键词网站

凡网站建设,长尾关键词网站,网站定制联通卡,广州网站建设公司哪家比较好最近刷题,看到了有问中间件的题目,于是整理了一些中间件的知识,大多是在小破站上的笔记,仅供大家参考~ 主要分为七个部分来分享: 一、常见的中间件 二、什么是队列? 三、常见消息队列MQ的比较 四、队列…

最近刷题,看到了有问中间件的题目,于是整理了一些中间件的知识,大多是在小破站上的笔记,仅供大家参考~

主要分为七个部分来分享:

一、常见的中间件

二、什么是队列?

三、常见消息队列MQ的比较

四、队列的优点和缺点

五、消息队列的原理

六、为什么使用消息队列?

七、队列的测试点

八、高频软件测试面试题

一、常见的中间件

Redis:缓存中间价

MQ:消息队列中间件

Nginx:Web服务器中间件

二、什么是队列?

队列(Queue)是一种常见的数据结构,用于按照先进先出(FIFO,First In First Out)的原则管理元素。这意味着最先被添加到队列的元素将首先被移除。队列的操作通常包括两个主要动作:入队(Enqueue)和出队(Dequeue) 。

三、常见消息队列MQ的比较

ActiveMQ:比较老,一般不用了

RabbitMQ:大部分公司够用了,除非像阿里并发那么大的公司

RocketMQ:阿里在用的

Kafka:主要用于记录日志,例如淘宝的足迹功能

四、队列的优点和缺点

1、优点

解耦

异步

流量削峰填谷

2、缺点

用性低

复杂度

一致性问题(例如消息丢失,消息重复等等,导致两个系统数据不一致)

五、消息队列的原理

下面以用户下单这个场景为例,分享下整个过程:

一)生产者如何将消息可靠投递到消息队列(MQ):

  1. 客户端发送消息到消息队列MQ。
  2. 消息队列MQ将消息进行持久化,并向客户端发送 Ack 消息。由于网络问题可能导致 Ack 消息无法及时发送至客户端,因此客户端在等待一段超时时间后,会重新传送消息。
  3. 客户端在收到 Ack 消息后,确认消息已被成功投递。

二) 消息队列如何将消息可靠投递给消费者:

  1. 消息队列MQ将消息推送给客户端(或者客户端通过拉取方式获取消息)。
  2. 客户端接收并完成业务逻辑处理。
  3. 客户端向消息队列MQ发送 Ack 消息,通知消息队列删除该消息。由于网络问题可能导致 Ack 失败,客户端会收到重复的消息,从而引发了消费幂等性的问题。
  4. 消息队列删除已被成功消费的消息。

六、为什么使用消息队列?

主要用于解耦、异步、流量削峰填谷。

1、解耦

如果不加中间件MQ,订单系统直接调用库存系统,当库存系统出现故障时,用户就会下单失败。加了中间件之后,就不会出现下单失败了,用户下单之后,把订单id传给MQ,监控系统发现库存系统挂了之后,立马修复,最后还是可以下单成功。

2、异步

如果不加中间件MQ,下单的时候,订单系统会同步调用库存系统,有了MQ之后,下单后,订单系统只要把订单id传给MQ即可。

3、流量削峰填谷

例如B是订单系统,C是库存系统,C系统每分钟只能承受1W的并发,现在突然有30W的并发,那先把订单消息发送给MQ,C系统从MQ拉取信息,处理速度还是每分钟1W,最后花费30分钟来处理,用时间换空间。

七、队列的测试点

一)正向的业务逻辑测试

1、数据正确性

产者推送消息,消费者能正常消费信息,比如消息发送的字段以及接收的字段有无缺失,且保持一致

2、时序

不同时序推送消息,先后顺序是否与预期一致。

注意队列优先级,可使用事务解决

二)反向的异常测试

1、消息推送失败是否有重试

如因为网络原因导致的消息丢失,是否有补发和重试机制(用定时任务跑),通常情况下Produce会设置补发。

2、避免重复消息

例如生产者重复推送同一条数据,由于RocketMQ天生就有消息重复发送的机制,所以当产生消息重新发送时,如何对此问题进行处理?通常情况下要对消费端的服务做幂等处理,数据库里添加唯一索引,保证消息不被重复消费。

三)性能测试(消费积压)

主要就是通过性能测试,看看在高并发访问的情况下,系统正确处理消息的能力,是否会出现消息队列拥堵,宕机等情况。

解决消费积压的办法:

  1. 首先要快速解决消息积压问题,比如加大consumer消费数量,消费频次;
  2. 临时紧急扩容,比如临时征用10倍的机器来部署consumer程序,这个程序部署上去消费积压的数据,等快速消费完积压数据之后,得恢复原先部署架构,重新用原先的consumer机器来消费消息。

八、高频软件测试面试题

1、如何保证消息不丢失?

消息队列将收到的消息持久化到磁盘中,以保证消息队列异常或重启的情况下,消息不会丢失

2、消息队列的工作原理是什么?

生产者创建消息并将其发送到消息队列, 消费者从消息队列中接收消息,并异步地处理这些消息, 消费者在成功处理消息后向消息队列发送确认(Acknowledge)消息,通知队列可以删除已处理的消息。

相关文章:

常见的中间件--消息队列中间件测试点

最近刷题,看到了有问中间件的题目,于是整理了一些中间件的知识,大多是在小破站上的笔记,仅供大家参考~ 主要分为七个部分来分享: 一、常见的中间件 二、什么是队列? 三、常见消息队列MQ的比较 四、队列…...

【USRP】5G / 6G OAI 系统 5g / 6G OAI system

面向5G/6G科研应用 USRP专门用于5G/6G产品的原型开发与验证。该系统可以在实验室搭建一个真实的5G 网络,基于开源的代码,专为科研用户设计。 软件无线电架构,构建真实5G移动通信系统 X410 采用了目前流行的异构式系统,融合了FP…...

ubuntu20.04设置开机自启动jar(依赖其他服务)

目的: 有的时候我们的项目是部署在物理机上给其他公司员工使用,对于他们来说操作越简单越好。所以我需要实现将我的jar部署在ubuntu上,实现开机自启。(我的项目依赖emqx服务)。 步骤: 切换到system目录 …...

【GEE笔记】在线分类流程,标注样本点、分类和精度评价

GEE在线分类流程 介绍 GEE(Google Earth Engine)是一个强大的地理信息处理平台,可以实现在线的遥感影像分析和处理。本文将介绍如何使用GEE进行在线的分类流程,包括标注样本点、分类和精度评价。本文以2020年5月至8月的哨兵2影像…...

MATLAB基础运算

矩阵和数字相乘 就是矩阵里面每个元素跟这个数字乘一遍 矩阵和矩阵相乘 能不能相乘,需要前面矩阵的列数等于后面矩阵的行数,出来的矩阵大小是前面矩阵的行数*后面矩阵的列数。 所以大家会发现,矩阵相乘如果前后调转了,结果会完全…...

Linux DAC权限的简单应用

Linux的DAC(Discretionary Access Control)权限模型是一种常见的访问控制机制,它用于管理文件和目录的访问权限。作为一名经验丰富的Linux系统安全工程师,我会尽可能以简单明了的方式向计算机小白介绍Linux DAC权限模型。 在Linu…...

JVS低代码表单引擎:数据校验与处理的先锋

随着信息技术的迅速发展,数据校验与处理已经成为了各类应用中不可或缺的一环。尤其是在涉及敏感信息,如密码处理时,其安全性和准确性显得尤为重要。JVS低代码表单引擎提供了强大的文本组件触发逻辑校验功能,它能够在用户填写数据的…...

clickhouse删除partition分区数据

clickhouse分布式表tencent_table_20231208_DIST,本地表tencent_table_20231208_local; 30台clickhouse存储服务器; 本地表:tencent_table_20231208_local CREATE TABLE tencent_sz.tencent_table_20231208_local (id Int64 DEFA…...

持续集成交付CICD:CentOS 7 安装 Nexus 3.63

目录 一、实验 1.CentOS 7 安装Nexus3.63 二、问题 1.安装Nexus报错 2.Nexus启动停止相关命令 一、实验 1.CentOS 7 安装Nexus3.63 (1)当前操作系统版本&JDK版本 cat /etc/redhat-releasejava -version(2)下载Nexus新…...

Apache Flink(十):Flink集群基础环境搭建-JDK及MySQL搭建

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录...

LVS-DR+Keepalived+动静分离实验

架构图 解释一下架构,大概就是用Keepalived实现两台DR服务器的LVS负载均衡,然后后端服务器是两台Nginx服务器两台Tomcat服务器并且实现动静分离这个实验其实就是把 LVS-DRKeepalived 和 动静分离 给拼起来,真的是拼起来,两个部分…...

java面试题-Hashmap、Hashtable、ConcurrentHashMap原理

远离八股文,面试大白话,通俗且易懂 看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。 java面试题汇总-目录-持续更新中 Hashmap和hashtable存储…...

数据可视化:解锁企业经营的智慧之道

在现代企业管理中,数据可视化已经成为了一项重要的工具。它不仅仅是简单地展示数据,更是提供了深入理解数据、做出更明智决策的方法。作为一名可视化设计从业人员,我经手过一些企业自用的数据可视化项目,今天就来和大家聊聊数据可…...

JVM 性能调优

概述篇 面试题 讲讲你理解的性能评价及测试指标?(瓜子) 生产环境中的问题 生产环境发生了内存溢出该如何处理?生产环境应该给服务器分配多少内存合适?如何对垃圾回收器的性能进行调优?生产环境CPU负载飙高…...

linux常用命令-yum命令详解(超详细)

文章目录 前言一、yum命令介绍1. yum命令简介2. yum命令的基本语法3. 常用的yum命令选项4. 常用的yum命令参数 二、yum命令示例用法1. 安装软件包2. 更新软件包3. 删除软件包4. 搜索软件包5. 列出已安装的软件包6. 列出可用的软件包7. 清理缓存8. 禁用软件包仓库 总结 前言 yu…...

解决 Element-ui中 表格(Table)使用 v-if 条件切换后,表格的列的筛选不显示了

解决方法 在每个需要使用 v-if 或 v-else 的 el-table-column 上增加 key 作为唯一标识,这样渲染的时候就不会因为复用原则导致列数据混乱了。关于key值,一般习惯使用字段名,也可随机生成一个值,只要具有唯一性就可以。...

Navicat 技术指引 | 适用于 GaussDB 分布式的自动运行功能

Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…...

爬虫 selenium语法 (八)

目录 一、为什么使用selenium 二、selenium语法——元素定位 1.根据 id 找到对象 2.根据标签属性的属性值找到对象 3.根据Xpath语句获取对象 4.根据标签名获取对象 5.使用bs语法获取对象 6.通过链接文本获取对象 三、selenium语法——访问元素信息 1.获取属性的属性值…...

NTP时钟同步服务器(校时服务器)技术参数分享

NTP时钟同步服务器(校时服务器)技术参数分享 网络校时服务器是一款先进的智能化高精度时钟同步设备。 网络校时服务器从 GPS、北斗、GLONASS、Galileo等导航定位卫星系统上获取标准时间信息,并通过 NTP/SNTP 或其他网络协议,在网络…...

JDBC详解——增删改查(CRUD)、sql注入、事务、连接池

1. 概念: Java DataBase Connectivity, Java 数据库连接, Java语言操作数据库 JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口&…...

K-means算法通俗原理及Python与R语言的分别实现

K均值聚类方法是一种划分聚类方法,它是将数据分成互不相交的K类。K均值法先指定聚类数,目标是使每个数据到数据点所属聚类中心的总距离变异平方和最小,规定聚类中心时则是以该类数据点的平均值作为聚类中心。 01K均值法原理与步骤 对于有N个…...

使用 db2diag 工具来分析 db2diag 日志文件

供数据库和系统管理员使用的主日志文件为管理通知日志。db2diag 日志文件旨在供 IBM 软件支持机构用于进行故障诊断。 管理通知日志消息也以标准化消息格式记录到 db2diag 日志文件。 db2diag 工具用于对 db2diag 日志文件中的大量信息进行过滤和格式化。过滤 db2diag 日志文…...

在Pytorch中使用Tensorboard可视化训练过程

这篇是我对哔哩哔哩up主 霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享 本节课我们来讲一下如何在pytouch当中去使用我们的tensorboard 对我们的训练过程进行一个可视化 左边有一个visualizing models data and training with tensorboard 主要是这么一个教程 那么这里…...

Redis 命令全解析之 Hash类型

文章目录 ⛄介绍⛄命令⛄RedisTemplate API⛄应用场景 ⛄介绍 Hash类型,也叫散列,其value是一个无序字典,类似于Java中的 HashMap 结构。 String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便&#xf…...

postgresql数据库配置主从并配置ssl加密

1、先将postgresql数据库主从配置好 参考:postgresql主从配置 2、在主节点配置ssl加密,使用navicat测试是否可以连接 参考:postgresql配置ssl 3、正常连接无误后,将root.crt、server.crt、server.key复制到从数据库节点的存储…...

IO多路转接之select

IO多路转接之select 1. IO多路转接(复用)2. select2.1 函数原型2.2 细节描述 3. 并发处理3.1 处理流程3.2 通信代码 原文链接 1. IO多路转接(复用) IO多路转接也称为IO多路复用,它是一种网络通信的手段(机…...

linux如何删除大文件的第一行(sed)

可以用sed命令实现&#xff1a; 删除文档的第一行 1. sed -i 1d <file>删除文档的最后一行 1. sed -i $d <file>在文档指定行中增加一行 # 示例如下&#xff1a; echo "1"; echo "2"; echo "4"; echo "5"; # 想要在echo…...

Navicat 技术指引 | 适用于 GaussDB 分布式的备份/还原功能

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结…...

【广州华锐互动VRAR】VR戒毒科普宣传系统有效提高戒毒成功率

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐渗透到各个领域&#xff0c;为人们的生活带来了前所未有的便利。在教育科普领域&#xff0c;VR技术的应用也日益广泛&#xff0c;本文将详细介绍广州华锐互动开发的VR戒毒科普宣传系统&#xff0…...

守护安全,六氟化硫气体泄漏报警装置校准服务

在电力工业中&#xff0c;六氟化硫&#xff08;SF6&#xff09;气体是一种重要的介质&#xff0c;它用作封闭式中、高压开关的灭弧和绝缘气体。六氟化硫气体的卓越性能实现了装置经济化、低维护化的操作。与普通装置相比&#xff0c;可以节省最多90&#xff05;的空间。 六氟化…...