AWS 弹性伸缩特性介绍

AWS云S3+Glue+EMRonEC2+ReadShift AWS,大数据 阅读详情

01 什么是弹性伸缩组

随着云计算技术的不断发展与云原生理念的深入人心,更加多种多样的基础部署模式层出不穷。弹性伸缩组作为一个相对较为“传统”的云技术概念,可能还是有不少同学有些陌生。今天我就以云计算鼻祖 AWS 的弹性伸缩组为例,谈一谈这个伴随着云计算发展的基础产品。弹性伸缩组是 Iaas 基础设施发展晚期被提出的一类云产品,相信大家对于 k8s 都会有所了解,基于容器的弹性扩缩容方案不是一个新鲜的概念。弹性伸缩组我们可以理解为是基于云虚拟机的解决动态扩缩容需求的产品。AWS 于 2006 年 8 月推出了 EC2 产品,由于动态扩缩容是天然存在的基础需求,于是从 2008 年 4 月开始,各类三方弹性伸缩软件出现,包括 Scalr 和 RightScale。2009 年 5 月 18 日,AWS 推出了自己的弹性伸缩功能[1]。总结一下,弹性伸缩组主要的目的是为了解决多变的流量需求而诞生的产品,核心概念可以分解为两个部分:“弹性伸缩”与“组”。

02 弹性伸缩组都有什么功能

围绕“弹性伸缩”与“组”,我们可以将弹性伸缩组的主要功能拆分为两个主要部分:

节点管理

弹性伸缩组管理的核心资源还是我们的计算节点,所以本质上弹性伸缩组一个节点组,管理了一组同构或异构的节点,把节点管理好自然是这个产品的基础能力。围绕节点管理 AWS 定义了几个基础概念:

  • 启动模板

为了应对灵活的扩缩容需求,必须需要支持快捷的节点新增与销毁;同时被归纳到一个组内,节点必然存在着或多或少的共性。这时一个能快捷创建节点的模板是一个最好的选择。AWS 的启动模板支持配置大部分的 EC2 参数属性,为伸缩组提供了一个基础性的属性模板。

  • 期望,最大,最小数量

当手动进行节点容量管理时,用户可以设置一个期望的节点数量,来控制节点的数量。当实际的节点数量不等于期望数量时,弹性伸缩组会自动进行节点的创建与回收,来匹配期望数量。当使用自动弹性策略时,本质也是通过修改期望数量来达到控制扩缩的效果。而最大、最小数量则可以理解为一个约束值,来限制期望数量的范围,防止出现集群水位过低或服务器成本过高的问题。

  • 健康检查

    对于期望数量的修正的前提是节点处于『健康』状态,对于『不健康』的节点,弹性伸缩组会对其进行置换,以保证组内的节点均处于健康状态,能够正常提供服务。识别节点是否处于健康状态,大体上可以分为两类方法:

    ◦ 当设置负载均衡器时,会通过负载均衡器的健康检查来判断节点的健康状态

    ◦ 可以通过 API 手动设置节点的健康状态,往往适配于自定义健康检查逻辑

  • 机型管理策略

一个高可用的集群往往需要若干个可用区的服务节点,但由于在不同可用区往往存在着库存与机型的差异,我们很难预先设置一种机型适配所有的可用区,这时我们需要更加智能的策略来管理机型。
AWS 提供了两种方式来管理机型:

  • 手动配置机型:手动指定若干个机型,按照某种规则选择库存充足的机型

    ◦ 优先级模式:按照配置的顺序选择第一个库存充足的机型

    ◦ 价格优先模式:选择库存充足中价格最低的机型

  • 自动机型筛选:可以配置 cpu 核数、内存和其他指标来动态筛选合适的机型

弹性扩缩容能力

  • 定时策略

当一个应用流量具有明显的周期性特征,可以采用定时策略实现周期性的扩容与缩容

  • 基于指标的自动策略

基于云提供的监控指标,随着指标的上升自动扩容,或随着指标的下降自动缩容

  • 冷却时间

