Dubbo是什么

Dubbo原理和机制详解(非常全面) 最全图文详解Dubbo的原理机制,彻底搞懂吃透Dubbo核心功能、Dubbo核心组件、Dubbo的架构设计、Dubbo调用流程等重要核心知识点,可以让我们更好地掌握和使用 Dubbo。。 阅读详情
AI摘要

本文深入探讨了Dubbo分布式服务框架的核心概念、主要功能、架构设计、使用方法及性能优化,包括远程通讯、集群容错、服务自动注册与发现等关键特性。详细介绍了如何通过Spring配置声明暴露服务,以及服务提供者和服务消费者之间的调用流程。

1. Dubbo是什么?

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)
其核心部分包含:
1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

2. Dubbo能做什么?

1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。      
2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
3. 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

之前使用Web Service,我想测试接口可以通过模拟消息的方式通过soapui或LR进行功能测试或性能测试。但现在使用Dubbo,接口之间不能直接交互,我尝试通过模拟消费者地址测试,结果不堪入目,再而使用jmeter通过junit进行测试,但还是需要往dubbo上去注册,如果再不给提供源代码的前提下,这个测试用例不好写啊....

 

3. dubbo的架构

dubbo 架构图如下所示:
 

 

 

节点角色说明:

       Provider: 暴露服务的服务提供方。

       Consumer: 调用远程服务的服务消费方。

       Registry: 服务注册与发现的注册中心。

       Monitor: 统计服务的调用次调和调用时间的监控中心。

       Container: 服务运行容器。

这点我觉得非常好,角色分明,可以根据每个节点角色的状态来确定该服务是否正常。

调用关系说明:

0 服务容器负责启动,加载,运行服务提供者。

1. 服务提供者在启动时,向注册中心注册自己提供的服务。
2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

dubbo的容错性显而易见,性能方面还没有还得及测,我们系统某页面需要掉5次接口,本来想建议做个缓存,但业务关系不能采纳,还需要研究下dubbo的性能调优问题...

4. dubbo使用方法。

Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。如果不想使用Spring配置,而希望通过API的方式进行调用(不推荐)

下面我们就来看看spring配置方式的写法:

服务提供者:

1. 下载zookeeper注册中心,下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/  下载后解压即可,进入D:\apach-zookeeper-3.4.5\bin,

双击zkServer.cmd启动注册中心服务。

2. 定义服务接口: (该接口需单独打包,在服务提供方和消费方共享)

 

 下面这个例子不错,写的很详细可以做个model.

  1. package com.unj.dubbotest.provider;  
  2.   
  3. import java.util.List;  
  4.   
  5. public interface DemoService {  
  6.   
  7.     String sayHello(String name);  
  8.   
  9.     public List getUsers();  
  10.   
  11. }  


在服务提供方实现接口:(对服务消费方隐藏实现)

 

  1. package com.unj.dubbotest.provider;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.LinkedList;  
  5. import java.util.List;  
  6.   
  7.   
  8. public class DemoServiceImpl implements DemoService{  
  9.       
  10.      public String sayHello(String name) {  
  11.             return "Hello " + name;  
  12.      }  
  13.      public List getUsers() {  
  14.          List list = new ArrayList();  
  15.          User u1 = new User();  
  16.          u1.setName("jack");  
  17.          u1.setAge(20);  
  18.          u1.setSex("男");  
  19.            
  20.          User u2 = new User();  
  21.          u2.setName("tom");  
  22.          u2.setAge(21);  
  23.          u2.setSex("女");  
  24.            
  25.          User u3 = new User();  
  26.          u3.setName("rose");  
  27.          u3.setAge(19);  
  28.          u3.setSex("女");  
  29.            
  30.          list.add(u1);  
  31.          list.add(u2);  
  32.          list.add(u3);  
  33.          return list;  
  34.      }  
  35. }  

 

用Spring配置声明暴露服务:
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.         http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.         http://code.alibabatech.com/schema/dubbo  
  8.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd  
  9.         ">  
  10.    
  11.     <!-- 具体的实现bean -->  
  12.     <bean id="demoService" class="com.unj.dubbotest.provider.DemoServiceImpl" />  
  13.       
  14.     <!-- 提供方应用信息,用于计算依赖关系 -->  
  15.     <dubbo:application name="xixi_provider"  />  
  16.    
  17.     <!-- 使用multicast广播注册中心暴露服务地址   
  18.     <dubbo:registry address="multicast://224.5.6.7:1234" />-->  
  19.     
  20.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
  21.     <dubbo:registry address="zookeeper://127.0.0.1:2181" />   
  22.     
  23.     <!-- 用dubbo协议在20880端口暴露服务 -->  
  24.     <dubbo:protocol name="dubbo" port="20880" />  
  25.    
  26.     <!-- 声明需要暴露的服务接口 -->  
  27.     <dubbo:service interface="com.unj.dubbotest.provider.DemoService" ref="demoService" />  
  28.       
  29. </beans>  
