kafka常见问题(2)

Kafka 2.5.0 安装部署实战:版本选型、ZooKeeper 配置与常见问题排查 消息队列是分布式系统中实现异步通信与流量削峰的核心组件,而 Kafka 凭借高吞吐、可持久化与水平扩展能力,成为事实上的行业标准。其运行依赖 ZooKeeper 完成元数据管理与 leader 选举,broker 通过 listeners 与 advertised.listeners 暴露服务地址,分区与副本机制则决定了数据可靠性与并发能力。正确配置 JVM、文件句柄、内存映射及 log.dirs 等参数,是保障集群稳定运行的基础。在存量系统扩容、测试环境复现及版本一致性工程等场景中,Kafka 2.5.0 阅读详情

11、LEO、LSO、AR、ISR、HW 都表示什么含义?

  • LEO:Log End Offset。日志末端位移值或末端偏移量,表示日志下一条待插入消息的 位移值。举个例子,如果日志有 10 条消息,位移值从 0 开始,那么,第 10 条消息的位 移值就是 9。此时,LEO = 10。
  • LSO:Log Stable Offset。这是 Kafka 事务的概念。如果你没有使用到事务,那么这个 值不存在(其实也不是不存在,只是设置成一个无意义的值)。该值控制了事务型消费 者能够看到的消息范围。它经常与 Log Start Offset,即日志起始位移值相混淆,因为 有些人将后者缩写成 LSO,这是不对的。在 Kafka 中,LSO 就是指代 Log Stable Offset。
  • AR:Assigned Replicas。AR 是主题被创建后,分区创建时被分配的副本集合,副本个 数由副本因子决定。
  • ISR:In-Sync Replicas。Kafka 中特别重要的概念,指代的是 AR 中那些与 Leader 保 持同步的副本集合。在 AR 中的副本可能不在 ISR 中,但 Leader 副本天然就包含在 ISR 中。关于 ISR,还有一个常见的面试题目是如何判断副本是否应该属于 ISR。目前的判断 依据是:Follower 副本的 LEO 落后 Leader LEO 的时间,是否超过了 Broker 端参数 replica.lag.time.max.ms 值。如果超过了,副本就会被从 ISR 中移除。
  • HW:高水位值(High watermark)。这是控制消费者可读取消息范围的重要字段。一 个普通消费者只能“看到”Leader 副本上介于 Log Start Offset 和 HW(不含)之间的 所有消息。水位以上的消息是对消费者不可见的。关于 HW,问法有很多,我能想到的 最高级的问法,就是让你完整地梳理下 Follower 副本拉取 Leader 副本、执行同步机制 的详细步骤。这就是我们的第 20 道题的题目,一会儿我会给出答案和解析。

12、Kafka 能手动删除消息吗?
其实,Kafka 不需要用户手动删除消息。它本身提供了留存策略,能够自动删除过期消息。 当然,它是支持手动删除消息的。因此,你最好从这两个维度去回答。

  • 对于设置了 Key 且参数 cleanup.policy=compact 的主题而言,我们可以构造一条 <Key,null> 的消息发送给 Broker,依靠 Log Cleaner 组件提供的功能删除掉该 Key 的消息。
  • 对于普通主题而言,我们可以使用 kafka-delete-records 命令,或编写程序调用 Admin.deleteRecords 方法来删除消息。这两种方法殊途同归,底层都是调用 Admin 的 deleteRecords 方法,通过将分区 Log Start Offset 值抬高的方式间接删除消息。

13、__consumer_offsets 是做什么用的?

这是一个内部主题,公开的官网资料很少涉及到。因此,我认为,此题属于面试官炫技一类 的题目。你要小心这里的考点:该主题有 3 个重要的知识点,你一定要全部答出来,才会显得对这块知识非常熟悉。

它是一个内部主题,无需手动干预,由 Kafka 自行管理。当然,我们可以创建该主题。

它的主要作用是负责注册消费者以及保存位移值。可能你对保存位移值的功能很熟悉, 但其实该主题也是保存消费者元数据的地方。千万记得把这一点也回答上。另外,这里 的消费者泛指消费者组和独立消费者,而不仅仅是消费者组。