过于频繁的进行集群数量的变更不但不会提高服务的质量,而且会导致集群的不稳定,为了防止此类问题,会有一个冷却时间进行限制,实现最小的变更时间间隔

03 AWS 弹性伸缩的高级特性

除了上述的一些基础能力,AWS 弹性伸缩还提供了更加高级的特性提供更好的体验。

生命周期钩子

在组内节点进行状态变更时,用户可以加入自定义逻辑,来实现对于节点状态切换时进行的额外操作,例如资源的初始化或清理。自定义操作的实现方式主要有几种:

  • 使用 cloud-init 来执行自定义脚本,此种方式严格来说不属于生命周期钩子的概念范畴,且只能针对启动周期进行操作,但也是一种最为简单实现自定义操作的可用方案。

  • 使用 Lambda 服务实现自定义操作,通过监听 EventBridge 事件来触发配置的 Lambda 操作。

  • 使用自研程序监听 SNS 或者 SQS 事件,执行自定义的程序流程

自定义操作一般都配置有超时时间,用户可以定义超时后的操作方式,因此在自定义程序执行结束后,应当要调用 AWS 的 API 通知弹性伸缩组已完成生命周期钩子逻辑。

暖池

为了提高节点扩容的敏捷性,AWS 提出了暖池的概念,独立于弹性伸缩组的节点之外,最大限度的减少节点提供服务的预热时间,提供应对突发容量时的应变能力。暖池内的节点有三种状态:

  • Stopped:节点处于关机状态,这样可以节省创建节点的时间。

  • Hibernated:节点运行的内存状态将以快照形式保存到磁盘中,可以进一步减少开机所需的时间。

  • Running:节点处于运行状态,几乎可以瞬间加入的弹性伸缩组中,加入负载均衡,提供服务(当然如果设置了生命周期钩子,还有执行自定义逻辑的时间),当然同时也必须支付全部的节点运行费用。

基于权重的多机型策略、

当基础的机型指标不能准确描述节点的服务能力时,AWS 支持用户为指定的机型设置权重,代表机型的相对服务能力。举个例子,机型 a 与 b 均为 2 核 4G 的配置,但因为其他的综合指标,经过压测结果,a 机型的服务能力是 b 机型的两倍,此时我们就可以设置 a 机型的权重为 2,b 为 1。弹性伸缩组的期望、最大最小容量就可以不代表节点数量,而代表抽象的服务能力,当我们指定期望值为 8 时,使用 a 机型需要 4 个节点,而使用 b 机型则需要 8 个节点。这样就会更加准确的描述总服务能力,或者保证多可用区间的能力平衡。

04 AutoMQ 是如何使用 AWS 弹性伸缩的

存算分离的 Kafka 节点

由于 AutoMQ 的存算分离架构,几乎所有的状态信息均存储于对象存储中(有部分写缓冲数据在 EBS 卷中,目前已经推出无 EBS 的 Direct S3 版本[3]),我们可以认为节点都是可以随时被终止和替换的。这样就完全具备了利用弹性伸缩管理集群的前提条件,随着负载的变化,可以借助弹性伸缩实现分钟级甚至秒级的容量增减。我们在使用弹性伸缩组时,将 kafka 的 controller 与 broker 节点进行了区分,采用了不同的伸缩组,在此我们提出了一个概念,把同时具备 controller 和 broker 功能的节点称为 server 节点。随着集群规模的增大,我们会根据特性不同将纯 broker 节点按照特性切分为不同的弹性伸缩组。

利用机型策略解决多可用区库存问题

以目前 AutoMQ 使用的两类机型为例,r6in.large 与 r6i.large 均为 2 核 16G 内存的机型,但在实际综合测试中,两者的服务能力存在着本质的区别,可以几乎认为 r6in.large 的服务能力为 r6i.large 的两倍,而两者在不同地域与可用区的分布并不均匀,当我们选择使用多可用区高可用布局的情况下,很难做到不同可用区的服务能力是平衡的。因此使用机型权重即可有效的解决此类问题,将 r6in.large 的权重设置为 r6i.large 的两倍,在多可用区均衡策略下,使用 r6in.large 的可用区可以使用一半的节点数量达到同等的服务能力。