加载Spring配置,启动服务:
  1. package com.unj.dubbotest.provider;  
  2.   
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  4.   
  5. public class Provider {  
  6.    
  7.     public static void main(String[] args) throws Exception {  
  8.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});  
  9.         context.start();  
  10.    
  11.         System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟  
  12.     }  
  13.    
  14. }  

服务消费者:

 applicationContext-dubbo.xml 中注册自己需要调用的接口,我刚开始测试的时候需要的接口很多,所以把这个文件写的满满的,后来熟悉了把接口按业务类型分开,写了N多个 applicationContext-dubbo-***.xml 简练多了 》。 

 

1.通过Spring配置引用远程服务:
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  5.         http://www.springframework.org/schema/beans/spring-beans.xsd  
  6.         http://code.alibabatech.com/schema/dubbo  
  7.         http://code.alibabatech.com/schema/dubbo/dubbo.xsd  
  8.         ">  
  9.   
  10.     <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->  
  11.     <dubbo:application name="hehe_consumer" />  
  12.   
  13.     <!-- 使用zookeeper注册中心暴露服务地址 -->  
  14.     <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->  
  15.     <dubbo:registry address="zookeeper://127.0.0.1:2181" />  
  16.   
  17.     <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->  
  18.     <dubbo:reference id="demoService"  
  19.         interface="com.unj.dubbotest.provider.DemoService" />  
  20.   
  21. </beans>  

2.加载Spring配置,并调用远程服务:
  1. package com.alibaba.dubbo.demo.pp;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  6.   
  7. import com.unj.dubbotest.provider.DemoService;  
  8.   
  9. public class Consumer {  
  10.   
  11.     public static void main(String[] args) throws Exception {  
  12.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(  
  13.                 new String[] { "applicationContext.xml" });  
  14.         context.start();  
  15.   
  16.         DemoService demoService = (DemoService) context.getBean("demoService"); //  
  17.         String hello = demoService.sayHello("tom"); // ִ  
  18.         System.out.println(hello); //   
  19.   
  20.         //   
  21.         List list = demoService.getUsers();  
  22.         if (list != null && list.size() > 0) {  
  23.             for (int i = 0; i < list.size(); i++) {  
  24.                 System.out.println(list.get(i));  
  25.             }  
  26.         }  
  27.         // System.out.println(demoService.hehe());  
  28.         System.in.read();  
  29.     }  
  30.   
  31. }  

调用结果为:

 


dubbo管理页面:

这个管理页面还需要部署一个环境的,一开始我还以为是dubbo自带的,找了半天没有找到....

 


 

 

 

 

应用页面:

 

 

 

 

提供者页面:

 

 

 

 

消费者页面:

 

 

 

 

服务页面:

测试是否成功,我觉得只要看看状态是否正常,就ok了 ....

 

案例代码下载:http://download.youkuaiyun.com/detail/yiyu1/7116319

 
 

 

 

 

 

敏捷测试团队,不再仅仅是在coding之后。而是和研发人员贯穿在需求分析、规格说明、自动化单元测试、自动化验收测试、静态代码分析、技术债等环节中。所以敏捷项目必定在将来效率的趋势下成为主流。
Dubbo Dubbo是阿里巴巴公司开源的一个高性能、轻量级的 Java RPC 框架。致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。 阅读详情

相关推荐

Java Dubbo:(六)Dubbo 监控与管理

Dubbo 监控与管理1.监控平台: dubbo-monitor1.1 Dubbo Monitor 简介1.2 Dubbo Monitor 的使用(版本2.5.3)1.3 启动 Monitor1.4Monitor 监控界面2.管理控制台:dubbo-admin2.1 Dubbo-Admin 简介2.2 Dubbo Admin 的使用2.3 启动 Admin2.4 Admin 管理界面 1.监控平台: dubbo-monitor 1.1 Dubbo Monitor 简介 主要用来统计服务的调用次数和调用时间

地球村 736

Dubbo入门---搭建一个最简单的Demo框架

Dubbo背景和简介Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本。 缺点:单一的系统架构,使得在开发过程中,占用的资源越来越多,而且随着流量的增加越来越难以维护 垂直应用框架(MVC) 垂直应用架构解决了单一应用架构所面临的扩容问题,流量能够分散到各个子系统当中,且

noaman_wgs的博客 51万+

电机控制——PMSM无感FOC控制(一)FOC入门

