Kafka——关于主题管理

引言

在Kafka的世界中,主题(Topic)是消息的基本组织单位,类似于文件系统中的"文件夹"——所有消息都按照主题分类存储,生产者向主题写入消息,消费者从主题读取消息。主题的管理是Kafka运维的基础,直接影响集群的性能、可靠性与可维护性。

想象一个场景:某电商平台的Kafka集群中,"订单支付"主题因分区数不足导致消息积压,而"用户行为日志"主题因副本数过少在Broker宕机时丢失数据。这些问题的根源,往往是对主题管理的忽视。有效的主题管理不仅包括简单的"增删改查",还涉及分区规划、副本配置、内部主题维护等深层次操作。

主题日常管理:从创建到删除的全流程

主题的日常管理是Kafka运维的基础操作,包括创建、查询、修改和删除,这些操作看似简单,却暗藏诸多细节与最佳实践。

创建主题:基础命令与参数进化

创建主题是使用Kafka的第一步,Kafka提供kafka-topics.sh脚本完成这一操作。随着版本迭代,命令参数发生了重要变化,需特别注意。

基本创建命令

Kafka 2.2+版本推荐使用--bootstrap-server参数(替代旧版的--zookeeper),命令格式如下:

bin/kafka-topics.sh \--bootstrap-server broker_host:port \--create \--topic my_topic \--partitions 3 \--replication-factor 2
  • --partitions:指定主题的分区数(如3个分区)。

  • --replication-factor:指定每个分区的副本数(如2个副本,即每个分区在2台Broker上有备份)。

参数变迁:为什么推荐--bootstrap-server

在2.2版本之前,创建主题需通过--zookeeper指定ZooKeeper地址,但这一方式存在明显缺陷:

  1. 绕过安全认证:ZooKeeper级别的操作不受Kafka的ACL(访问控制列表)限制,即使配置了主题创建权限,通过--zookeeper仍可绕过限制,存在安全风险。

  2. 连接信息冗余:需同时维护ZooKeeper和Broker的连接信息,不符合Kafka逐步减少对ZooKeeper依赖的趋势。

因此,2.2+版本明确将--zookeeper标记为"过期",推荐统一使用--bootstrap-server与Broker交互,既符合安全规范,又简化了连接管理。

创建主题的最佳实践

  • 分区数规划:分区数决定了主题的并行处理能力,需根据预期吞吐量设置(如每分区支撑1000-2000条/秒,则10万条/秒的主题需50-100个分区)。

  • 副本数配置:副本数影响可靠性,生产环境建议至少3个(容忍2台Broker宕机),非核心主题可设为2个。

  • 避免过度创建:每个主题会占用Broker的磁盘、内存和网络资源,大规模集群建议主题总数不超过2000个。

查询主题:了解集群中的主题状态

查询是主题管理的常用操作,通过kafka-topics.sh--list--describe参数可获取主题的基本信息和详细配置。

列出所有主题

bin/kafka-topics.sh --bootstrap-server broker_host:port --list

该命令返回当前用户有权限查看的所有主题(受安全认证限制)。若使用--zookeeper,则返回集群中所有主题(绕过权限控制),不推荐使用。

查看主题详情

bin/kafka-topics.sh \--bootstrap-server broker_host:port \--describe \--topic my_topic

输出内容包括:

  • 主题名称、分区数、副本数。

  • 每个分区的领导者副本(Leader)、ISR集合(同步中的副本)、离线副本(OfflineReplicas)。

例如,某主题的描述可能如下:

Topic: my_topic PartitionCount: 3   ReplicationFactor: 2    Configs:Topic: my_topic Partition: 0    Leader: 1   Replicas: 1,2   Isr: 1,2Topic: my_topic Partition: 1    Leader: 2   Replicas: 2,0   Isr: 2,0Topic: my_topic Partition: 2    Leader: 0   Replicas: 0,1   Isr: 0,1

表示my_topic有3个分区,每个分区2个副本,所有副本均在ISR中(同步正常)。

查询的实用技巧

  • 省略--topic参数可查看所有主题的详情,但在大规模集群中会返回大量数据,建议结合grep过滤(如grep "Leader: -1"查找无领导者的分区)。

  • 通过详情可快速定位异常:若某分区的Isr数量小于ReplicationFactor,说明副本同步滞后;若Leader: -1,说明分区无领导者,无法提供服务。

修改主题:5类常见变更操作

Kafka支持对主题的多种修改,但并非所有属性都可变更(如分区数只能增加不能减少)。常见的修改操作包括5类,需分别使用不同的命令与参数。

