阿里开源限流组件 Sentinel 集群流控全解析

Sentinel高可用集群搭建 目录 一、前言 二、集群搭建 1、环境 2、配置文件介绍 3、实验中的sentinel配置 4、启动sentinel: 5、sentinel原理 6、运行测试 三、sentinel核心概念 1、Leader选举 3、命令查看、修改 4、修改:包括参数 四、增加或删除Sentinel 1、增加sentinel 2、删除旧master或者不可达slave 五、总结 六、sentinel.conf配置详解 一、前言 sentinel是一个"监视器",根据被监视实例的身份和 阅读详情
AI摘要

深入探讨Sentinel 1.4.0引入的集群流控功能,涵盖独立与嵌入模式部署、动态规则源配置、控制台管理及快速使用指南,助力精准控制集群QPS。

为什么需要集群流控功能?

假设我们希望给某个用户限制调用某个 API 的总 QPS 为 50,但机器数可能很多(比如有 100 台)。这时候我们很自然地就想到,找一个 server 专门用来统计总的调用量,其它的实例都与这台 server 通信以判断是否可以调用。这就是最基础的集群流控的方式。

那么这个 server 如何部署呢?最直观的方式就是作为独立的 token server 进程启动,独立部署:

640?wx_fmt=jpeg

另一种就是嵌入模式(Embedded),即作为内置的 token server 与服务在同一进程中启动,无需单独部署:

640?wx_fmt=png

此外,集群流控还可以解决流量不均匀导致总体限流效果不佳的问题。

假设集群中有 10 台机器,我们给每台机器设置单机限流阈值为 10 QPS,理想情况下整个集群的限流阈值就为 100 QPS。不过实际情况下流量到每台机器可能会不均匀,会导致总量没有到的情况下某些机器就开始限流:

640?wx_fmt=png

因此,仅靠单机维度去限制的话会无法精确地限制总体流量。而集群流控可以精确地控制整个集群的调用总量,结合单机限流兜底,可以更好地发挥流量控制的效果。

Sentinel的集群流控功能是什么?

Sentinel 1.4.0 开始引入了集群流控模块,主要分为两个部分:

  • Token Client: 即集群流控客户端,用于向所属 Token Server 通信请求 token。集群限流服务端会返回给客户端结果,决定是否限流。Sentinel 集群流控的通信底层采用 Netty 实现。

  • Token Server: 即集群流控服务端,处理来自 Token Client 的请求,根据配置的集群规则判断是否应该发放 token(是否允许通过)。

Sentinel 集群流控支持限流规则和热点规则两种规则,并支持两种形式的阈值计算方式:

  • 集群总体模式:即限制整个集群内的某个资源的总体 QPS 不超过此阈值。

  • 单机均摊模式:单机均摊模式下配置的阈值等同于单机能够承受的限额,Token Server 会根据连接数来计算总的阈值(比如独立模式下有 3 个 client 连接到了 token server,然后配的单机均摊阈值为 10,则计算出的集群总量就为 30),按照计算出的总的阈值来进行限制。这种方式根据当前的连接数实时计算总的阈值,对于机器经常进行变更的环境非常适合。

如何使用Sentinel的集群流控功能?

部署方式

Sentinel 集群流控服务端支持独立模式(Alone)以及嵌入模式(Embedded)。两者的优缺点对比:

  • 独立模式作为独立的 token server 进程启动,独立部署,隔离性好,但是需要额外的部署操作。独立模式适合作为 Global Rate Limiter 给整个集群提供流控服务。

  • 嵌入模式作为内置的 token server 嵌入到应用进程中。嵌入模式下集群中各个实例都是对等的,token server 和 client 可以随时进行转变,无需单独部署,灵活性比较好。但缺点就是隔离性不佳,需要限制 token server 的总 QPS,防止影响应用本身。嵌入模式适合某个应用集群内部的流控。