Kafka 的 GroupCoordinator 组件提供对该主题完整的管理功能,包括该主题的创建、 写入、读取和 Leader 维护等。

14、分区 Leader 选举策略有几种?

分区的 Leader 副本选举对用户是完全透明的,它是由 Controller 独立完成的。你需要回答的是,在哪些场景下,需要执行分区 Leader 选举。每一种场景对应于一种选举策略。当前,Kafka 有 4 种分区 Leader 选举策略。

  • OfflinePartition Leader 选举:每当有分区上线时,就需要执行 Leader 选举。所谓的分区上线,可能是创建了新分区,也可能是之前的下线分区重新上线。这是最常见的分区 Leader 选举场景。
  • ReassignPartition Leader 选举:当你手动运行 kafka-reassign-partitions 命令,或者是调用 Admin 的 alterPartitionReassignments 方法执行分区副本重分配时,可能触发此类选举。假设原来的 AR 是[1,2,3],Leader 是 1,当执行副本重分配后,副本集 合 AR 被设置成[4,5,6],显然,Leader 必须要变更,此时会发生 Reassign Partition Leader 选举。
  • PreferredReplicaPartition Leader 选举:当你手动运行 kafka-preferred-replica- election 命令,或自动触发了 Preferred Leader 选举时,该类策略被激活。所谓的 Preferred Leader,指的是 AR 中的第一个副本。比如 AR 是[3,2,1],那么, Preferred Leader 就是 3。
  • ControlledShutdownPartition Leader 选举:当 Broker 正常关闭时,该 Broker 上 的所有 Leader 副本都会下线,因此,需要为受影响的分区执行相应的 Leader 选举。

这 4 类选举策略的大致思想是类似的,即从 AR 中挑选首个在 ISR 中的副本,作为新 Leader。当然,个别策略有些微小差异。不过,回答到这种程度,应该足以应付面试官 了。毕竟,微小差别对选举 Leader 这件事的影响很小。

15、Kafka 的哪些场景中使用了零拷贝(Zero Copy)?

Zero Copy 是特别容易被问到的高阶题目。在 Kafka 中,体现 Zero Copy 使用场景的地方有两处:基于 mmap 的索引和日志文件读写所用的 TransportLayer。

先说第一个。索引都是基于 MappedByteBuffer 的,也就是让用户态和内核态共享内核态 的数据缓冲区,此时,数据不需要复制到用户态空间。不过,mmap 虽然避免了不必要的 拷贝,但不一定就能保证很高的性能。在不同的操作系统下,mmap 的创建和销毁成本可 能是不一样的。很高的创建和销毁开销会抵消 Zero Copy 带来的性能优势。由于这种不确 定性,在 Kafka 中,只有索引应用了 mmap,最核心的日志并未使用 mmap 机制。

再说第二个。TransportLayer 是 Kafka 传输层的接口。它的某个实现类使用了 FileChannel 的 transferTo 方法。该方法底层使用 sendfile 实现了 Zero Copy。对 Kafka 而言,如果 I/O 通道使用普通的 PLAINTEXT,那么,Kafka 就可以利用 Zero Copy 特 性,直接将页缓存中的数据发送到网卡的 Buffer 中,避免中间的多次拷贝。相反,如果 I/O 通道启用了 SSL,那么,Kafka 便无法利用 Zero Copy 特性了。

深度思考题

16、Kafka 为什么不支持读写分离?

这道题目考察的是你对 Leader/Follower 模型的思考。

Leader/Follower 模型并没有规定 Follower 副本不可以对外提供读服务。很多框架都是允 许这么做的,只是 Kafka 最初为了避免不一致性的问题,而采用了让 Leader 统一提供服 务的方式。

不过,在开始回答这道题时,你可以率先亮出观点:自 Kafka 2.4 之后,Kafka 提供了有限度的读写分离,也就是说,Follower 副本能够对外提供读服务。