FOC 是一种电机控制技术,全称为 Field Oriented Control(磁场定向控制),也称作矢量控制。该技术可以提高电机的效率、控制稳定性和精度,广泛应用于电机驱动系统中,是目前无刷直流电机(BLDC)、永磁同步电机(PMSM)、感应电机的高效控制的最优方法之一。本节主要讲了FOC的大致流程,带大家先了解FOC到底是个什么东西在做什么,各个模块具体的原理会放到后面的章节详细讲解。FOC其实就是通过控制,相电流按照正弦变化,从而产生出旋转的磁场,控制电机转子转动。

zhuxinmingde的博客 2624

dubbo使用教程(可直接应用于企业开发)

本dubbo使用教程基于zookeeper-3.4.9搭建,包含服务提供者DubboProvider、和消费者DubboConsumer,可直接在Tomcat上运行。DubboProvider对外开放2个接口,DubboConsumer调用DubboProvider,并对外暴露HTTP服务。DubboProvider还提供了对数据库的操作,基于SpringJDBC并加入了RowMapper通用类,

zxiaofan.com 4万+

SKF SimPro Quick 4.8.1发布

发布说明可以在SimPro手册的SKF SimPro Quick应用程序的一般部分下找到(帮助→SKF SimPro快速手册→一般→发布说明)。请删除旧版本,请备份您存储在C:\SKF SimPro xxx\files文件夹中的文件以及所有自定义报告模板和表格。我们很高兴地通知您,我们的轴承应用工程软件SKF SimPro Quick 4.8.1可供下载。将新的安装文件下载到本地计算机后,双击它安装向导将打开(按照说明操作)3.安装后,在本地机器上启动SKF SimPro Expert软件。

小韩的博客 1818

RK3588S开发板实战:手把手教你调试IMX415摄像头(附常见问题排查)

本文提供了基于RK3588S开发板调试IMX415摄像头的完整实战指南。从硬件连接到软件配置,详细解析了设备树(DTS)设置、驱动加载验证及V4L2工具链使用,并附带了常见问题排查方法,帮助开发者快速解决摄像头调试中的典型问题,实现图像采集与性能调优。

assembly8low的博客 594

Dubbo(从入门到掌握)看完这一篇就够了

Dubbo是阿里巴巴公司开源的一个高性能、轻量级的 Java RPC 框架。致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。

西敏寺的乐章的博客 2万+

测试 Wi-Fi、蓝牙性能

前几天去原厂测试了 Wi-Fi 和蓝牙的性能,现在把了解到的知识总结一下 RF通路新理解 RF通路一般分为两部分:芯片端、天线端 芯片端 芯片端包括芯片+芯片出来的RF匹配电路,是来调芯片的阻抗匹配的。 天线端 天线前一般也会有一段天线匹配电路,是留给天线调天线的阻抗匹配的。 调试的时候是两部分分开调试的,下面调试的就是芯片端。 测试“阻抗匹配”用网络分析仪看史密斯圆图 测试...

撒哈拉的初学者的博客 1万+

Dubbo是什么?Dubbo干什么?Dubbo怎么用?

Dubbo是什么? Dubbo官网地址:http://dubbo.apache.org Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。 什么是RPC? RPC全称为remote procedure call,即远程过程调用。比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在一个内存空间,不能直接调用

好学而不勤问非真好学者 5万+

ardupilot SBUS输入捕获

本节主要记录ardupilot 的sbus 输入捕获功能。ardupilot 默认支持多种无线协议控制输入设备,比如常用的PPM,SBUS,IBUS,DSM,SUMD,SRXL等协议,本节主要讲解ardupilot 如何通过定时器的pwm输入捕获来获取sbus数据。

陌城烟雨 270

【k8s故障处理篇】calico-node启动失败“Felix is not live: Get “http://localhost:9099/liveness” 解决办法(V1.30.3版本)

【k8s故障处理篇】calico-node启动失败“Felix is not live: Get “http://localhost:9099/liveness” 解决办法(V1.30.3版本)

jks212454的博客 1091

精通Dubbo——Dubbo支持的协议的详解

Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。下面我们就针对Dubbo的每种协议详解讲解,以便我们在实际应用中能够正确取舍。dubbo协议缺省协议,使用基于mina1.1.7+hessian3.2.1的tbremoting交互。 连接个数:单连接 连接方式:长连接 传输协议

路漫漫,水迢迢 7万+

晶体管-二极管三极管MOS管选型参数总结

二极管三极管和MOS管,是电路中常用的控制电流电压的基本电子元器件。电路世界中晶体管的选型,需要考虑的参数多种多样,这些参数的选择会直接影响到电路的性能、稳定性、成本等多个方面。本文对二极管三极管和MOS管的选型参数进行详细介绍并总结。

fydar的博客 884