Sentinel 提供 API 来对 client / server 进行配置以及指定模式,但是机器多的时候不方便进行管理。一般我们需要通过 Sentinel 控制台的集群流控管理功能来统一管理某个应用集群下所有的 token server 和 token client,灵活进行分配。

配置

配置是集群流控中比较重要的一部分。Sentinel 集群流控的配置主要包含几部分:

  • 集群规则配置

集群规则配置需要借助动态规则源。以集群流控规则为例,对于客户端,我们可以用之前的方式向 FlowRuleManager 注册动态规则源。而对于 Token Server,我们需要向集群规则管理器 ClusterFlowRuleManager 注册规则源。我们推荐的方式是在应用端注册动态规则源,然后在 Sentinel 控制台直接推送规则到配置中心,即 push 模式:

640?wx_fmt=png

  • Token Server / Client 的分配

以嵌入模式为例,一个比较好的实践是:结合流量分布和实时负载情况来在服务集群中选取几台较为空闲的机器作为 Token Server,其它的机器作为 Token Client,划分成几组,分别归属各自的 Token Server 管理。最后组成一个映射表,类似于:

// ip: token server IP, port: token server port, clientSet: 所管辖的 token client 集合
[{"clientSet":["112.12.88.66@8729","112.12.88.67@8727"],
  "ip":"112.12.88.68",
  "machineId":"112.12.88.68@8728",
  "port":11111}]

640?wx_fmt=png

然后像 Token Client / Token Server 通信配置、集群流控模式等配置源都可以监听这个分配映射表对应的数据源,来解析自己的身份和相关通信配置。当分配映射表变更时每台机器对应的身份和配置也会实时变更,实时生效。Sentinel 1.4.1 改进了 Sentinel 控制台集群流控的管理页面,可以直接以应用维度来分配 Token Server。可以参考本文后面的指引来使用。

  • 其它配置

其它的配置比如 Token Server 的命名空间集合(namespace set,用于指定该 Token Server 可以为哪些应用/分组服务)、最大允许的总 QPS 等,既可以通过 Sentinel 预留的 HTTP API 来变更配置,也可以通过注册动态配置源来进行配置。

快速使用集群流控

下面我们来看一下如何快速使用集群流控功能。接入集群流控模块的步骤如下:

(1)引入集群流控依赖

这里我们以嵌入模式来运行 token server,即在应用集群中指定某台机器作为 token server,其它的机器指定为 token client。首先我们引入集群流控相关依赖:

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-cluster-client-default</artifactId>
    <version>1.4.1</version>
</dependency>
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-cluster-server-default</artifactId>
    <version>1.4.1</version>
</dependency>

(2)配置动态规则源

要想使用集群流控功能,我们需要在应用端配置动态规则源,并通过 Sentinel 控制台实时进行推送。流程如下所示:

640?wx_fmt=png

以流控规则为例,假设我们使用 ZooKeeper 作为配置中心,则可以向客户端 FlowRuleManager 注册 ZooKeeper 动态规则源:

var transformer = source 

另外,我们还需要针对 Token Server 注册集群规则数据源。由于嵌入模式下 token server 和 client 可以随时变换,因此我们只需在每个实例都向集群流控规则管理器ClusterFlowRuleManager注册动态规则源即可。Token Server 抽象出了命名空间(namespace)的概念,可以支持多个应用/服务,因此我们需要注册一个自动根据 namespace 创建动态规则源的生成器:

// Supplier 会根据 namespace 生成的动态规则源,类型为 SentinelProperty<List<FlowRule>>,针对不同的 namespace 生成不同的规则源(监听不同 namespace 的 path).
// 默认 namespace 为应用名(project.name)
// ClusterFlowRuleManager 针对集群限流规则,ClusterParamFlowRuleManager 针对集群热点规则,配置方式类似
ClusterFlowRuleManager.setPropertySupplier(namespace -> {
    return new SomeDataSource(address, dataIdPrefix + namespace).getProperty();
});

(3)控制台进行改造适配动态规则源