说完这些之后,你可以再给出之前的版本不支持读写分离的理由。

  • 场景不适用。读写分离适用于那种读负载很大,而写操作相对不频繁的场景,可 Kafka 不属于这样的场景。
  • 同步机制。Kafka 采用 PULL 方式实现 Follower 的同步,因此,Follower 与 Leader 存 在不一致性窗口。如果允许读 Follower 副本,就势必要处理消息滞后(Lagging)的问题。

17、如何调优 Kafka?

回答任何调优问题的第一步,就是确定优化目标,并且定量给出目标!这点特别重要。对于 Kafka 而言,常见的优化目标是吞吐量、延时、持久性和可用性。每一个方向的优化思路都 是不同的,甚至是相反的。

确定了目标之后,还要明确优化的维度。有些调优属于通用的优化思路,比如对操作系统、 JVM 等的优化;有些则是有针对性的,比如要优化 Kafka 的 TPS。我们需要从 3 个方向去考虑

  • Producer 端:增加 batch.size、linger.ms,启用压缩,关闭重试等。
  • Broker 端:增加 num.replica.fetchers,提升 Follower 同步 TPS,避免 Broker Full GC 等。
  • Consumer:增加 fetch.min.bytes 等

18、Controller 发生网络分区(Network Partitioning)时,Kafka 会怎 么样?

这道题目能够诱发我们对分布式系统设计、CAP 理论、一致性等多方面的思考。不过,针 对故障定位和分析的这类问题,我建议你首先言明“实用至上”的观点,即不论怎么进行理论分析,永远都要以实际结果为准。一旦发生 Controller 网络分区,那么,第一要务就是 查看集群是否出现“脑裂”,即同时出现两个甚至是多个 Controller 组件。这可以根据 Broker 端监控指标 ActiveControllerCount 来判断。

现在,我们分析下,一旦出现这种情况,Kafka 会怎么样。

由于 Controller 会给 Broker 发送 3 类请求,即LeaderAndIsrRequest、 StopReplicaRequest 和 UpdateMetadataRequest,因此,一旦出现网络分区,这些请求将不能顺利到达 Broker 端。这将影响主题的创建、修改、删除操作的信息同步,表现为 集群仿佛僵住了一样,无法感知到后面的所有操作。因此,网络分区通常都是非常严重的问 题,要赶快修复。

19、Java Consumer 为什么采用单线程来获取消息?

在回答之前,如果先把这句话说出来,一定会加分:Java Consumer 是双线程的设计。一 个线程是用户主线程,负责获取消息;另一个线程是心跳线程,负责向 Kafka 汇报消费者 存活情况。将心跳单独放入专属的线程,能够有效地规避因消息处理速度慢而被视为下线 的“假死”情况。

单线程获取消息的设计能够避免阻塞式的消息获取方式。单线程轮询方式容易实现异步非阻塞式,这样便于将消费者扩展成支持实时流处理的操作算子。因为很多实时流处理操作算子都不能是阻塞式的。另外一个可能的好处是,可以简化代码的开发。多线程交互的代码是非常容易出错的。

20、简述 Follower 副本消息同步的完整流程

首先,Follower 发送 FETCH 请求给 Leader。接着,Leader 会读取底层日志文件中的消 息数据,再更新它内存中的 Follower 副本的 LEO 值,更新为 FETCH 请求中的 fetchOffset 值。最后,尝试更新分区高水位值。Follower 接收到 FETCH 响应之后,会把 消息写入到底层日志,接着更新 LEO 和 HW 值。

Leader 和 Follower 的 HW 值更新时机是不同的,Follower 的 HW 更新永远落后于 Leader 的 HW。这种时间上的错配是造成各种不一致的原因。

【Kafka基础】Kafka高可用集群:2.8以下版本超详细部署指南,运维必看! 本文详细介绍了在三节点集群上部署Kafka 2.8以下版本的完整流程。通过合理的配置和验证,可以获得一个高可用的Kafka集群。Apache Kafka是一个分布式流处理平台,广泛应用于构建实时数据管道和流应用程序。本文将详细介绍如何在三节点集群上部署Kafka 2.8以下版本。 阅读详情

