docker中搭建Nacos2.0.3集群并使用mysql存储数据

注意:
1.Nacos集群比较对内存的消耗较大,建议对服务器进行升级,本人使用的是腾讯云4核8G,服务器配置过低,跑不起来
2.注意项目环境的版本,本人原本使用的是官方推荐的
SpringCloud (Hoxton.SR12)+Springboot(2.3.12.RELEASE)+Spring Cloud Alibaba(2.2.7.RELEASE)
但是.会出现NacosException: Client not connected,current status:STARTING的异常,所以必须将Spring Cloud Alibaba的版本换成2.2.1.RELEASE或者2.1.2.RELEASE或者2.2.6.RELEASE,不能使用官方的

一定要注意项目环境的版本,否则搭建了也跑不起来,我被坑了!!!

修改后本人使用的项目环境是:

依赖版本号
SpringCloudHoxton.SR12
Springboot2.3.12.RELEASE
Spring Cloud Alibaba2.2.6.RELEASE
Nacos2.0.3
  • 新建/usr/local/microservices/nacos目录,以下操作,均在该目录下进行
mkdir -p /usr/local/microservices/nacos/cluster/{nacos1,nacos2,nacos3}/{conf,logs}
  • 创建临时的nacos容器,以便复制出部分配置文件
docker run -d --name=nacostemp nacos/nacos-server:2.0.3
  • 拷贝配置文件, 将容器nginx.conf文件夹复制到宿主机
docker cp nacostemp:/home/nacos/conf /usr/local/microservices/nacos/cluster/nacos1
docker cp nacostemp:/home/nacos/conf /usr/local/microservices/nacos/cluster/nacos2
docker cp nacostemp:/home/nacos/conf /usr/local/microservices/nacos/cluster/nacos3 
  • 删除刚才启动的nacos容器
# 查看容器实例的ID
docker  ps 
# 删除nacos容器实例
docker rm -f nacos容器实例的ID
  • /usr/local/microservices/nacos目录下编写docker-compose.yml文件
version: "3"
services:
  nacos1:
    hostname: nacos1
    container_name: nacos1
    image: nacos/nacos-server:2.0.3
    volumes:
      - /usr/local/microservices/nacos/cluster/nacos1/logs:/home/nacos/logs
      - /usr/local/microservices/nacos/cluster/nacos1/conf:/home/nacos/conf
    ports:
      - "18848:8848"
      # 以 8848 为基础偏移 1000 和 1001,不能乱映射,不然服务会连不上 Nacos
      - "19848:9848"
      - "19849:9849"
    env_file:
      - ./nacos-cluster.env
    networks:
      - micr-net
    depends_on:
      - mysql
    restart: always
  nacos2:
    hostname: nacos2
    image: nacos/nacos-server:2.0.3
    container_name: nacos2
    volumes:
      - /usr/local/microservices/nacos/cluster/nacos2/logs:/home/nacos/logs
      - /usr/local/microservices/nacos/cluster/nacos2/conf:/home/nacos/conf
    ports:
      - "18850:8848"
      # 以 8848 为基础偏移 1000 和 1001,不能乱映射,不然服务会连不上 Nacos
      - "19850:9848"
      - "19851:9849"
    env_file:
      - ./nacos-cluster.env
    networks:
      - micr-net  
    depends_on:
      - mysql
    restart: always
  nacos3:
    hostname: nacos3
    image: nacos/nacos-server:2.0.3
    container_name: nacos3
    volumes:
      - /usr/local/microservices/nacos/cluster/nacos3/logs:/home/nacos/logs
      - /usr/local/microservices/nacos/cluster/nacos3/conf:/home/nacos/conf
    ports:
      - "18852:8848"
      # 以 8848 为基础偏移 1000 和 1001,不能乱映射,不然服务会连不上 Nacos
      - "19852:9848"
      - "19853:9849"
    env_file:
      - ./nacos-cluster.env
    networks:
      - micr-net  
    depends_on:
      - mysql
    restart: always
  mysql:
    container_name: mysql
    image: nacos/nacos-mysql:5.7
    env_file:
      - ./mysql.env
    volumes:
      - /usr/local/microservices/nacos/mysql/nacos-mysql5.7/data:/var/lib/mysql
    ports:
      - "3306:3306"
    networks:
      - micr-net  
networks: #创建网络
   micr-net: 
  • 在当前目录下创建如下两个文件

创建mysql.env,文件内容如下:

MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=nacos_config
MYSQL_USER=nacos
MYSQL_PASSWORD=nacos

创建nacos-cluster.env,文件内容如下:

PREFER_HOST_MODE=hostname
MODE=cluster
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
TIME_ZONE='Asia/Shanghai'
MYSQL_SERVICE_HOST=mysql
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_DB_NAME=nacos_config
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=root
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true

# JVM参数 默认是2G 如果使用虚拟机,内存没有2G,就需要调整这里的参数,否则将无法启动
JVM_XMS=256m
JVM_XMX=512m
JVM_XMN=512m
#是否开启远程debug,y/n,默认n
NACOS_DEBUG=n   
#是否开始tomcat访问日志的记录,默认false
TOMCAT_ACCESSLOG_ENABLED=false 