我们只需简单对 Sentinel 控制台进行改造即可直接将流控规则推送至配置中心。从 Sentinel 1.4.0 开始,Sentinel 控制台提供 DynamicRulePublisher 和 DynamicRuleProvider  接口用于实现应用维度的规则推送和拉取,并提供了 Nacos 推送的示例(位于 test 目录下)。我们只需要实现自己的 DynamicRulePublisher 和 DynamicRuleProvider接口并在 FlowControllerV2类中相应位置通过 @Qualifier注解指定对应的 bean name 即可,类似于:

@Autowired
@Qualifier("flowRuleNacosProvider")
private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;

@Autowired
@Qualifier("flowRuleNacosPublisher")
private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;

Sentinel 控制台提供应用维度推送的页面(/v2/flow)。在上述配置完成后,我们可以在此页面向配置中心推送规则:

640?wx_fmt=png

(4)控制台分配 Token Server

当上面的步骤都完成后,我们就可以在 Sentinel 控制台的“集群流控” Token Server 列表页面管理分配 token server 了。假设我们启动了三个应用实例,我们选择一个实例为 token server,其它两个为 token client:

640?wx_fmt=png

页面上机器的显示方式为 ip@commandPort,其中 commandPort 为应用端暴露给 Sentinel 控制台的端口。选择好以后,点击 保存 按钮,刷新页面即可以看到 token server 分配成功:

640?wx_fmt=png

并且我们可以在页面查看 token server 的连接情况:

640?wx_fmt=png

(5)配置规则,观察效果

接下来我们配置一条集群限流规则,限制 com.alibaba.csp.sentinel.demo.cluster.app.service.DemoService:sayHello(java.lang.String)  资源的集群总 QPS 为 10,选中“是否集群”选项,阈值模式选择总体阈值:

640?wx_fmt=png

模拟流量同时请求这三台机器,过一段时间后观察效果。可以在监控页面看到对应资源的集群维度的总 QPS 稳定在 10。

640?wx_fmt=png

还有哪些问题需要注意?

集群流控能够精确地控制整个集群的 QPS,结合单机限流兜底,可以更好地发挥流量控制的效果。

还有更多的场景等待大家发掘,比如:

  • 在 API Gateway 处统计某个 API 的总访问量,并对某个 API 或服务的总 QPS 进行限制

  • Service Mesh 中对服务间的调用进行全局流控

  • 集群内对热点商品的总访问频次进行限制

尽管集群流控比较好用,但它不是万能的,只有在确实有必要的场景下才推荐使用集群流控。

另外若在生产环境使用集群限流,管控端还需要关注以下的问题:

  • Token Server 自动管理(分配/选举 Token Server)

  • Token Server 高可用,在某个 server 不可用时自动 failover 到其它机器

未来我们还计划实现集群流控多语言版本的客户端,并对接 Service Mesh,让 Sentinel 集群流控可以在更多场景下使用。

本文作者:宿何,社区昵称sczyh30,阿里巴巴高可用架构组开发工程师,目前主要负责Sentinel 开源项目的开发和社区维护。

qrcode?scene=10000004&size=102&__biz=MzU4NzU0MDIzOQ==&mid=100001772&idx=1&sn=b92b683261af1918406c5f0e6fde149a&send_time=

扫一扫关注阿里巴巴中间件

640?wx_fmt=png

【开源】Sentinel高性能高可用集群限流解决方案 Sentinel集群限流的高性能高可用解决方案。通过接入协调集群和实现容错策略解决其单点故障问题;支持动态集群限流,单节点可支撑千万业务流量;支持资源路由让Token Server节点资源能够得到充分的利用.... 阅读详情

相关推荐

Alibaba Sentinel - 集群流量控制