相关推荐

kafka2.8单机的安装以及配置

文章目录kafka2.8单机的安装以及配置1. 下载2. 安装3. 配置server.properties配置参数zookeeper.properties配置参数4. 遇到的问题1. Kafka: 找不到或无法加载主类 kafka.Kafka2. java.net.UnknownHostException: bogon: bogon: 系统错误3. doesn't match stored clusterId Some(PSukxbtYScqbBlpCUn6xnQ) in meta.properties.

Anddown的博客 1737

深入解析Kafka的offset管理

更多内容关注微信公众号:fullstack888Kafka中的每个partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到partition中。partition中的每...

qianshanding0708的博客 1915

SAP BTP-Cloud foundry 构建并部署JAVA应用程序

本文为 SAP BTP Java 应用程序的简单实例, 我们可以用此实例来熟悉SAP BTP 中的java应用开开发流程.在你完成改示例java应用程序以后, 我们可以直接使用该java应用程序进行后续的开发流程, 或直接构建一个新的JAVA应用程序来支持新的业务开发。

seyafly的博客 803

kafka消费端--增量拉取

前言 消费端通过poll方法拉取数据时, 每次都会调用fetch去服务端发起拉数据请求, 那每次不间断的拉取数据, broker端如何判定该次请求拉取的offset? 简介 为了减少客户端每次拉取都要拉取全部的分区,增加了增量拉取分区的概念。 拉取会话(Fetch Session),类似于web中的session是有状态的,客户端的fetch也可以认为是有状态的。 这里的状态指的是知道“...

atarik@163.com 3576

CCS配置MSPM0G3507(七) 编码器(TIMER-QEI)

1.选择时钟源 BUSCLK2.时钟分频配置为1分频3.分频系数配置为14.若勾选 Start ,则生成程序后会自动开启定时器的计数,否则需手动在程序中开启5.Load Value 设置为65535。

kaneki_lh的博客 1万+

自抗扰控制(ADRC)原理与MATLAB实现详解

自抗扰控制(ADRC)是一种先进的鲁棒控制策略,其核心在于通过扩张状态观测器(ESO)实时估计并补偿系统总扰动。相比传统PID控制,ADRC不依赖精确数学模型,特别适合处理非线性、时变系统。从控制原理看,ADRC将系统内部动态和外部扰动统一建模,通过带宽参数化方法实现快速响应与强抗扰能力。在工程实践中,ADRC已成功应用于无人机飞控、伺服系统等场景,MATLAB仿真显示其上升时间可比PID提升46%,抗扰动恢复时间缩短60%。典型实现包含ESO设计、扰动补偿和PD控制三部分,参数整定遵循ω₀=3~5倍系统带

weixin_33585822的博客 95

解释下Kafka中位移(offset)的作用

同时,通过控制位移的提交策略,Kafka还能满足实时数据流处理的需求,例如允许消费者重新消费某个时间点或位移之前的消息,或者只消费新的消息。在Kafka中,不同的消费者组可以共享同一个主题,但每个消费者组内部的消费者各自维护独立的位移信息。通过位移,Kafka能够保证即使在发生节点故障时,也能恢复消费者的消费状态,并将未完成消费的消息分配给其他副本或者消费者进行处理,从而确保消息不会丢失且能实现服务的高可用性。总之,在Kafka中,位移是实现消息持久化、追踪消费者消费状态以及分布式消费的核心机制。

qq_33240556的博客 545

PCB印刷电路缺陷检测实战:从数据集准备到模型训练全流程解析

本文详细解析了PCB缺陷检测从数据集准备到模型训练的全流程。重点介绍了PKU-Market-PCB数据集的特点与下载方法,并提供了数据格式转换、模型选择(如YOLOv8)与训练配置的实战代码。针对PCB小目标检测的难点,文章给出了数据分析和模型优化的具体策略,帮助读者构建高效的缺陷检测系统。