利用健康检查及生命周期钩子保持集群的健康

对于常规的 web 应用,利用负载均衡的自动健康检查是一个最为高效的手段。但对于 Kafka 此类应用来说,往往会有更加复杂的节点健康评估机制。因此,我们需要借助自定义的方案来保证集群节点的健康。我们会根据内部的巡检及一些额外的机制,对于节点进行健康评估,如果发现节点处于非健康状态,我们会利用 AWS 的健康状态设置接口,手动的更改节点的健康状态。此时,弹性伸缩组会自动执行节点的替换操作,得益于 AutoMQ 的无状态架构,可以平滑的进行节点的替换。通过节点关闭的生命周期钩子,我们可以确保边界情况下数据的完整性与可靠性。

利用自动弹性策略实现秒级扩容体验

由于 Kafka 主要运用于大数据量,高吞吐的场景,其运行特征不同于常规的计算密集型应用,对于 cpu 与内存指标并不敏感,决定其负载的核心指标为网络吞吐量,所以我们需要将弹性的核心指标定位至服务器的网络出入带宽。正如我们前面介绍的多弹性伸缩组的架构,我们还需要利用 AWS 的一个关键特性:通过本伸缩组的弹性指标对另外一个组进行伸缩。例如一个规模较小的集群,往往只包含 server 节点,分配了一个伸缩组,当流量规模达到一定比例时,平均的流量已经超过了安全阈值,此时我们需要增加节点数量,由于 server 节点的数量往往是固定的,不可通过简单的增加 server 节点提高整体集群的节点数量。所以我们会在初始化集群的时候,创建两个弹性伸缩组,同时将另一个伸缩组容量设置为 0。这样我们可以通过 server 伸缩组的指标,增加另一个伸缩组的节点数量,整体集群节点的平均流量就会符合预期地下降至合理水位。

05 结语

今天我们简单介绍了 AWS 弹性伸缩组的基本概念与 AutoMQ 是如何使用弹性伸缩组实现产品特性的,接下来我们会针对 AutoMQ 是如何利用云基础设施这一话题展开介绍,请大家敬请期待。

参考资料

[1]https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html [2]https://zh.wikipedia.org/wiki/%E5%BC%B9%E6%80%A7%E4%BC%B8%E7%BC%A9 [3]https://docs.automq.com/automq/getting-started/deploy-direct-s3-cluster

关于我们
我们是来自 Apache RocketMQ 和 Linux LVS 项目的核心团队,曾经见证并应对过消息队列基础设施在大型互联网公司和云计算公司的挑战。现在我们基于对象存储优先、存算分离、多云原生等技术理念,重新设计并实现了 Apache Kafka 和 Apache RocketMQ,带来高达 10 倍的成本优势和百倍的弹性效率提升。

🌟 GitHub 地址:https://github.com/AutoMQ/automq
💻 官网:https://www.automq.com?utm_source=openwrite

弹性伸缩和自动扩展:AWSEC2的自动化时代 作者:禅与计算机程序设计艺术 1.简介 随着云计算的兴起,传统的服务器及存储设备已经不再适应当前的业务需求,而基于云的服务则提供可弹性扩缩容的功能,使得应用能够根据需要自动调整资源。相对于传统的服务器,云主机价格低廉,弹性伸缩的配置简单,降低了成本,但是同时也带来了复杂度和管理难度。尤其是在运行多租户应 阅读详情

相关推荐

6、构建无服务器图像识别系统(上)