集群流控可以解决流量不均匀导致总体限流效果不佳的问题。假设集群中有10台机器,我们给每台机器设置单机限流阈值为10QPS,理想情况下整个集群的限流阈值就为100QPS。不过实际情况下流量到每台机器可能会不均匀,会导致总量没有到的情况下某些机器就开始限流。因此仅靠单机维度去限制的话会无法精确地限制总体流量。而集群流控可以精确地控制整个集群的调用总量,结合单机限流兜底,可以更好地发挥流量控制的效果。集群流控客户端,用于向所属TokenServer通信请求token。...

雨后是冰雹 2679

Sentinel 实战-集群限流

集群流控 假如你的应用有多个实例,那么你设置了限流的规则之后,每一台应用的实例都会生效相同的流控规则,如下图所示: 假设我们设置了一个流控规则,qps是10,那么就会出现如上图所示的情况,当qps大于10时,实例中的 sentinel 就开始生效了,就会将超过阈值的请求 block 掉。 上图好像没什么问题,但是细想一下,我们可以发现还是会有这样的问题: 假设集群中有 10 台机器,我们给每台机器设置单机限流阈值为 10 qps,理想情况下整个集群的限流阈值就为 100 qps。不过实际情况

javaDB_EAD的专栏 1万+

Sentinel限流黑科技揭秘:3种算法+5大核心组件=如何让服务在高并发下屹立不倒?

本文深入解析Sentinel在分布式系统中的限流机制,从核心组件到算法实现进行全面剖析。文章首先介绍Sentinel的5大核心组件(资源埋点、规则配置中心、统计指标、规则处理器和集群限流),详细阐述其在高并发场景下的作用原理。随后对比4种主流限流算法(固定窗口、滑动窗口、令牌桶和漏桶算法),重点分析滑动窗口算法如何实现毫秒级平滑限流。 通过7个核心组件解析、4种算法对比和12个代码示例,文章揭示了Sentinel在微服务架构中的实战价值,包括其多维度限流能力、动态规则配置优势和集群限流特性。最后总结Sent

java专栏 1854

Sentinel 发布里程碑版本,添加集群流控功能

自去年10月底发布GA版本后,Sentinel在近期发布了另一个里程碑版本v1.4(最新的版本号是v1.4.1),加入了开发者关注的集群流控功能。 集群流控简介 为什么要使用集群流控呢?假设我们希望给某个用户限制调用某个 API 的总 QPS 为 50,但机器数可能很多(比如有 100 台)。这时候我们很自然地就想到,找一个 server 来专门来统计总...

weixin_34363171的博客 529

流量防卫兵的内功心法:Sentinel 滑动窗口、插槽链、流控整形、熔断状态机与集群令牌的源码推演

本文以阿里开源的流量治理组件Sentinel为解剖对象,从一次大促雪崩复盘出发,沿统计、编排、判定、下发、协同五层主线拆解其实现:环形数组滑动窗口如何以极低成本统计实时指标,插槽链与SPI如何编排建节点、记统计、查规则,快速失败、匀速排队、冷启动预热三种整形的源码推导,熔断三态状态机与借鉴BBR的系统自适应保护,热点参数令牌桶与来源控制,推模式动态规则闭环,以及集群令牌服务的阈值类型与失效退回。文中数字均来自随附六个可运行程序,并给出十条生产落地经验,帮助读者看懂阈值的来历与熔断恢复的快慢。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 87万+

Docker拉取ubuntu22.04镜像使用ROS2 humble及仿真工具可视化进行导航

Docker中安装Ubun22以及ROS,gazebo可视化等

lovebc的博客 1678

sentinel限流_阿里开源限流组件 Sentinel 集群流控全解析

为什么需要集群流控功能?假设我们希望给某个用户限制调用某个 API 的总 QPS 为 50,但机器数可能很多(比如有 100 台)。这时候我们很自然地就想到,找一个 server 专门用来统计总的调用量,其它的实例都与这台 server 通信以判断是否可以调用。这就是最基础的集群流控的方式。那么这个 server 如何部署呢?最直观的方式就是作为独立的 token server 进程启动...

weixin_39520149的博客 950

Ansys Lumerical实战:5步搞定Mach-Zehnder调制器多物理场仿真(附眼图分析技巧)