weixin_29065791的博客 548

Kafka(三):kafka消费者

文章目录1. 消费方式2. 消费者总体工作流程2.1 消费者组2.2 消费者组初始化流程2.3 消费者组详细消费流程3 消费者重要参数 1. 消费方式 pull(拉)模式 consumer采用从broker中主动拉去数据 kafka采用这种方式 不足之处:如果kafka没有数据,消费者可能会陷入循环之中,一直返回空数据 push(推)模式 kafka没有采用这种方式,因为由broker决定消息发送速率,很难适应所有消费者的消费速率 2. 消费者总体工作流程 2.1 消费者组 由多个consumer组

qq_39198749的博客 4031

别再只用STM32了!手把手教你用STM32F4+FPGA EP2C8搭建低成本多轴运动控制器(附S形加减速算法避坑)

本文详细介绍了如何利用STM32F4与FPGA EP2C8搭建低成本多轴运动控制器,解决传统方案在脉冲输出频率、多轴同步性和实时响应方面的瓶颈。通过硬件设计、软件架构和S形加减速算法的优化,实现商用级性能,成本控制在500元以内,适合创客和小型自动化设备开发。

weixin_28693683的博客 302

解决WSL2网络隔离:Ubuntu子系统共享Windows代理的3种方法

本文详细解析了WSL2的网络隔离特性,并提供了三种在Ubuntu子系统中共享Windows代理的实用方法:环境变量法、配置文件法和系统服务法。通过具体代码示例和方案对比,帮助开发者快速解决WSL2网络访问问题,实现一键设置代理,提升开发效率。

weixin_29295541的博客 452

「Kafka」Kafka中offset偏移量提交

在消费Kafka中分区的数据时,我们需要跟踪哪些消息是读取过的、哪些是没有读取过的。这是读取消息不丢失的关键所在。Kafka是通过offset顺序读取事件的。如果一个消费者退出,再重启的时候,它知道从哪儿继续读取消息进行处理。所以,消费者需要「提交」属于它们自己的偏移量。如果消费者已经提交了偏移量,但消息没有得到有效处理,此时就会造成消费者消息丢失。所以,我们应该重视偏移量提交的时间点以及提交的方式。Kafka消费者的可靠性配置1、group.id如果两个消费者有相同的 group.id,并且定义...

rizon886的博客 867

Python 爬虫实战:爬取 B 站 UP 主的全部视频数据

本文详细介绍了基于Python开发B站UP主视频数据爬虫的技术方案。通过分析B站API接口,使用requests库发送HTTP请求并处理JSON数据,结合pandas进行结构化存储。文章重点解决了接口鉴权、分页爬取、反爬策略等核心难点,实现获取视频标题、播放量、点赞数等关键指标。同时强调数据爬取需遵守平台规范,仅限技术研究使用。该方案为B站视频内容分析提供了可靠的数据采集基础,具有实际应用价值。

2503_91057718的博客 2492

Fs2-kafka 开源项目常见问题解决方案

Fs2-kafka 开源项目常见问题解决方案 1. 项目基础介绍和主要编程语言 Fs2-kafka 是一个开源项目,旨在为 Scala 提供功能性的 Kafka Streams 实现。该项目利用 Fs2 (Functional Streams for Scala) 库来构建与 Kafka 交互的流处理应用。Fs2-kafka 可以帮助开发者轻松地集成 Kafka 流处理能力到他们的 Scala 应...

gitblog_00201的博客 323

基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示

基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示

Robot_PLC_HMI_Automation 3164

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

挑战从零开始学习Kafka2: Kafka 常见问题解决方案

Kafka 解决这三个问题的思路可以概括为:消息丢失:发送时确认、Broker 保存副本、处理成功后提交 Offset;重复消费:使用手动提交,并通过唯一编号和幂等逻辑避免重复处理;消息积压:增加 Partition 和消费者数量,同时优化消费业务。

2301_81684716的博客 253

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

wsl2中创建kafka集群

