Kafka 在 Linux 下的集群配置和安装
Kafka 在 Linux 下的集群配置和安装
Apache Kafka 是一个流行的分布式流处理平台,广泛用于实时数据管道和流处理应用。本文将详细讲解如何在 Linux 环境中配置和安装 Kafka 集群,并包括通过 Docker 安装和配置 Kafka 的步骤。每个步骤都将提供详细的解释,力求帮助读者深入理解。
1. 环境准备
在开始之前,请确保您的 Linux 系统满足以下要求:
- 操作系统:推荐使用 Ubuntu 20.04 或 CentOS 7/8。
- Java:Kafka 需要 Java 8 或更高版本。
- Zookeeper:Kafka 使用 Zookeeper 来管理集群。
1.1 安装 Java
首先,确保安装了 Java。如果尚未安装,可以使用以下命令进行安装。
对于 Ubuntu:
sudo apt update
sudo apt install openjdk-11-jdk -y
对于 CentOS:
sudo yum install java-11-openjdk-devel -y
验证安装:
java -version
1.2 安装 Zookeeper
Kafka 需要 Zookeeper 来管理集群。您可以选择单独安装 Zookeeper,或让 Kafka 自带的 Zookeeper 实例运行。
使用单独的 Zookeeper 安装
-
下载 Zookeeper:
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
-
解压并移动到合适的目录:
tar -xzf apache-zookeeper-3.7.1-bin.tar.gz sudo mv apache-zookeeper-3.7.1-bin /opt/zookeeper
-
配置 Zookeeper: 创建一个配置文件
zoo.cfg
:sudo nano /opt/zookeeper/conf/zoo.cfg
添加以下内容:
tickTime=2000 # Zookeeper 心跳时间 dataDir=/opt/zookeeper/data # 数据存储目录 clientPort=2181 # 客户端连接 Zookeeper 的端口 maxClientCnxns=60 # 最大客户端连接数
-
创建数据目录:
sudo mkdir /opt/zookeeper/data
-
启动 Zookeeper:
/opt/zookeeper/bin/zkServer.sh start
验证 Zookeeper 是否启动成功:
/opt/zookeeper/bin/zkServer.sh status
2. Kafka 安装
-
下载 Kafka:
wget https://downloads.apache.org/kafka/3.1.0/kafka_2.12-3.1.0.tgz
-
解压并移动到合适的目录:
tar -xzf kafka_2.12-3.1.0.tgz sudo mv kafka_2.12-3.1.0 /opt/kafka
-
配置 Kafka: Kafka 的配置文件在
/opt/kafka/config/server.properties
中。打开该文件:sudo nano /opt/kafka/config/server.properties
修改以下配置项,并附上说明:
broker.id=0 # 每个 Broker 的唯一 ID,用于标识不同的 Broker listeners=PLAINTEXT://:9092 # Broker 监听的地址和端口 log.dirs=/opt/kafka/logs # Kafka 日志存储目录,存放消息的实际文件 zookeeper.connect=localhost:2181 # Zookeeper 地址,用于 Kafka 连接到 Zookeeper
-
创建 Kafka 日志目录:
sudo mkdir /opt/kafka/logs
-
启动 Kafka:
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
验证 Kafka 是否成功启动:
/opt/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181
3. Kafka 集群配置
在生产环境中,Kafka 通常运行在多台机器上。以下是如何配置 Kafka 集群的步骤:
3.1 多个 Broker 配置
假设我们要在三台机器上配置 Kafka 集群,分别为 Broker 1、Broker 2 和 Broker 3。
- Broker 1:
-
配置文件:
broker.id=0 listeners=PLAINTEXT://:9092 log.dirs=/opt/kafka/logs zookeeper.connect=localhost:2181
- Broker 2:
-
配置文件:
broker.id=1 listeners=PLAINTEXT://:9093 log.dirs=/opt/kafka/logs zookeeper.connect=localhost:2181
- Broker 3:
-
配置文件:
broker.id=2 listeners=PLAINTEXT://:9094 log.dirs=/opt/kafka/logs zookeeper.connect=localhost:2181
确保每个 Broker 的 broker.id
唯一,并且监听的端口不同。
-
启动每个 Broker:
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
4. 使用 Docker 安装和配置 Kafka
使用 Docker 可以简化 Kafka 和 Zookeeper 的安装与管理。以下是使用 Docker 安装 Kafka 的步骤:
4.1 安装 Docker 和 Docker Compose
-
安装 Docker: 对于 Ubuntu:
sudo apt update sudo apt install docker.io -y
对于 CentOS:
sudo yum install docker -y
-
安装 Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
4.2 创建 Docker Compose 配置
-
创建一个目录来存放 Docker Compose 文件:
mkdir kafka-docker cd kafka-docker
-
创建
docker-compose.yml
文件:version: '2' services:zookeeper:image: wurstmeister/zookeeper:3.4.6ports:- "2181:2181" # Zookeeper 端口映射kafka:image: wurstmeister/kafka:latestports:- "9092:9092" # Kafka 端口映射expose:- "9093"environment:KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9093,OUTSIDE://localhost:9092KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXTKAFKA_LISTENERS: INSIDE://0.0.0.0:9093,OUTSIDE://0.0.0.0:9092KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 # Zookeeper 连接配置depends_on:- zookeeper # Kafka 启动前依赖 Zookeeper
-
启动 Docker Compose:
sudo docker-compose up -d
-
验证 Kafka 是否成功启动:
sudo docker-compose logs kafka
5. 创建主题
无论是直接安装还是通过 Docker,创建主题的命令是相同的。
/opt/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 3
6. 生产者和消费者
6.1 启动生产者
您可以使用 Kafka 自带的命令行工具启动生产者:
/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
6.2 启动消费者
使用以下命令启动消费者以接收消息:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
7. 监控与管理
监控 Kafka 集群的健康状态是确保其高可用性和性能的关键。可以使用多种工具来实现这一目标,其中 Kafka Manager
和 Confluent Control Center
是最常用的选项。下面将详细介绍这两个工具的使用,包括安装、配置和具体案例。
7.1 Kafka Manager
概述: Kafka Manager 是一个开源工具,可以帮助用户监控和管理 Kafka 集群。它提供了直观的用户界面,允许用户查看集群状态、主题信息、消费者组等。
安装步骤:
-
下载 Kafka Manager:
wget https://github.com/yahoo/kafka-manager/releases/download/2.0.0/kafka-manager-2.0.0.zip unzip kafka-manager-2.0.0.zip cd kafka-manager-2.0.0
-
配置 Kafka Manager: 编辑
conf/application.conf
文件,配置 Kafka 集群的信息:kafka-manager.zkhosts="localhost:2181"
-
启动 Kafka Manager: 使用以下命令启动 Kafka Manager:
bin/kafka-manager
默认情况下,Kafka Manager 监听在 9000 端口。
-
访问 Kafka Manager: 在浏览器中访问
http://localhost:9000
,然后添加 Kafka 集群。
使用案例:
- 监控集群状态: 通过 Kafka Manager 的 UI,可以查看集群的健康状态,如 Broker 的在线/offline 状态、每个主题的分区情况、消费者组的 lag(延迟)。
- 处理分区再平衡: 如果某个 Broker 的负载过高,可以通过 Kafka Manager 的分区再平衡功能,将一些分区迁移到其他 Broker,以实现负载均衡。
7.2 Confluent Control Center
概述: Confluent Control Center 是 Confluent 提供的一个高级监控工具,适用于 Kafka 和相关组件。它提供了更加丰富的监控和管理功能,包括数据流监控、性能指标、流应用监控等。
安装步骤:
-
下载 Confluent Platform: 访问 Confluent 官网 下载最新版本的 Confluent Platform。
-
解压并配置:
tar -xzf confluent-<version>.tar.gz cd confluent-<version>
-
启动 Confluent Control Center: 编辑
etc/confluent-control-center/control-center.properties
文件,配置 Kafka 和 Schema Registry 的连接信息:bootstrap.servers=localhost:9092 confluent.control.center.schema.registry.url=http://localhost:8081
然后运行以下命令启动 Control Center:
bin/confluent start
-
访问 Confluent Control Center: 在浏览器中访问
http://localhost:9021
,即可看到控制中心的仪表盘。
使用案例:
- 实时监控: Control Center 提供实时的数据流监控功能,可以查看数据流的速率、延迟和消费者 lag 等重要指标。
- 性能调优: 通过监控数据,用户可以识别出性能瓶颈,并对生产者和消费者的配置进行优化,以提升整体性能。
- 报警设置: 可以设置报警规则,当某些关键指标(如消息延迟、处理速率等)超出预设范围时,系统会自动发送通知。
7.3 具体案例
假设你正在运行一个电商平台,使用 Kafka 作为消息队列。在高峰购物季节,你需要确保系统的稳定性和响应速度。
- 使用 Kafka Manager:
- 通过 Kafka Manager,你发现某个 Broker 的 CPU 使用率接近 100%,而其他 Broker 的负载较低。你决定将某些分区从负载过重的 Broker 迁移到其他 Broker。
- 使用 Confluent Control Center:
- 在 Confluent Control Center 中,监控到订单消息的处理延迟突然增加。你检查发现是某个消费者组的 lag 较高,通过性能监控工具分析,发现是由于处理逻辑中的一个性能瓶颈导致的。你及时调整了代码,降低了处理时间,最终将延迟恢复到正常水平。
通过以上监控工具的使用,能够帮助团队更快地识别问题、进行性能优化,确保 Kafka 集群的高效运行。
8. 故障排查
在 Kafka 集群的使用中,可能会遇到一些常见问题及其解决方案。以下是对每个问题的详细描述、解决方法以及具体案例,以帮助更好地理解和解决这些问题。
8.1 Zookeeper 不可用
-
问题描述:如果 Zookeeper 未启动,Kafka 将无法连接到 Zookeeper,导致 Broker 启动失败。在启动 Kafka 时,如果控制台输出类似于“Failed to connect to Zookeeper”的错误信息,则表示 Zookeeper 可能未运行。
-
解决方法:
-
检查 Zookeeper 状态:
/opt/zookeeper/bin/zkServer.sh status
如果输出为“Error contacting service. It is probably not running.”,则表示 Zookeeper 未运行。
-
启动 Zookeeper:
/opt/zookeeper/bin/zkServer.sh start
-
重新启动 Kafka Broker。
-
-
具体案例: 假设在启动 Kafka Broker 时出现了以下错误:
css复制代码[ERROR] Failed to connect to Zookeeper: localhost:2181
通过执行
zkServer.sh status
发现 Zookeeper 没有运行,启动 Zookeeper 后,Kafka Broker 成功启动。
8.2 Broker 启动失败
-
问题描述:Broker 启动时可能因为配置错误而失败,尤其是 Zookeeper 地址不正确。启动日志中通常会显示有关配置错误的提示。
-
解决方法:
-
查看 Broker 日志文件:
cat /opt/kafka/logs/server.log
检查是否有关于 Zookeeper 连接失败的错误信息。
-
检查配置文件
/opt/kafka/config/server.properties
中的 Zookeeper 地址:zookeeper.connect=localhost:2181 # 确保地址和端口正确
-
-
具体案例: 如果 Broker 启动时日志中显示:
[ERROR] Zookeeper is not available
通过检查 Zookeeper 的地址发现设置为
zookeeper.connect=127.0.0.1:2182
,修改为localhost:2181
并重启 Broker 后,问题解决。
8.3 消息丢失
-
问题描述:如果主题的副本因子设置不合理,可能会导致消息丢失,尤其是在 Broker 故障的情况下。如果 Broker 故障,而主题只在单个 Broker 上有副本,则会丢失该 Broker 上的消息。
-
解决方法:
-
确保主题的副本因子设置合理:
/opt/kafka/bin/kafka-topics.sh --describe --topic test-topic --bootstrap-server localhost:9092
检查输出中的
ReplicationFactor
是否大于1。 -
调整主题副本因子:
/opt/kafka/bin/kafka-topics.sh --alter --topic test-topic --partitions 3 --replication-factor 2 --bootstrap-server localhost:9092
-
确保 Producer 配置适当的
acks
策略:- 使用
acks=all
来确保消息被所有副本确认。
- 使用
-
-
具体案例: 如果在生产环境中遇到消息丢失,检查主题配置,发现副本因子为1。在增加副本因子到2后,再进行测试,发现消息成功写入,且在一个 Broker 故障的情况下仍然能正常读取。
8.4 网络问题
-
问题描述:在分布式环境中,网络故障可能导致消息未能发送或接收。常见的症状包括生产者发送消息后未能在消费者端接收。
-
解决方法:
-
检查 Broker 和 Zookeeper 之间的网络连接:
ping <broker-ip> # 检查 Broker 是否可达
-
确保防火墙规则允许 Kafka 和 Zookeeper 的端口(如 9092 和 2181):
sudo ufw allow 9092 sudo ufw allow 2181
-
使用工具如
telnet
或nc
测试端口连接:telnet localhost 9092
-
-
具体案例: 如果消费者无法接收到生产者发送的消息,检查网络配置,发现 Broker 所在机器的防火墙阻止了 9092 端口的流量。开放该端口后,消费者成功接收到了消息。
8.5 性能问题
- 问题描述:在高负载情况下,Kafka 可能会遇到消息延迟或处理速度慢的问题。这可能是由于 Broker 资源不足、网络瓶颈或不合理的配置导致的。
- 解决方法:
- 监控 Kafka 集群的性能指标,使用工具如
Kafka Manager
或JMX Exporter
。 - 增加 Broker 数量,分散负载:
- 添加新的 Broker 并更新 Zookeeper 配置。
- 优化生产者和消费者的配置:
- 增加批量发送大小(
batch.size
)和消息压缩(compression.type
)以提高吞吐量。 - 调整消费者的
max.poll.records
来控制每次处理的消息数量。
- 增加批量发送大小(
- 监控 Kafka 集群的性能指标,使用工具如
- 具体案例: 在高峰期发现消息处理延迟达到了几分钟,通过监控工具确认 CPU 和内存利用率接近上限。增加了两个新的 Broker,并调整了生产者的
batch.size
和linger.ms
配置后,延迟显著降低。
9. Kafka 与其他开源消息队列框架的区别
9.1 Kafka
优点:
- 高吞吐量:Kafka 设计用于处理大规模数据流,能以高吞吐量处理消息。
- 持久化与可靠性:Kafka 提供持久化存储,支持数据备份和容错机制,通过副本机制确保数据不丢失。
- 横向扩展:Kafka 支持简单的横向扩展,用户可以通过添加 Broker 来增加处理能力。
- 流处理能力:与 Kafka Streams 结合,Kafka 可以进行复杂的流处理操作。
缺点:
- 学习曲线:Kafka 的配置和使用相对复杂,对于新手来说,学习成本较高。
- 延迟:虽然吞吐量高,但在某些情况下,消息的处理延迟可能较高,尤其是在严格的顺序消费场景下。
使用场景:
- 实时数据处理与分析,例如日志收集、流数据处理。
- 需要高吞吐量和持久性的应用场景,如电商交易系统、监控系统。
9.2 RabbitMQ
优点:
- 易用性:RabbitMQ 提供友好的管理界面,易于配置和使用。
- 灵活的路由机制:支持多种消息传递协议和路由策略(如主题、队列、发布/订阅等)。
- 低延迟:在某些使用场景下,RabbitMQ 的消息传递延迟低于 Kafka。
缺点:
- 吞吐量限制:相比 Kafka,RabbitMQ 的吞吐量较低,可能在高并发情况下表现不佳。
- 复杂的持久化:RabbitMQ 的持久化配置较为复杂,不当配置可能导致数据丢失。
使用场景:
- 需要复杂路由和优先级队列的场景,如任务调度、即时消息传递。
- 适合小型应用或低延迟需求的实时系统。
9.3 ActiveMQ
优点:
- 支持多种协议:ActiveMQ 支持多种消息协议,如 JMS、AMQP、MQTT 等,兼容性强。
- 丰富的特性:提供消息分组、延迟队列等丰富功能,适合多样化需求。
缺点:
- 性能问题:在高负载场景下,ActiveMQ 的性能可能会下降,吞吐量不如 Kafka。
- 管理复杂:管理和配置较为复杂,特别是在集群环境中。
使用场景:
- 适合需要多种协议支持的企业级应用。
- 对于需要可靠性和消息传递顺序的场景。
10. 总结
本文详细介绍了在 Linux 环境中配置和安装 Kafka 集群的过程,包括每个配置项的说明和常见故障的排查方法。通过这些步骤,您可以轻松地构建一个可靠的 Kafka 集群,支持大规模数据流处理和实时数据传输。希望这篇文章能够帮助您顺利搭建和管理 Kafka 集群。
相关文章:

Kafka 在 Linux 下的集群配置和安装
Kafka 在 Linux 下的集群配置和安装 Apache Kafka 是一个流行的分布式流处理平台,广泛用于实时数据管道和流处理应用。本文将详细讲解如何在 Linux 环境中配置和安装 Kafka 集群,并包括通过 Docker 安装和配置 Kafka 的步骤。每个步骤都将提供详细的解释…...

Python--操作列表
1.for循环 1.1 for循环的基本语法 for variable in iterable: # 执行循环体 # 这里可以是任何有效的Python代码块这里的variable是一个变量名,用于在每次循环迭代时临时存储iterable中的下一个元素。 iterable是一个可迭代对象,比如列表(…...

JMeter(需要补充请在留言区发给我,谢谢)
一、学习工具 1、CinfigElement(HTTP Request Defaults、HTTP Header Manager、HTTP Authorization、CSV Data Set Config、User Defined Variables、JDBC Connection Configuration、HTTP Cookie Manager、Random Variable) 二、协议 1、HTTP协议(消息体数据&am…...

线程池的执行流程和配置参数总结
一、线程池的执行流程总结 提交线程任务;如果线程池中存在空闲线程,则分配一个空闲线程给任务,执行线程任务;线程池中不存在空闲线程,则线程池会判断当前线程数是否超过核心线程数(corePoolSize)…...

node-red-L3-重启指定端口的 node-red
重启指定端口 目的步骤查找正在运行的Node.js服务的进程ID(PID):停止Node.js服务:启动Node.js服务: 目的 重启指定端口的 node-red 步骤 在Linux系统中,如果你想要重启一个正在运行的Node.js服务&#x…...

(done) 使用泰勒展开证明欧拉公式
问问神奇的 GPT,how to prove euler formula? 一个答案如下:...

红队apt--邮件钓鱼
前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 免责声明: 本文仅供了解攻击方手法使用,切勿用于非授权情节 初步了解邮件基础 用途方面 这个我们应该比较熟悉,最常用于验证码接收,也有一些厂商会用这个来打广告,…...

十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式)
十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式) 文章目录 十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式)1. Spring Boot 配置 MyBatis 的详细步骤2. 最后: MyBatis 的官方文档:https://mybatis.p2hp.com/ 关于 MyBa…...