# JVM参数 默认是2G 如果使用虚拟机,内存没有2G,就需要调整这里的参数,否则将无法启动
JVM_XMS=128m
JVM_XMX=128m
JVM_XMN=128m
  • 使用如下命令检查docker-compose.yml文件语法是否有误(若控制台没有输出,则没有错误)
docker-compose config -q
  • 启动Nacos
docker-compose up -d
  • 查看是否启动成功
docker ps

在这里插入图片描述

  • 使用Navicat连接Nacos的数据库

在这里插入图片描述

  • 创建数据库nacos_config,在该数据库中执行如下脚本:

注意!注意!注意!对应的Nacos必须使用对应的mysql脚本,因为存在字段变更,所以,必须相匹配
其他版本的脚本获取地址,进入后下载windos版本,找到nacos-server-2.0.3\nacos\conf目录下的nacos-mysql.sql文件

本文的SQL脚本:

/*
 * Copyright 1999-2018 Alibaba Group Holding Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info   */
/******************************************/
CREATE TABLE `config_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) DEFAULT NULL,
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `c_desc` varchar(256) DEFAULT NULL,
  `c_use` varchar(64) DEFAULT NULL,
  `effect` varchar(64) DEFAULT NULL,
  `type` varchar(64) DEFAULT NULL,
  `c_schema` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  `content` longtext NOT NULL COMMENT '内容',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`),
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (
  `id` bigint(64) unsigned NOT NULL,
  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) NOT NULL,
  `group_id` varchar(128) NOT NULL,
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL,
  `md5` varchar(32) DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `src_user` text,
  `src_ip` varchar(50) DEFAULT NULL,
  `op_type` char(10) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`nid`),
  KEY `idx_gmt_create` (`gmt_create`),
  KEY `idx_gmt_modified` (`gmt_modified`),
  KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';


CREATE TABLE `tenant_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';

CREATE TABLE `users` (
	`username` varchar(50) NOT NULL PRIMARY KEY,
	`password` varchar(500) NOT NULL,
	`enabled` boolean NOT NULL
);

CREATE TABLE `roles` (
	`username` varchar(50) NOT NULL,
	`role` varchar(50) NOT NULL,
	UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);

CREATE TABLE `permissions` (
    `role` varchar(50) NOT NULL,
    `resource` varchar(255) NOT NULL,
    `action` varchar(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);

INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);

INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

在这里插入图片描述

  • 访问Nacos
主机1:http://docker宿主机的IP:18848/nacos/index.html
主机2:http://docker宿主机的IP:18850/nacos/index.html
主机3:http://docker宿主机的IP:18852/nacos/index.html

账户:nacos
密码:nacos
  • 安装Nginx做负载均衡,轮询主机
    新建/usr/local/microservices/nginx/conf编写nginx.conf文件,文件内容如下
vim nginx.conf

需要将文件中IP192.168.31.79替换成自己的docker宿主机的IP

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

# nacos服务器grpc相关地址和端口,需要nginx已经有stream模块
stream {
    upstream nacos-server-grpc {
       server 192.168.31.79:19848;
       server 192.168.31.79:19850;
       server 192.168.31.79:19852;
    }
    server {
        listen 9848;
        proxy_pass nacos-server-grpc;
    }
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

	 # upstream模块实现负载均衡 -- tips:不能使用下划线(ex:nacos_cluster)
    upstream nacos-cluster {
    	server 192.168.31.79:18848 weight=1 max_fails=2 fail_timeout=10s;
    	server 192.168.31.79:18850 weight=1 max_fails=2 fail_timeout=10s;
    	server 192.168.31.79:18852 weight=1 max_fails=2 fail_timeout=10s;
	}

    server {
        listen       8848;
        server_name  localhost; # 服务器地址或绑定域名

        location / {
            proxy_pass http://nacos-cluster;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

    }
}
  • 启动nginx
docker run -p 18854:8848 -p 19854:9848 --name nginx-nacos -d 
--restart=always 
--network nacos_micr-net 
-m 1024M --memory-swap=-1 
--memory-reservation=512M 
-e TZ=Asia/Shanghai 
-e LANG=en_US.UTF-8 
-v /usr/local/microservices/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 
-v /usr/local/microservices/nginx/conf/conf.d:/etc/nginx/conf.d 
-v /usr/local/microservices/nginx/log:/var/log/nginx 
nginx:1.21.1
  • 查看是否启动成功
docker ps

在这里插入图片描述

  • 开放端口
    在这里插入图片描述

  • 访问Nacos控制台

http://docker宿主机公网IP:18854/nacos/index.html#
账号:nacos
密码:nacos
  • 微服务连接集群
server:
  port: 9001

spring:
  application:
    name: user-management # 微服务名称
  cloud:
    nacos:
      discovery:
        server-addr: docker宿主机公网IP:18854

服务注册成功
在这里插入图片描述

集群搭建完成
在这里插入图片描述
最后感谢评论区,昵称为hongbucai的这位大佬,给予的指点,以上过程,是结合大佬的指点编写的,亲测可用。

注:若出现Caused by: java.lang.IllegalStateException: No DataSourc异常,可尝试
修改nacos-cluster.env文件中的MYSQL_SERVICE_DB_PARAMMYSQL_SERVICE_HOST配置项,修改为以下内容:

MYSQL_SERVICE_HOST=docker宿主机的IP

MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亿只王菜菜

各位爷,赏口饭吃吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值