本文详细介绍了使用Ansys Lumerical进行行波马赫-曾德尔调制器多物理场仿真的完整流程。通过CHARGE、MODE和INTERCONNECT三大模块的协同工作,从电学参数提取、光学射频特性分析到系统级眼图评估,分步解析了高效仿真与性能优化的核心技巧,为硅光调制器设计提供了实战指南。

weixin_29056781的博客 546

[转]阿里开源限流组件 Sentinel 集群流控全解析为什么需要集群流控功能?

sentinel集群模式

gb4215287的博客 623

Ubuntu安装pytorch3d的最便捷方法【原创】

Ubuntu安装pytorch3d的最便捷方法

qq_54900679的博客 2925

【网络】Ikuai中如何添加/更换虚拟机(图文)

Ikuai 添加虚拟机教程

qq_20623849的博客 6541

Sentinel - 集群流控:跨节点协调限流,解决单机规则不一致问题

摘要:Sentinel集群流控机制通过跨节点协调限流,有效解决了单机模式下规则不一致的问题。本文详细介绍了集群流控的必要性、核心原理及配置方法,包括集群服务器与客户端的交互流程、状态中心(Redis)的作用,以及具体的Java代码实现示例。通过统一规则管理和全局流量控制,Sentinel集群流控显著提升了微服务架构下的系统稳定性与可靠性。(150字)

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

深入解析postcss-px-to-viewport-8-plugin:如何精准控制响应式转换范围

本文深入解析了postcss-px-to-viewport-8-plugin插件在响应式开发中的核心痛点——如何精准控制单位转换范围。针对插件默认全局转换的问题,文章提供了两种实战解决方案:通过编写巧妙的exclude正则表达式实现“曲线救国”,或直接修改插件源码补全include功能。同时,文章还分享了在Next.js、Vite等现代框架中的集成要点及常见问题排查方法,帮助开发者实现“外科手术式”的精准样式转换。

yoga7的博客 910

深度解析阿里的Sentinel

这是《Spring Cloud 进阶》专栏的第五篇文章,这篇文章介绍一下阿里开源的流量防卫兵Sentinel,一款非常优秀的开源项目,经过近10年的双十一的考验,非常成熟的一款产品。sentinel顾名思义:卫兵;在Redis中叫做哨兵,用于监控主从切换,但是在微服务中叫做流量防卫兵。Sentinel 以流量为切入点,从流量控制熔断降级系统负载保护等多个维度保护服务的稳定性。丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一。

BUG指挥课堂 3416

C#实现串口通讯程序