1. 增加分区数

Kafka不支持减少分区(原因见下文"常见问题"),但可通过--alter参数增加分区:

bin/kafka-topics.sh \--bootstrap-server broker_host:port \--alter \--topic my_topic \--partitions 5  # 新分区数必须大于当前值

若指定的分区数小于等于当前值,会抛出InvalidPartitionsException异常。

注意:增加分区后,原有消息不会自动迁移到新分区,新消息会按分区策略(如Key哈希)分配到所有分区。

2. 修改主题级别参数

主题级参数(如max.message.bytes控制单条消息最大大小)可通过kafka-configs.sh修改,命令如下:

bin/kafka-configs.sh \--zookeeper zookeeper_host:port \  # 目前仍需ZooKeeper参数--entity-type topics \--entity-name my_topic \--alter \--add-config max.message.bytes=1048576  # 1MB
  • 主题级参数会覆盖Broker级默认配置(如broker.config中的max.message.bytes)。

  • 部分参数支持动态生效(无需重启Broker),如retention.ms(消息留存时间);部分需重启,如compression.type(压缩类型)。

3. 变更副本数

副本数可通过kafka-reassign-partitions.sh脚本增加(无法减少),步骤如下:

  1. 创建重分配计划JSON:定义每个分区的新副本分布(如将副本数从2增至3):

    {"version": 1,"partitions": [{"topic": "my_topic", "partition": 0, "replicas": [0,1,2]},{"topic": "my_topic", "partition": 1, "replicas": [1,2,0]},{"topic": "my_topic", "partition": 2, "replicas": [2,0,1]}]
    }

    保存为increase_replication.json

  2. 执行重分配

    bin/kafka-reassign-partitions.sh \--zookeeper zookeeper_host:port \--reassignment-json-file increase_replication.json \--execute
  3. 验证结果

    bin/kafka-reassign-partitions.sh \--zookeeper zookeeper_host:port \--reassignment-json-file increase_replication.json \--verify

注意:副本数最多等于集群中Broker的数量(如3个Broker最多支持3个副本)。

4. 修改主题限速

为避免副本同步占用过多带宽,可限制Leader与Follower的同步速率,步骤如下:

  1. 设置Broker级限速参数

    bin/kafka-configs.sh \--zookeeper zookeeper_host:port \--alter \--add-config 'leader.replication.throttled.rate=104857600,follower.replication.throttled.rate=104857600' \--entity-type brokers \--entity-name 0  # 对Broker 0生效,需为所有涉及的Broker执行

    上述命令限制速率为100MB/s(104857600字节/秒)。

  2. 为主题关联限速配置

    bin/kafka-configs.sh \--zookeeper zookeeper_host:port \--alter \--add-config 'leader.replication.throttled.replicas=*,follower.replication.throttled.replicas=*' \--entity-type topics \--entity-name my_topic

    *表示对该主题的所有副本限速。

5. 主题分区迁移

当Broker负载不均时,可迁移分区到其他Broker,步骤与增加副本数类似:

  1. 生成迁移计划(可选,也可手动编写):

    bin/kafka-reassign-partitions.sh \--zookeeper zookeeper_host:port \--generate \--topics-to-migrate-json-file topics.json \  # 待迁移的主题--broker-list 0,1,2  # 目标Broker列表
  2. 执行迁移:使用生成的计划JSON,执行--execute命令(同副本数变更)。

注意:迁移过程会消耗额外的网络和IO资源,建议在业务低峰期执行。

删除主题:异步操作与注意事项

删除主题的命令简单,但操作是异步的,需注意其背后的执行机制。

删除命令

bin/kafka-topics.sh \--bootstrap-server broker_host:port \--delete \--topic my_topic

执行后,主题会被标记为"待删除"状态,Kafka后台会异步执行删除:

  1. 控制器(Controller)向所有副本所在的Broker发送StopReplica请求,停止该主题的读写。

  2. Broker删除主题的分区目录(如/kafka-logs/my_topic-0)。

  3. 删除ZooKeeper中该主题的元数据(如/brokers/topics/my_topic)。

删除的常见问题

  • 删除缓慢:若主题数据量大,删除可能持续数分钟到数小时,需耐心等待。

  • 删除失败:常见原因包括副本所在Broker宕机、分区正在迁移等,需手动干预(见下文"常见错误处理")。

特殊主题管理:Kafka内部主题的运维