DNS协议解析
DNS协议解析 什么是DNS协议 IP地址:一长串唯一标识网络上的计算机的数字 域名:一串由点分割的字符串名字 网址包含了域名 DNS:域名解析协议 IP>域名 --反向解析 域名>IP --正向解析 域名 由ICANN管理,有级别…...

每日一题——第一百零八题
题目: 写几个函数, ①输入10个职工的姓名和职工号 ②按照职工号由小到大排列, 姓名顺序也随之调整 ③要求输入一个职工号, 用折半查找找出该职工的姓名 #include<stdio.h> #include<string.h> #define MAX_EMPOLYEES…...

使用Python免费将pdf转为docx
刚刚想将pdf转换为docx文档时,居然要收费 还好我学过编程,这不得露两手 将pdf 转换为 docx 文档 的操作步骤 我这里使用的是Python语言 (1)在终端上安装 pdf2docx 是一个 Python 库,它可以将 PDF 文件转换为 Word (…...

树莓派4B+UBUNTU20.04+静态ip+ssh配置
树莓派4B+UBUNTU20.04+静态ip+ssh配置 1.烧录Ubuntu镜像1.1选择pi 4b1.2选择ubuntu server (服务器版,无桌面)20.041.3选择sd卡1.4 点击右下角 NEXT ,编辑设置,输入密码,wifi选CN, 开启ssh1.5 烧录,依次点击“是”,等待完成2 烧录完成后装入树莓派,上电,等待系统完成配…...

C#实现指南:将文件夹与exe合并为一个exe
在软件开发过程中,有时需要将多个文件(如资源文件、配置文件等)与可执行文件(exe)打包在一起,以便于分发和部署。在C#中,我们可以利用ILMerge或Costura.Fody等工具来实现这一目标。本文将介绍如…...

linux信号 | 学习信号三步走 | 全解析信号的产生方式
前言:本节内容是信号, 主要讲解的是信号的产生。信号的产生是我们学习信号的第二个阶段。 我们已经学习过第一个阶段——信号的概念与预备知识(没有学过的友友可以查看我的前一篇文章)。 以及我们还没有学习信号的第三个阶段——信…...

C++ 刷题 使用到的一些有用的容器和函数
优先队列 c优先队列priority_queue(自定义比较函数)_c优先队列自定义比较-CSDN博客 373. 查找和最小的 K 对数字 - 力扣(LeetCode) 官方题解: class Solution { public:vector<vector<int>> kSmallestP…...

【Kubernetes】常见面试题汇总(三十四)
目录 86. K8s 每个 Pod 中有一个特殊的 Pause 容器能否去除,简述原因。 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 题目 69-113 属于【Kuberne…...

C++标准库双向链表 list 中的insert函数实现。
CPrimer中文版(第五版): //运行时错误:迭代器表示要拷贝的范围,不能指向与目的位置相同的容器 slist.insert(slist.begin(),slist.begin(),slist.end()); 如果我们传递给insert一对迭代器,它们不能…...

华为机考练习(golang)
输入 第一行输入一个正整数N,表示整数个数。(0<N<100000) 第二行输入N个整数,整数的取值范围为[-100,100]。 第三行输入一个正整数M,M代表窗口的大小,M<100000,且M<N。 输出 窗口…...

51单片机快速入门之按键应用拓展
51单片机快速入门之按键应用拓展 LED的点动控制: 循环检测,当key 为0 时 led 亮 反之为熄灭 while(1){ if(key!1) { led0; }else { led1; } } LED的锁定控制: 当按钮按下,led取反值 while(1) { if(key!1) { led!led; } } LED的4路抢答控制: bz默认为0 !bz 取反值,循环启动…...

数据库 - MySQL的事务
目录 前言 一、事务的特性 (一)原子性 (二)一致性 (三)隔离性 (四)持久性 二、事务的控制语句 三、事务隔离级别 (一)读未提交 (二&…...

【Python机器学习】NLP信息提取——提取人物/事物关系
目录 词性标注 实体名称标准化 实体关系标准化和提取 单词模式 文本分割 断句 断句的方式 使用正则表达式进行断句 词性标注 词性(POS)标注可以使用语言模型来完成,这个语言模型包含词及其所有可能词性组成的字典。然后,该…...

vector类
一、STL库 vector 1.1 vector的介绍 vector英文意思为向量:向量是表示大小可以改变的数组的序列容器。 指向其元素的常规指针上的偏移量来访问其元素,并且与数组中的效率一样高。但与数组不同,它们的大小可以动态变化,其存储由容…...

python常见的魔术方法
什么是魔术方法 Python类的内置方法,各自有各自的特殊功能,被称之为魔术方法 常见的魔术方法有以下: __init__:构造方法 __str__:字符串方法 __lt__:小于、大于符号比较 __le__:小于等于、大于等于符合比较 __eq__:等于符合比较__init__ c…...

自动化测试常用函数:弹窗、等待、导航、上传与参数设置
目录 一、弹窗 1. 警告弹窗确认弹窗 2. 提示弹窗 二、等待 1. 强制等待 2. 隐式等待 3. 显示等待 三、浏览器导航 1. 打开网站 2. 浏览器的前进、后退、刷新 四、文件上传 五、浏览器参数设置 1. 设置无头模式 2. 页面加载策略 一、弹窗 弹窗是在页面是找不到任何…...

【必看】2024国赛选题分布情况分析及数模国赛答辩指南~答辩不走弯路
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 紧张刺激的数模国赛已经过去一段时间,各赛区的成绩发布也在陆续进…...

微服务注册中⼼1
1. 微服务的注册中⼼ 注册中⼼可以说是微服务架构中的”通讯录“ ,它记录了服务和服务地址的映射关系。在分布式架构中, 服务会注册到这⾥,当服务需要调⽤其它服务时,就这⾥找到服务的地址,进⾏调⽤。 1.1 注册中⼼的…...

我设置了路由器自动切换ip,这会让我的账号登录地址经常改变吗
是的,路由器设置自动切换IP可能会导致你的账号登录地址经常改变。 这是因为当路由器切换IP时,外部网络所看到的你的设备IP地址也会随之改变。对于很多跨境电商、社交媒体或者银行账户等需要较高安全性的系统来说,经常变动的IP地址可能会被视…...

Nginx 限流实战教程和技巧
Nginx限流是一种重要的技术手段,用于保护服务器资源,防止因过度请求而导致的服务不可用。以下是一个详细的Nginx限流教程,包括限流原理、常用模块和配置示例。 一、Nginx限流原理 Nginx限流主要基于两种算法:漏桶算法和令牌桶算…...

AlphaFold3 | 详解 AlphaFold3 的模型结构及其在不同类型的预测实验中的表现
Jumper 本文将介绍 24 年 5 月发布的 Alaphafold3,其以“使用 AlphaFold 3 进行生物分子相互作用的精确结构预测”为标题发表在《nature》上,通讯作者为 Jumper。 Jumper 具有物理、化学、生物和计算方面的丰富背景。Jumper 本科学的是物理和数学&#…...

公交IC卡收单管理系统 多处 SQL注入致RCE漏洞复现
0x01 产品简介 公交IC卡收单管理系统是城市公共交通领域中不可或缺的一部分,它通过集成先进的集成电路技术(IC卡)实现了乘客便捷的支付方式,并有效提高了公共交通运营效率。系统集成了发卡、充值、消费、数据采集、查询和注销等多个功能模块,为公交公司和乘客提供了全面、…...