本文介绍了如何在AWS平台上构建一个无服务器的图像识别系统,涵盖了前期开发环境配置、DNS域名与SSL/TLS证书设置、Node.js安装及Serverless框架的使用。系统由两个主要服务组成:爬虫服务和分析服务,分别用于从指定URL爬取图像并存储到S3桶中,以及利用Amazon Rekognition对图像进行分析。服务间通过SQS队列进行异步通信,实现了高度可扩展和松耦合的架构。文章还详细描述了代码结构、部署流程以及测试方法,并提供了完整的流程图和配置文件示例。

perl8的博客 54

弹性伸缩(Auto Scaling)

能增加/减少EC2实例的数量,从而让你的应用程序一直能保持可用的状态。你可以预定义Auto Scaling,使其在需求高峰期自动增加EC2实例,而在需求低谷自动减少EC2实例。这样不仅能让你的应用程序一直保持健康的状态,而且也节省了你为EC2实例所付出的费用。Auto Scaling 适用于那些需求稳定的应用程序,同时也适用于在每小时、每天、甚至每周都有需求变化的应用程序。

weixin_42230010的博客 2197

一文理解云计算中的弹性伸缩

云计算”已经成为热门话题。从最早的小型机到现在的大型集群服务器、分布式系统,云计算越来越受到青睐,对企业业务快速响应和创新发展,带动着新一代信息化服务的革命。但同时,云计算也面临着新的挑战。在面对海量数据时如何处理,如何保证服务的高可用和可靠,如何有效地利用资源提升用户体验?为了应对这些挑战,云计算平台厂商们设计出了各种弹性伸缩解决方案,如自动伸缩、自动扩容、自动故障转移等,这些方案能够实现云服务在使用过程中根据需求动态调整资源的分配方式,让用户享受到超高的效率和可用性。

AI天才研究院 2186

AWS EKS集群使用Karpenter实现EC2工作节点弹性伸缩

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aClh2RN7-1671346674057)(./media/image-20211217165913880.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gKNwZU5b-1671346674062)(./media/2021-karpenter-diagram.png)]Karpenter 会自动发现并使用。

weixin_43041894的博客 1319

aws自动化运维(弹性伸缩)步骤.pdf

aws自动化运维(弹性伸缩)步骤

通俗理解Xgboost

为了简化计算,XGBoost采用了一阶导数(梯度)和二阶导数(Hessian)来近似损失函数的变化,从而推导出叶子节点值的更新公式。其中 z 就是所有树的叶子节点分数之和。通过这两个正则化项,XGBoost能够在优化目标函数时,不仅考虑损失函数的最小化,还考虑了模型的复杂度,从而达到更好的泛化性能。正则化项通常包括两个部分:一个是与叶子节点数量相关的项,另一个是与叶子节点输出值大小相关的项。通过这种方式,XGBoost能够有效地计算出每个叶子节点的值,同时通过正则化项来平衡模型的复杂度和泛化能力。

金融风控笔记 751

AWS上的应用程序自动扩展–选项及其对性能的影响

扩展软件应用程序是至关重要的,以避免由于网站的客户群或需要处理大量数据集的应用程序等增加而导致工作负载增加的性能瓶颈。云服务提供商通常是访问其他应用程序的最佳方法随需应变的资源,可根据应用程序的负载变化来扩大或缩小。 1.什么是可伸缩性? 可伸缩性是解决方案可以通过添加计算和存储资源的一种有能力的方式来处理增加的工作负载或事务的特性。 如果您当前的解决方案可同时支持100万用户,那么具有...

最佳 Java 编程 612

二手分析仪器改造实战:如何用PMT搭建荧光检测电路(附完整电路图)

本文详细介绍了如何利用二手分析仪器中的光电倍增管(PMT)核心部件,进行荧光检测电路的实战改造。内容涵盖从PMT工作原理理解、高压供电电路设计、低噪声前置放大(跨阻放大器)到信号调理的完整流程,并提供了关键电路图与调试排错指南,旨在帮助电子爱好者与工程师低成本构建稳定、高灵敏度的专业检测系统。

weixin_29234239的博客 441

AWS DevOps零基础到精通:深入浅出AWS Lambda服务解析