Apache Dubbo 带你去dubbo的世界走一遭_dubbo hub

通过API编码方式组装配置,启动Dubbo,发布及订阅服务,API属性与XML配置项一一对应,比如:ApplicationConfig.setName(“xxx”)对应<dubbo:applicationname=“xxx”/>。当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。

2501_90326514的博客 778

C#操作MySQL从入门到精通(1)——安装MySQL数据库

我们使用C#操作MySQL数据库第一步要做的就是安装MySQL数据库,本文就是详细讲解如何安装MySQL数据库。

qq_34059233的博客 963

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Dubbo Admin整合Nacos、Dubbo

1.服务提供者 1.依赖 版本号为2.2.7.REALEASE <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> </dependency> 2.配置文件 网上大多数配置都是用的zookeeper,笔者之

qq_42739776的博客 5611

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Dubbo 及Dubbo-Admin部署

Dubbo 介绍及 Dubbo-Admin 部署

weixin_45881674的博客 1699

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Dubbo—dubbo admin安装

dubbo admin介绍:Dubbo Admin 运维指南 | Apache Dubbo 1.所需依赖介绍   Dubbo-admin是Dubbo RPC框架的“管理端”,可以对注册的服务(provider)和服务调用方(comsumer)进行服务治理,包括路由、监控、配置等功能;   Dubbo一般都是使用zookeeper来进行管理服务注册,而dubbo-admin查看哪些注册了哪些服务,也是需要从zk上查询的,所以Dubbo-admin需要依赖于zookeeper;   另外,Dubbo-a

sanmi8276的博客 2571

【Dubbo】dubbo学习

一、分布式和微服务 1.1 什么是分布式 分布式是一种系统部署方式,即根据实际情况将项目拆分成多个不同的服务,并分散部署在不同的机器是。在分布式中,生产环境的服务器或虚拟机必定超过一台。 分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署。 .

qq_34416331的博客 720

Dubbo——Dubbo面试问题

摘要 主要是介绍一些有关于的Dubbo的RPC的面试问题 Dubbo服务提供者发布服务的流程 1) 暴露服务到本地 2) 暴露服务到远程 3) 启动netty服务 4) 连接zookeeper 5) 注册服务到zookeeper 6) 监听zookeeper中消费服务 Dubbo服务消费者消费服务的流程 什么是本地暴露和远程暴露,他们的区别 下面来看本地暴露于远程暴露的区别:本地暴露是暴露在本机JVM中,调用本地服务不需要网络通信.远程暴露是将ip,端口等信息暴露给远程客

庄小焱 1801

Dubbo安装部署

Dubbo入门Demo 这里主要采用Dubbo与Zookeeper、SpringBoot框架整合。 步骤: 1. 安装Zookeeper 2. 创建Maven项目,服务提供者和服务消费者,并与ZK、Dubbo整合 3. 部署Dubbo-admin、Dubbo-Monitor实现管理和监控 一、 Zookeeper安装 Zookeeper是一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据,这里能很好的作为Dubbo服务的注册中心。 Dubbo能与Zookeeper做到集群部署,当提供者出现

m0_60721514的博客 1739

Dubbo管理监控服务——Dubbo-admin

最近学习使用Dubbo和zookeeper组成的微服务和注册中心的服务模式,关于服务的监控服务老一点的教程上选用了Dubbo-ops的服务。但是最近在dubbo的git上已经找不到关于ops的身影了,我这里是采用dubbo-admin作为管理服务。 一、环境准备工作: zookeeper、maven、tomcat 下载dubo-admin,github地址: apache/dubbo at dubbo-2.6.0 (github.com)https://github....

Jessy_Huang的博客 1152

Dubbo源码阅读——dubbo配置解析原理

dubbo的配置解析过程集成了spring框架的能力,本文介绍dubbo的几种配置方式,配置项,配置方式优先级,配置项属性优先级,以及从xml配置方式解读dubbo解析dubbo标签的源码,深入理解dubbo配置解析的详细细节和设计模型。

yozzs的博客 1354

Dubbo入门-Dubbo Demo演示

关于本文 本文是一个dubbo的入门demo,目的在于快速入门 Dubbo是什么 一款分布式服务框架 高性能和透明化的RPC远程服务调用方案 SOA服务治理方案 Dubbo入门Demo 了解了Dubbo以后,自然要搭建一个简单的Demo实现。 由于Dubbo需要一个注册中心,本文采用的是Zookeeper. 主要是以下几个步骤: 安装Zookeeper,启动; 创建MAVEN项目,构建Dub...

诺浅的专栏 1147
上一篇: dubbo(provider,consumer)点到点直连配置
下一篇: 远程调用框架dubbo
ichsonx
博客等级 码龄19年 202粉丝 74原创
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值