1、自动获取本地串口。2、根据传入串口基本属性参数打开串口。3、串口数据的发送接收功能(ASCII和HEX格式)。4、ASCII和HEX相互转换。csharp体验AI代码助手代码解读复制代码[Category("UserProperty")] [Description("轮廓半径")] public int Radius { get => radius;

2401_89221445的博客 1767

100天精通Python(基础篇)——第22天:eval 函数基础以及危险警告

1. eval()函数的概念 2. eval()函数语法 3. 命名空间 4. 使用实例 1. 基本的数学运算 2. 字符串重复 3. 将字符串转换成列表 4. 将字符串转换成字典 5. 将字符串转成元祖 6. 与其它函数结合使用 7. globals参数案例 8. locals参数案例 5. eval函数的危险之处(重中之中)

努力让自己发光,对的人才能迎着光而来 15万+

阿里巴巴开源限流系统 Sentinel 全解析

阿里巴巴Sentinel是一个面向分布式系统的流量控制组件,通过滑动窗口、令牌桶等算法实现精准流量控制。其核心架构采用SlotChain责任链模式,包含资源定义、规则管理、指标统计等模块,支持流量控制、熔断降级、系统保护等功能。Sentinel提供多种流量控制模式(直接拒绝、预热、匀速排队)和熔断策略(慢调用比例、异常比例),并具备集群流控能力。通过SPI扩展机制支持自定义扩展,配合监控回调实现生产环境集成。其精巧的架构设计、先进的算法实现和全面的场景覆盖,使Sentinel成为微服务架构中保障系统稳定性的

油墨香^-^的博客 1061

INCA ProF文件解析

本博文从实际应用出发,介绍INCA prof文件的关键信息,通过实例,描述当得到一个刷写需求后,如何在不改变用户之前的使用习惯的前提下,满足原有的INCA刷写应用数据和标定程序的需求。 声明:本文不涉及项目名称,没有商业目的,纯属分享技术,乐享知识。

汽车电子软件领域知识分享 1万+

微服务保护之Sentinel安装、配置流控规则、流控效果详解、热点参数限流、线程隔离与熔断降级详细配置、访问请求授权、自定义异常处理超详细,学会Sentinel一篇足矣

默认情况下,发生限流、降级、授权拦截时,都会抛出异常到调用方。如果要自定义异常时的返回结果,需要实现/**处理请求被限流、降级、授权拦截时抛出的异常:*/voidthrowsException;而包含很多个子类,分别对应不同的场景异常说明限流异常热点参数限流的异常降级异常授权规则异常系统规则异常所以我们需要在中定义类,实现接口:@Component@OverrideString msg = "未知异常";msg = "请求被限流了!

weixin_64339548的博客 3561

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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

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

Sentinel 集群限流:分布式服务统一控流

Sentinel集群限流:分布式流量管控的终极解决方案 摘要:在分布式微服务架构中,传统单机限流面临流量分布不均和全局不可控的痛点。阿里开源的Sentinel通过"Token Server+Token Client"架构实现集群限流,采用集中统计、分布式执行的模式,完美解决分布式场景下的流量管控问题。本文详细解析了Sentinel集群限流的两大核心原理(集中化令牌管理和两种阈值计算模式),并提供了从环境部署到规则配置的完整实践指南。

码路同行 622

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Sentinel 原理-全解析

系列文章 Sentinel 原理-调用链Sentinel 原理-滑动窗口Sentinel 原理-实体类Sentinel 实战-限流篇Sentinel 实战-控制台篇Sentinel 实战-规则持久化Sentinel 实战-集群限流篇 Sentinel 系列教程,现已上传到 github 和 gitee 中: GitHub:https://github.com/all4you/sentinel...

lichao920926的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Sentinel 是如何做限流的

限流是保障服务高可用的方式之一,尤其是在微服务架构中,对接口或资源进行限流可以有效地保障服务的可用性和稳定性。之前的项目中使用的限流措施主要是Guava的RateLimiter。RateLimiter是基于令牌桶流控算法,使用非常简单,但是功能相对比较少。而现在,我们有了一种新的选择,阿里提供的Sentinel。Sentinel 是阿里巴巴提供的一种限流、熔断中间件,与RateLimiter相比,Sentinel提供了丰富的限流、熔断功能。

欢迎来到我的博客 1028

Sentinel集群流控实战:分布式环境下的流量治理解决方案

Sentinel是阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,在微服务治理场景中发挥着重要作用。今天我们将重点探讨Sentinel集群流控功能,这是分布式环境下实现精准流量治理的关键技术。 ## 📊 什么是集群流控? 在传统的单机流控模式下,每个服务实例独立进行流量控制,无法感知整个集群的总体流量情况。而Sentinel集群流控通过Token Server机制,实现了全局统

gitblog_00919的博客 499

Sentinel是如何限流的,还有哪几种限流的方式?

Sentinel 是通过滑动时间窗口计数 + 多种策略(如 QPS、线程数)来实现限流的,可以对资源(方法、接口、服务)进行精细化的流控设置,确保系统在高并发下的稳定性。

chenxuefeng_accp的专栏 1203
上一篇: 腾讯:阿里的大中台虽好,但也不是万能的!
下一篇: BAT 经典算法笔试题 —— 磁盘多路归并排序
码洞
博客等级 码龄10年 41粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值