AWS DevOps零基础到精通:深入浅出AWS Lambda服务解析 【免费下载链接】aws-devops-zero-to-hero AWS zero to hero repo for devops engineers to learn AWS in 30 Days. This repo includes projec...

gitblog_00346的博客 379

MTK metadata中AF模块的移除与配置调整

本文详细介绍了在MTK平台Camera开发中如何移除metadata中的AF(自动对焦)模块。通过系统清理MTK_CONTROL_AF_REGIONS、MTK_CONTROL_MAX_REGIONS等关键配置项,并调整对焦模式及硬件特性声明,确保定制化设备在禁用自动对焦功能后的稳定运行。

q1w3e5r7t9y的博客 570

TypeScript版LangChain环境配置全攻略:从零搭建AI应用开发环境

大语言模型(LLM)作为当前AI应用开发的核心技术,通过API接口为开发者提供了强大的自然语言处理能力。其工作原理基于Transformer架构,通过预训练和微调实现对人类语言的深度理解与生成。在工程实践中,开发者需要将LLM与外部工具、数据源和业务逻辑有效集成,这正是LangChain框架的技术价值所在——它提供了标准化的组件和接口,简化了复杂AI应用的构建流程。应用场景涵盖智能客服、内容生成、数据分析助手等多个领域。本文聚焦于TypeScript/JavaScript生态下的LangChain开发,详细

weixin_29055699的博客 253

Amazon Elastic Container Service (ECS)

Amazon ECS是 AWS 提供的高度可扩展、灵活且托管的容器编排服务,支持 Docker 容器并能够与 AWS 的各项服务紧密集成。ECS 为开发者提供了一种简化、自动化的方式来部署和管理容器化应用,尤其适合构建微服务架构和自动扩展的云原生应用。无论是使用 EC2 模式还是 Fargate 模式,ECS 都能够满足不同需求的容器部署和管理需求。

HaoHao_010的博客 1432

锂电池SOH预测 | 基于BP神经网络的锂电池SOH预测(附matlab完整源码)

锂电池SOH预测 | 基于BP神经网络的锂电池SOH预测(附matlab完整源码)

天天酷科研的博客 1114

亚马逊云国际站代理商:亚马逊云计算服务视频

AWS亚马逊云是亚马逊公司旗下的云计算服务平台。它提供了一系列全球领先的云端解决方案,包括计算、存储、数据库、人工智能、物联网等服务。无论是初创企业还是大型企业,AWS都可以为其提供强大的云计算基础设施和工具,帮助企业实现业务的创新和快速发展。作为全球领先的云计算服务平台,AWS亚马逊云凭借其弹性伸缩、安全性、全球覆盖和大规模数据处理等优势成为用户首选。同时,AWS还通过简单易用的界面、丰富的服务选择、灵活可定制的解决方案和成本优势等方面提供了卓越的用户体验。

聚搜云_上海聚搜信息技术有限公司 455

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet,在计算机视觉领域,卷积神经网络(Convolutional Neural Network,CNN)已然成为推动众多任务发展的核心力量。从早期简单的图像识别,到如今复杂的目标检测、语义分割、图像生成等任务,CNN 都展现出了卓越的性能。CNN 的发展历程见证了一系列经典模型的诞生,其中 LeNet 作为开山之作,为 CNN 的发展奠定了基础,而 ResNet 则通过创新性的设计,突破了传统神经网络的限制,使得网络能够构建得更深、性能更优。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

我用 GPT-5.5 十分钟搞定一篇文献综述!附全流程指南

每一个框架中提出的逻辑链接,都必须至少有一篇提供文本中的文献作为支撑、严格禁止虚构变量、逻辑关系或研究结果、如果某些变量或关系在文本中未提及,必须明确声明“在提供的文本中未找到相关信息”、引用格式必须严格遵循原文提供的“作者/年份”格式,例如:[Smith, 2022]。各位同仁好,我是七哥。扫描提供的文献摘要,识别存在冲突的结果或理论、分析这些文献之间的差异,并总结可能导致差异的原因、输出一个结构化的学术争论段落,清楚呈现文献间的分歧和潜在影响因素、对于缺失或不明确的信息,按约束条件如实标注。