通过上述步骤,可在WSL2的Linux子系统中快速搭建一个高可用的Kafka伪分布式集群。如需可视化监控,可参考Kafdrop工具。输出应显示分区分布在多个Broker上(例如。

m0_51955470的博客 738

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

kafka源码IDEA阅读环境

kafka源码阅读环境 kafka源码导入idea

紫蝶侠的博客 359

Centors下搭建Kafka集群教程(v2.7.1)

本文讲解了`kafka v2.7.1`版本集群搭建,讲述了详细的配置以及避免了会出现的坑,在文章中,教大家如何搭建和测试每一个步骤和环节,确保能够及时发现问题,节省大家Debug时间,文章中的内容本人都亲测,确保大家一把通过。

五道口 1016

Kafka.clj 项目常见问题解决方案

Kafka.clj 项目常见问题解决方案 基础介绍 Kafka.clj 是一个 Clojure 客户端库,用于 Apache Kafka,它是对官方 Java 库的封装。项目旨在提供一个既符合 Clojure 习惯又不失 Java 库实用性的中间方案。用户即使不熟悉 Java 库也能轻松上手,项目支持消费者、生产者以及一些管理功能,并全面支持 Kafka Streams。Kafka.clj 适用于...

gitblog_01166的博客 329

我的大数据之路--kafka1.0集成spark streaming2.0--python3

kafka1.0–>spark streaming2.0 一、安装依赖包 spark-stream-kafka-0.10_2.11-2.0.0.jar kafka-2.11-1.0.2.jar 二、

qq_41562377的博客 943

云服务器部署KAFKA-常见问题汇总

检查zookeeper与kafka配置文件,检查端口设置是否一致,有时文件配置一致,但依然有速度问题注意修改后生效文件并重新启动。更改kafka配置文件修改相应内存设置,有时修改该项设置依然无法正常运行,可能原因为kafka版本之间的差异。配置python3环境根据需要配置需要的版本,注意不要动系统自带的版本,有些系统程序的运行依赖该版本。常见免费试用版本多为2核2g,但是kafka正常运行需要大量内存,因此无法正常运行。亲身实测,如若需要kafka在云服务器上正常运行,推荐使用2核4g的配置。

duibuqiwoshijing的博客 426

springboot整合kafka2.5(单机模式)

操作系统:centos6.5 kafka:2.5.0 zookeeper:kafka高版本中自带的zookeeper 首先下载kafka,横线部分是源码,还需要编译,直接下载下面编译后的压缩包 下载地址:http://kafka.apache.org/downloads 解压 :cd/usr/local/kafka && tar -zxvf kafka_2.12-2.5.0.tgz 修改配置文件: vi /usr/local/kafka/kafka_2.12-2.5.0/con.

APM800的博客 1870

kafka2.4.0集群配置

kafka版本:2.4.0 scala版本:2.12 配置 ​ 添加环境变量,每台服务器都需修改 # vi /etc/profile ​ 修改配置文件,每台服务器都需修改 # vi /usr/local/kafka_2.12-2.4.0/config/server.properties // 修改下方配置 // 1 节点值 broker.id=1 // 不同机器取值不同,cluster1是...

weixin_40448238的博客 831

使用Strimzi Kafka Operator配置SCRAM-SHA-512认证的MirrorMaker2集群

使用Strimzi Kafka Operator配置SCRAM-SHA-512认证的MirrorMaker2集群 【免费下载链接】strimzi-kafka-operator Apache Kafka® running on Kubernetes ...

gitblog_00564的博客 590

Kafka 2.5.0单机版CentOS下安装

Kafka2.5单机版 将下载好的kafka_2.13-2.5.0.tgz安装文件拖拽到此路径下,并解压 进入解压后的文件夹 三、启动Zookeeper kafka需要依赖ZK,安装包中已经自带了一个ZK,也可以改成指定已运行的ZK。如果改成指定的ZK需要修改修改 kaf...

weixin_37714753的博客 494
上一篇: kafka常见面试问题(1)
下一篇: kafka常见问题(3)
Computer_hello
博客等级 码龄10年 2粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值