Kafka存在两个特殊的内部主题,分别用于存储消费者位移和事务元数据,它们的管理与普通主题不同,需特别关注。

消费者位移主题:__consumer_offsets

__consumer_offsets是Kafka自动创建的内部主题,用于存储消费者组的位移数据(即消费者已消费到的消息位置),其默认配置与运维细节如下。

默认配置

  • 分区数:50个(固定,无法修改)。

  • 副本数:由Broker参数offsets.topic.replication.factor控制(默认1,生产环境建议设为3)。

  • 数据清理:采用压缩策略(cleanup.policy=compact),只保留每个消费者组的最新位移。

副本数调整

旧版本Kafka(0.11之前)创建__consumer_offsets时,副本数取offsets.topic.replication.factor与当前Broker数的较小值(如100台Broker但参数设为3,实际副本数仍为3)。但存在缺陷:若集群启动时只有1台Broker,即使后续扩容到100台,副本数仍为1,存在数据丢失风险。

0.11+版本修复了这一问题,严格遵循offsets.topic.replication.factor,若当前Broker数不足,会创建失败并抛异常。若需将副本数从1增至3,步骤如下:

  1. 创建重分配计划JSONincrease_offsets_replication.json):

    {"version": 1,"partitions": [{"topic": "__consumer_offsets", "partition": 0, "replicas": [0,1,2]},{"topic": "__consumer_offsets", "partition": 1, "replicas": [1,2,0]},...  // 需包含所有50个分区{"topic": "__consumer_offsets", "partition": 49, "replicas": [2,0,1]}]
    }
  2. 执行重分配

    bin/kafka-reassign-partitions.sh \--zookeeper zookeeper_host:port \--reassignment-json-file increase_offsets_replication.json \--execute

查看位移数据

通过kafka-console-consumer.sh可直接查看__consumer_offsets中的位移数据:

bin/kafka-console-consumer.sh \--bootstrap-server broker_host:port \--topic __consumer_offsets \--formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetMetadataFormatter" \--from-beginning

输出格式为[消费者组, 主题, 分区] -> 位移值,例如:

[my_group, my_topic, 0] -> OffsetAndMetadata{offset=100, metadata=}

事务主题:__transaction_state

__transaction_state是支持事务的内部主题(Kafka 0.11+引入),用于存储事务元数据(如事务ID、状态、涉及的分区等)。

特点与管理

  • 分区数:默认50个(固定)。

  • 副本数:由transaction.state.log.replication.factor控制(默认3)。

  • 运维建议:不建议手动修改,由Kafka自动管理。若需调整副本数,方法与__consumer_offsets类似。

查看事务数据

使用专用格式化器查看:

bin/kafka-console-consumer.sh \--bootstrap-server broker_host:port \--topic __transaction_state \--formatter "kafka.coordinator.transaction.TransactionLog\$TransactionLogMessageFormatter"

内部主题的运维原则

  1. 禁止手动创建:由Kafka自动创建,手动创建可能导致元数据不一致。

  2. 副本数配置:生产环境中__consumer_offsets__transaction_state的副本数均建议设为3,确保可靠性。

  3. 磁盘监控:内部主题可能占用大量磁盘空间(尤其是__consumer_offsets),需定期监控并设置合理的清理策略。

常见主题错误处理:从删除失败到磁盘占用异常

主题管理中可能遇到多种异常情况,掌握其处理方法是保障集群稳定的关键。

主题删除失败:手动干预步骤

删除主题后,若磁盘上的分区目录未被清除,或ZooKeeper中仍存在主题元数据,即为删除失败。常见原因包括:

  • 副本所在的Broker宕机,无法接收删除指令。

  • 主题分区正在迁移,与删除操作冲突。

处理步骤

  1. 删除ZooKeeper中的标记

    # 进入ZooKeeper命令行
    bin/zkCli.sh -server zookeeper_host:port
    # 删除待删除主题的节点
    rmr /admin/delete_topics/my_topic
  2. 手动删除磁盘目录: 在所有副本所在的Broker上,删除主题的分区目录:

    rm -rf /kafka-logs/my_topic-*  # 假设数据目录为/kafka-logs
  3. 刷新控制器缓存(可选): 若删除后控制器仍缓存该主题,可触发控制器重选举:

    # 在ZooKeeper中删除控制器节点
    rmr /controller

    此操作会导致所有分区重新选举Leader,可能短暂影响服务,需谨慎执行。

__consumer_offsets占用过多磁盘:日志清理故障排查

__consumer_offsets磁盘占用异常通常是因日志清理线程(kafka-log-cleaner-thread)挂死导致,处理步骤如下:

  1. 检查清理线程状态

    # 查找Kafka进程ID
    jps | grep Kafka
    # 查看线程状态
    jstack <kafka_pid> | grep "kafka-log-cleaner-thread"

    若未找到该线程,说明线程挂死。

  2. 重启Broker: 清理线程挂死通常需重启Broker恢复,重启前建议保留日志(logs/kafkaServer.out),便于排查根因(可能是Kafka Bug)。

  3. 预防措施

    • 定期监控__consumer_offsets的磁盘占用,设置告警阈值(如超过100GB)。

    • 升级Kafka到最新稳定版本,避免已知的清理线程相关Bug。

分区无领导者(Leader: -1):副本异常处理

主题分区的Leader: -1表示无可用领导者,无法提供服务,常见原因包括:

  • 所有副本所在的Broker宕机。

  • 副本数据损坏,无法成为Leader。

处理步骤

  1. 检查副本所在Broker状态: 通过jps或监控工具确认副本所在的Broker是否存活,若宕机,重启即可。

  2. 手动触发Leader选举: 若Broker存活但副本无法成为Leader,可执行Preferred领导者选举:

    # 创建选举计划JSON(election.json)
    {"version": 1,"partitions": [{"topic": "my_topic", "partition": 0}]
    }
    # 执行选举
    bin/kafka-preferred-replica-election.sh \--bootstrap-server broker_host:port \--path-to-json-file election.json
  3. 数据恢复: 若所有副本数据损坏,需删除分区目录并重启Broker,此时分区会从零开始接收消息(可能丢失数据)。

Kafka主题日常管理的"增删改查”

  • 增:Kafka提供了自带的kafka-topics脚本,用于帮助用户创建主题。
  • 删:命令并不复杂,关键是删除操作是异步的,执行完这条命令不代表主题立即就被删除了。
  • 改:修改主题分区;修改主题级别参数;变更副本数;修改主题限速;主题分区迁移。
  • 查:查询所有主题的列表;查询单个主题的详细数据。

特殊主题管理与运维

  • 主要是内部主题_consumer_offsets和_transac-tion_state。

常见主题错误

  • 主题删除失败。
  • consumer_offsets占用太多的磁盘。

主题管理的深层思考:为什么不支持减少分区?

Kafka不允许减少分区数,看似限制,实则是为了避免复杂的一致性问题,主要原因包括:

  1. 消息顺序性破坏: 分区是Kafka保证消息顺序的最小单位(同一分区内消息有序)。若减少分区,需将被删除分区的消息迁移到其他分区,破坏原有顺序,导致消费者可能收到乱序消息。

  2. 消费者位移混乱: 消费者位移与分区绑定(如[my_group, my_topic, 0] -> 100表示消费到分区0的位移100)。删除分区后,位移元数据需重新映射,可能导致位移错乱,引发重复消费或消息丢失。

  3. 实现复杂度高: 减少分区涉及数据迁移、元数据更新、消费者协调等一系列操作,容易引入Bug,且收益有限(分区数过多可通过新建主题并迁移消息替代)。

替代方案:若需减少有效分区,可创建新主题(分区数更少),通过消费者将旧主题消息迁移到新主题,完成后切换生产者到新主题。

总结

主题管理是Kafka运维的基石,贯穿集群的整个生命周期。通过本文的讲解,可总结出以下最佳实践:

  1. 创建阶段

    • 优先使用--bootstrap-server参数,遵循安全规范。

    • 合理规划分区数(根据吞吐量)和副本数(根据可靠性需求)。

  2. 日常维护

    • 定期查询主题详情,监控分区Leader、ISR状态。

    • 修改操作前备份元数据,避免误操作。

    • 内部主题__consumer_offsets__transaction_state的副本数设为3,确保可靠性。

  3. 故障处理

    • 主题删除失败时,按步骤手动清理元数据和磁盘目录。

    • 监控__consumer_offsets的磁盘占用,及时处理清理线程故障。

  4. 长期规划

    • 避免过度创建主题和分区,控制集群规模。

    • 分区数不足时通过增加分区扩展,而非减少现有分区。

有效的主题管理不仅能保障Kafka集群的稳定运行,还能为业务增长提供足够的弹性。掌握这些实践,将帮助你在面对复杂的生产环境时,从容应对各种主题相关的问题,充分发挥Kafka的高性能与高可靠性优势。

附录

操作目的命令示例
创建主题kafka-topics.sh --bootstrap-server host:port --create --topic t1 --partitions 3 --replication-factor 2
列出主题kafka-topics.sh --bootstrap-server host:port --list
查看主题详情kafka-topics.sh --bootstrap-server host:port --describe --topic t1
增加分区kafka-topics.sh --bootstrap-server host:port --alter --topic t1 --partitions 5
修改主题参数kafka-configs.sh --zookeeper zk:port --entity-type topics --entity-name t1 --alter --add-config max.message.bytes=1048576
删除主题kafka-topics.sh --bootstrap-server host:port --delete --topic t1
查看位移数据kafka-console-consumer.sh --bootstrap-server host:port --topic __consumer_offsets --formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetMetadataFormatter"
触发Leader选举kafka-preferred-replica-election.sh --bootstrap-server host:port --path-to-json-file election.json

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91265.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【VLLM】VLLM使用

一 、安装 二、启动入口 VLLM 提供了多种入口方式启动模型&#xff0c;以适应不同的使用场景&#xff08;如命令行交互、API 服务、自定义集成等&#xff09;。除了最常用的 openai.api_server&#xff08;OpenAI 兼容 API 服务&#xff09;&#xff0c;还有以下主要入口&#…

为Github Copilot创建自定义指令/说明/注意事项

GitHub Copilot 是一个强大的 AI 编程助手&#xff0c;通过合理配置自定义指令&#xff0c;可以让它更好地理解和遵循项目特定的编码规范&#xff0c;省的每次提问时输入重复提示语。 目录 方法一&#xff1a;项目级别指令文件&#xff08;推荐&#xff09;方法二&#xff1a…

信创厚知联盟会长兼创始人莅临绿算技术

2025年7月29日&#xff0c;信创厚知联盟会长兼创始人王杲一行考察广东省绿算技术有限公司&#xff0c;重点调研其在智算中心存储与AI算力协同领域的创新成果。此次交流标志着双方在信创产业生态合作上迈出重要一步&#xff0c;为国产高端高性能全闪存存储与智算基础设施的融合发…

RAG面试内容整理-Prompt Engineering 在 RAG 中的作用

Prompt Engineering(提示工程)指为生成模型精心设计输入提示,以引导模型产生所需的输出。在RAG系统中,prompt设计对充分利用检索到的知识至关重要。因为生成器(通常是LLM)接收到的不仅有用户问题,还有检索的文档内容,我们需要通过提示明确告诉模型如何使用这些信息。例…

【计算机网络】5传输层

传输层是面向通信的最高层&#xff0c;也是用户功能的最底层。 传输层仅存在于主机中&#xff0c;路由器等中间设备只用到下三层&#xff08;无传输层&#xff09;。传输层对上层应用隐藏了底层网络的复杂细节&#xff08;比如数据怎么路由、网络怎么连接等&#xff09;。对应用…

SecureCRT连接密钥交换失败

SecureCRT连接密钥交换失败问题描述&#xff1a;问题分析&#xff1a;解决方案&#xff1a;问题描述&#xff1a; SecureCRT6.7连接银河麒麟操作系统v10版本&#xff0c;报错如下&#xff1a; key exchange failed 密钥交换失败 no compatible key exchange method. The serv…

2021-05-10 求出这十个数据的平均值,并输入高于平均值的所有元素值及下标求出这十个数据的平均值,并输入高于平均值的所有元素值及下标

缘由C语言向一维数组a[10]中输入10个数据&#xff1a;12&#xff0c;15&#xff0c;18&#xff0c;21&#xff0c;24&#xff0c;32&#xff0c;34&#xff0c;36&#xff0c;38&#xff0c;4-其他-CSDN问答 double a[10000]{}, j 0; int n 0;while (n < 10000){std::cin …

WordPress与主流CMS拿Webshell实战

一、wordpress安装环境首先我们在vulhub中启动我们wordpress的doaker容器然后去访问我们的80端口然后选择简体中文进行安装然后就可以登录到我们的后台界面了后台修改模板拿webshell进入后台&#xff0c;我们修改一下404页面的代码&#xff0c;添加我们的一句话木马然后保存&am…

指针的运算与数组

一、指针的运算1.1加法对指针可以进行加法运算&#xff0c;即p n或者p - n。其结果依旧是一个是一个指针&#xff0c;新的指针是在原来的地址值基础上加上/减去n *(sizeof(指针指向的数据类型)&#xff09;个字节。 指针也可以进行自增&#xff0c;即*&#xff08;p &#xf…

【PostgreSQL内核学习:WindowAgg 帧优化与节点去重】

PostgreSQL内核学习&#xff1a;WindowAgg 帧优化与节点去重背景关键词解释本优化主要修改内容描述提交信息提交描述源码解读optimize_window_clauses 函数核心逻辑拆解函数时序图新增结构体类型 SupportRequestOptimizeWindowClause优化后的效果帧优化 sql 用例查询计划输出节…

行业要闻|正式落地!新思科技宣布完成对Ansys的收购

2025年7月17日——新思科技&#xff08;Synopsys, Inc.&#xff0c;纳斯达克股票代码&#xff1a;SNPS&#xff09;宣布完成对Ansys的收购。该交易旨在整合芯片设计、IP核以及仿真与分析领域的领先企业&#xff0c;助力开发者快速创新AI驱动的产品。在扩大至310亿美元的总潜在市…

Elasticsearch 基础速成 5 步跑通索引、文档、映射与查询

1 准备工作运行环境 curl -fsSL https://elastic.co/start-local | sh # 一条命令拉起本地单节点集群 # 浏览器打开 http://localhost:5601 进入 Kibana → DevTools → Console已有云端或 Serverless 集群可以直接跳到第 2 步。操作界面 以下所有请求均可在 Kibana → DevT…

语音表示学习论文总结

语音表示学习&#xff08;Speech Representation Learning&#xff09;是语音信号处理与机器学习交叉领域的核心技术&#xff0c;其目标是通过数据驱动的方式&#xff0c;从原始语音信号中自动提取具有判别性、鲁棒性和泛化能力的特征表示&#xff0c;以替代传统手工设计的声学…

国产芯+单北斗防爆终端:W5-D防爆智能手机,助力工业安全通信升级

在石油石化、煤矿开采、电力检修等高危行业&#xff0c;防爆设备的定位精度、通信可靠性及供应链安全性直接决定作业安全与生产效率。传统防爆手机依赖GPS定位与进口芯片&#xff0c;存在信号盲区、数据泄露风险及断供隐患。针对此&#xff0c;我们推出W5-D防爆智能终端&#x…

Kafka简述及学习课程

Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。 这种动作&#xff08;网页浏览&#xff0c;搜索和其他用户的行动&#xff09;是在现…

BLE PHY 帧结构

BLE&#xff08;低功耗蓝牙&#xff09;的 PHY&#xff08;物理层&#xff09;帧结构根据传输模式&#xff08;广播、数据&#xff09;和 PHY 类型&#xff08;1M、2M、Coded PHY&#xff09;有所差异&#xff0c;但基本框架一致。以下是 BLE PHY 帧的通用结构及各部分含义&…

海外货运 app 系统架构分析

一、引言海外货运业务涉及众多复杂环节&#xff0c;从货物揽收、仓储管理、运输调度到最后交付&#xff0c;需要一个高效、稳定且功能全面的 APP 系统来协调各方资源&#xff0c;提升物流效率&#xff0c;保障货物安全准确送达。本文将对海外货运 APP 系统架构进行详细剖析&…

【硬件-笔试面试题】硬件/电子工程师,笔试面试题-52,(知识点:简单一阶低通滤波器的设计,RC滤波电路,截止频率)

目录 1、题目 2、解答 3、相关知识点 一、一阶低通滤波器的核心原理 1. 电路结构 2. 关键特性参数 二、一阶低通滤波器的设计步骤&#xff08;以 RC 电路为例&#xff09; 1. 确定截止频率\(f_c\) 2. 选择电阻 R 的阻值 3. 计算电容 C 的容值 4. 验证与调整 三、典…

防火墙安全实验

一、实验拓补图二、实验需求1、VLAN 2属于办公区;VLAN 3属于生产区2、办公区PC在工作日时间(周一至周五&#xff0c;早8到晚6)可以正常访OA Server&#xff0c;其他时间不允许3、办公区PC可以在任意时刻访问Web server4、生产区PC可以在任意时刻访问OA Server&#xff0c;但是不…

TOC-Transformer-LSTM-ABKDE,计算机一区算法龙卷风优化算法应用到概率区间预测!Matlab实现

TOC算法概述 文献《Tornado optimizer with Coriolis force: a novel bio-inspired meta-heuristic algorithm》核心解读&#xff1a;科里奥利力的龙卷风优化算法&#xff08;Tornado optimizer with Coriolis force&#xff0c;TOC&#xff09;对龙卷风循环过程的观察以及雷暴…