智能AI让学术科研更容易 370

终极指南:如何在AWS无服务器架构上部署code-server(Lambda+CloudFront实战)

code-server是一个能让你在浏览器中运行VS Code的开源项目,通过AWS无服务器架构部署code-server可以获得弹性扩展、按需付费和高可用性的优势。本指南将带你一步步完成基于Lambda和CloudFront的code-server部署方案,即使是新手也能轻松掌握。 ## 📋 准备工作:AWS账号与基础环境配置 在开始部署前,请确保你已完成以下准备: - 拥有AWS账号并具

gitblog_00036的博客 689

通过理解 sk_buff 深入掌握 Linux 内核自定义协议族的开发实现

在。

数字人生 458

13-云原生大数据架构介绍:大数据世界的“弹性城市”

云原生(Cloud Native)是一种构建和运行应用程序的方法,它充分利用了云计算的优势。容器化:应用程序及其依赖被打包在容器中,确保在任何环境中都能一致运行。(类比:标准化的集装箱)微服务:应用程序被拆分为小型、独立的服务,每个服务都可以独立开发、部署和扩展。(类比:城市中的各个功能区)自动化:通过CI/CD流水线实现自动化部署和运维。(类比:城市的智能管理系统)弹性:根据负载自动扩展或收缩资源。(类比:城市的弹性基础设施)云原生大数据架构就像是大数据世界的弹性城市更加灵活。

喜气“迎”门 722

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

AIGC 内容审核流水线初上线只拦住 5%?我靠 Lambda 重构把拦截率提到 15%

公司上线AIGC功能,我搭建的敏感词审核流水线只拦住了5%高风险输出,用户投诉不断。后来靠着Lambda的无服务器架构和生成式AI审核模型,重构流水线将拦截率提到15%,误杀率从22%降到4.8%。文中分享了第一版翻车经历、如何通过机器学习课程补上特征工程与模型护栏知识,以及最终可落地的五条审核建议。

weixin_47315004的博客 13

OV9734 DATASHEET,完整规格书

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

AWS服务介绍与基本使用

​ AWS(Amazon Web Services)是亚马逊公司推出的 全球领先云服务平台 ,提供超过200项全面、广泛使用的云服务1。它为企业和个人用户提供 高性能、可扩展、经济实惠的基础设施 ,涵盖计算、存储、数据库等多个领域3。AWS旨在帮助用户 降低运营成本、提高业务敏捷性并加速创新 ,已成为众多初创公司、大型企业和政府机构的首选云服务提供商

2401_86544677的博客 1503

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

不同场景下的弹性伸缩

弹性伸缩是公有云和Kubernetes独有的特性,如何设计使用弹性伸缩是SRE工作的重点之一。

mujingluo的博客 1260

如何实现云计算中的弹性伸缩?

在传统的计算模式中,企业需要预先购买大量的计算资源,以便能够满足其业务的高峰需求。综上所述,弹性伸缩是云计算中非常重要的一个特性,它能够实现资源的动态管理和优化,为企业提供高效、安全、可靠的云计算服务。随着云计算技术的不断发展,弹性伸缩将会在未来扮演越来越重要的角色,为企业带来更多的便利和效益。总之,弹性伸缩是云计算中非常重要的一个特性,它能够实现资源的动态管理和优化,为企业提供高效、安全、可靠的云计算服务。在未来,随着技术的不断发展,弹性伸缩将会扮演更加重要的角色,为企业带来更多的便利和效益。

weixin_41888295的博客 1969
上一篇: 如何通过 CloudCanal 实现从 Kafka 到 AutoMQ 的数据迁移
下一篇: 海外开发者为 AutoMQ 写的精品介绍,太干了!
AutoMQ
博客等级 码龄3年 1206粉丝 157原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值