【数据库】在Kylin V10/ARM架构上部署oceanbase开源版

单zone,资源利用最大化

一、确认环境

主机配置: 

kc1.4xlarge.4 16c 64G 极速型SSD

# cat /etc/kylin-release 
Kylin Linux Advanced Server release V10 (Tercel)

二、源码编译

(略过)

参考:kylin/ARM源码编译oceanbase

三、创建用户并信任

[root@ecs0003 ob]# groupadd admin
[root@ecs0003 ob]# useradd -g admin admin
[root@ecs0003 ob]# 
[root@ecs0003 ob]# 
[root@ecs0003 ob]# passwd admin
Changing password for user admin.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@ecs0003 ob]# 

信任关系可以用oracle sshUserSetup.sh快速配置

sh sshUserSetup.sh -hosts "ecs0001 ecs0002 ecs0003 ecs0004 ecs0005 ecs0006" -user admin -advanced

四、在各个节点启动observer

节点1、2、3、4、5、6分别执行:

节点1:
su - admin
mkdir -p /data/ob/observer01/store/{sort_dir,sstable,clog,ilog,slog}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/ob/oceanbase/build_release/src/observer/lib/

su - root
cd /data/ob/observer01 && /data/ob/oceanbase/build_release/src/observer/observer -r 192.168.0.187:2882:2881 -o __min_full_resource_pool_memory=268435456,memory_limit=35G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_size=120G,enable_syslog_recycle=True,max_syslog_file_count=10 -z zone1 -p 2881 -P 2882 -c 1 -d /data/ob/observer01/store -i eth0 -l INFO

[root@ecs-ac3e-0004 oceanbase]# su - admin
Last login: Thu Oct 28 02:08:38 CST 2021 on pts/0
[admin@ecs-ac3e-0004 ~]$ mysql -h127.0.0.1 -uroot -P2881
Welcome to the MariaDB monitor.  Commands end with ; or \\g.
Your MySQL connection id is 3221225472
Server version: 5.7.25 OceanBase 3.1.1 (r1-895dd335327983c2fb9a7362e8bb149a7e1343cd) (Built Oct 28 2021 01:21:37)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.

MySQL [(none)]> set session ob_query_timeout=1000000000;
Query OK, 0 rows affected (0.001 sec)

MySQL [(none)]> alter system bootstrap ZONE 'zone1' SERVER '192.168.0.187:2882' ;             
Query OK, 0 rows affected (17.929 sec)

MySQL [(none)]> alter user root identified by 'root1234';
Query OK, 0 rows affected (0.034 sec)

MySQL [(none)]> quit
Bye
[admin@ecs-ac3e-0004 ~]$ mysql -h127.0.0.1 -uroot@sys -P2881 -proot1234 -c -A oceanbase
Welcome to the MariaDB monitor.  Commands end with ; or \\g.
Your MySQL connection id is 3221487634
Server version: 5.7.25 OceanBase 3.1.1 (r1-895dd335327983c2fb9a7362e8bb149a7e1343cd) (Built Oct 28 2021 01:21:37)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.

MySQL [oceanbase]> show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          |
| information_schema |
| mysql              |
| SYS                |
| LBACSYS            |
| ORAAUDITOR         |
| test               |
+--------------------+
7 rows in set (0.003 sec)

MySQL [oceanbase]>

节点2:
su - admin
mkdir -p /data/ob/observer02/store/{sort_dir,sstable,clog,ilog,slog}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/ob/oceanbase/build_release/src/observer/lib/

su - root
cd /data/ob/observer02 && /data/ob/oceanbase/build_release/src/observer/observer -r 192.168.0.187:2882:2881 -o __min_full_resource_pool_memory=268435456,memory_limit=35G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_size=120G,enable_syslog_recycle=True,max_syslog_file_count=4 -z zone1 -p 2881 -P 2882 -c 1 -d /data/ob/observer02/store -i eth0 -l INFO

节点3:
su - admin
mkdir -p /data/ob/observer03/store/{sort_dir,sstable,clog,ilog,slog}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/ob/oceanbase/build_release/src/observer/lib/

su - root
cd /data/ob/observer03 && /data/ob/oceanbase/build_release/src/observer/observer -r 192.168.0.187:2882:2881 -o __min_full_resource_pool_memory=268435456,memory_limit=35G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_size=120G,enable_syslog_recycle=True,max_syslog_file_count=4 -z zone1 -p 2881 -P 2882 -c 1 -d /data/ob/observer03/store -i eth0 -l INFO

节点4:
su - admin
mkdir -p /data/ob/observer04/store/{sort_dir,sstable,clog,ilog,slog}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/ob/oceanbase/build_release/src/observer/lib/

su - root
cd /data/ob/observer04 && /data/ob/oceanbase/build_release/src/observer/observer -r 192.168.0.187:2882:2881 -o __min_full_resource_pool_memory=268435456,memory_limit=35G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_size=120G,enable_syslog_recycle=True,max_syslog_file_count=4 -z zone1 -p 2881 -P 2882 -c 1 -d /data/ob/observer04/store -i eth0 -l INFO

节点5:
su - admin
mkdir -p /data/ob/observer05/store/{sort_dir,sstable,clog,ilog,slog}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/ob/oceanbase/build_release/src/observer/lib/

su - root
cd /data/ob/observer05 && /data/ob/oceanbase/build_release/src/observer/observer -r 192.168.0.187:2882:2881 -o __min_full_resource_pool_memory=268435456,memory_limit=35G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_size=120G,enable_syslog_recycle=True,max_syslog_file_count=4 -z zone1 -p 2881 -P 2882 -c 1 -d /data/ob/observer05/store -i eth0 -l INFO

节点6:
su - admin
mkdir -p /data/ob/observer06/store/{sort_dir,sstable,clog,ilog,slog}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/ob/oceanbase/build_release/src/observer/lib/

su - root
cd /data/ob/observer06 && /data/ob/oceanbase/build_release/src/observer/observer -r 192.168.0.187:2882:2881 -o __min_full_resource_pool_memory=268435456,memory_limit=35G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_size=120G,enable_syslog_recycle=True,max_syslog_file_count=4 -z zone1 -p 2881 -P 2882 -c 1 -d /data/ob/observer06/store -i eth0 -l INFO

注:

1、这里为了利用全部主机资源,全部加进zone1

2、节点1作为root node启动,其他节点全部指向这个节点

五、扩容

MySQL [oceanbase]> select a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, (cpu_total-cpu_assigned) cpu_free, round(mem_total/1024/1024/1024) mem_total_gb, round((mem_total-mem_assigned)/1024/1024/1024) mem_free_gb, usec_to_time(b.last_offline_time) last_offline_time, usec_to_time(b.start_service_time) start_service_time, b.status, b.build_version , usec_to_time(a.stop_time) stop_time
    -> from __all_virtual_server_stat a join __all_server b on (a.svr_ip=b.svr_ip and a.svr_port=b.svr_port)
    -> order by a.zone, a.svr_ip
    -> ;
+-------+-------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+------------------------------------------------------------------------+----------------------------+
| zone  | observer          | cpu_total | cpu_free | mem_total_gb | mem_free_gb | last_offline_time          | start_service_time         | status | build_version                                                          | stop_time                  |
+-------+-------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+------------------------------------------------------------------------+----------------------------+
| zone1 | 192.168.0.187:2882 |        14 |     11.5 |           28 |          21 | 1970-01-01 08:00:00.000000 | 2021-10-28 02:11:29.783668 | active | 3.1.1_1-895dd335327983c2fb9a7362e8bb149a7e1343cd(Oct 28 2021 01:21:37) | 1970-01-01 08:00:00.000000 |
+-------+-------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+------------------------------------------------------------------------+----------------------------+
1 row in set (0.004 sec)

MySQL [oceanbase]> select a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, (cpu_total-cpu_assigned) cpu_free, round(mem_total/1024/1024/1024) mem_total_gb, round((mem_total-mem_assigned)/1024/1024/1024) mem_free_gb, usec_to_time(b.last_offline_time) last_offline_time, usec_to_time(b.start_service_time) start_service_time, b.status, b.build_version , usec_to_time(a.stop_time) stop_time from __all_virtual_server_stat a join __all_server b on (a.svr_ip=b.svr_ip and a.svr_port=b.svr_port) order by a.zone, a.svr_ip;
+-------+-------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+------------------------------------------------------------------------+----------------------------+
| zone  | observer          | cpu_total | cpu_free | mem_total_gb | mem_free_gb | last_offline_time          | start_service_time         | status | build_version                                                          | stop_time                  |
+-------+-------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+------------------------------------------------------------------------+----------------------------+
| zone1 | 192.168.0.187:2882 |        14 |     11.5 |           28 |          21 | 1970-01-01 08:00:00.000000 | 2021-10-28 02:11:29.783668 | active | 3.1.1_1-895dd335327983c2fb9a7362e8bb149a7e1343cd(Oct 28 2021 01:21:37) | 1970-01-01 08:00:00.000000 |
+-------+-------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+------------------------------------------------------------------------+----------------------------+
1 row in set (0.004 sec)

MySQL [oceanbase]> select * from __all_zone where name in ('region','status','zone_type');
+----------------------------+----------------------------+-------+-----------+-------+----------------+
| gmt_create                 | gmt_modified               | zone  | name      | value | info           |
+----------------------------+----------------------------+-------+-----------+-------+----------------+
| 2021-10-28 02:11:28.120893 | 2021-10-28 02:11:28.120893 | zone1 | region    |     0 | default_region |
| 2021-10-28 02:11:28.119862 | 2021-10-28 02:11:28.119862 | zone1 | status    |     2 | ACTIVE         |
| 2021-10-28 02:11:28.120893 | 2021-10-28 02:11:28.120893 | zone1 | zone_type |     0 | ReadWrite      |
+----------------------------+----------------------------+-------+-----------+-------+----------------+
3 rows in set (0.002 sec)


MySQL [oceanbase]> alter system add server '192.168.0.70:2882' zone 'zone1';              
Query OK, 0 rows affected (0.010 sec)

MySQL [oceanbase]> alter system add server '192.168.0.162:2882' zone 'zone1';              
Query OK, 0 rows affected (0.008 sec)

MySQL [oceanbase]> alter system add server '192.168.0.193:2882' zone 'zone1';   
Query OK, 0 rows affected (0.010 sec)

MySQL [oceanbase]> alter system add server '192.168.0.168:2882' zone 'zone1';   
Query OK, 0 rows affected (0.009 sec)

MySQL [oceanbase]> alter system add server '192.168.0.173:2882' zone 'zone1';   
Query OK, 0 rows affected (0.016 sec)

MySQL [oceanbase]> select a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, (cpu_total-cpu_assigned) cpu_free, round(mem_total/1024/1024/1024) mem_total_gb, round((mem_total-mem_assigned)/1024/1024/1024) mem_free_gb, usec_to_time(b.last_offline_time) last_offline_time, usec_to_time(b.start_service_time) start_service_time, b.status, b.build_version , usec_to_time(a.stop_time) stop_time
    -> from __all_virtual_server_stat a join __all_server b on (a.svr_ip=b.svr_ip and a.svr_port=b.svr_port)
    -> order by a.zone, a.svr_ip;
+-------+--------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+------------------------------------------------------------------------+----------------------------+
| zone  | observer           | cpu_total | cpu_free | mem_total_gb | mem_free_gb | last_offline_time          | start_service_time         | status | build_version                                                          | stop_time                  |
+-------+--------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+------------------------------------------------------------------------+----------------------------+
| zone1 | 192.168.0.162:2882 |        14 |       14 |           31 |          31 | 1970-01-01 08:00:00.000000 | 2021-12-17 16:42:44.380453 | active | 3.1.1_1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2(Dec 15 2021 15:28:57) | 1970-01-01 08:00:00.000000 |
| zone1 | 192.168.0.168:2882 |        14 |       14 |           31 |          31 | 1970-01-01 08:00:00.000000 | 2021-12-17 16:42:38.612900 | active | 3.1.1_1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2(Dec 15 2021 15:18:16) | 1970-01-01 08:00:00.000000 |
| zone1 | 192.168.0.173:2882 |        14 |       14 |           31 |          31 | 1970-01-01 08:00:00.000000 | 2021-12-17 16:42:48.318850 | active | 3.1.1_1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2(Dec 15 2021 15:20:51) | 1970-01-01 08:00:00.000000 |
| zone1 | 192.168.0.187:2882 |        14 |     11.5 |           31 |          23 | 1970-01-01 08:00:00.000000 | 2021-12-17 16:42:36.806127 | active | 3.1.1_1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2(Dec 15 2021 14:04:00) | 1970-01-01 08:00:00.000000 |
| zone1 | 192.168.0.193:2882 |        14 |       14 |           31 |          31 | 1970-01-01 08:00:00.000000 | 2021-12-17 16:42:41.755750 | active | 3.1.1_1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2(Dec 15 2021 15:32:36) | 1970-01-01 08:00:00.000000 |
| zone1 | 192.168.0.70:2882  |        14 |       14 |           31 |          31 | 1970-01-01 08:00:00.000000 | 2021-12-17 16:42:40.865138 | active | 3.1.1_1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2(Dec 15 2021 15:49:35) | 1970-01-01 08:00:00.000000 |
+-------+--------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+------------------------------------------------------------------------+----------------------------+



六、创建资源池、租户

create resource unit -> create resource pool -> create tenant -> create user -> DDL/DML

查看资源剩余情况

[admin@ecs0001 ~]$ mysql -h127.0.0.1 -uroot@sys -P2881 -proot1234 -c -A oceanbase
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 3221571746
Server version: 5.7.25 OceanBase 3.1.1 (r1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2) (Built Dec 15 2021 14:04:00)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [oceanbase]> select a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, (cpu_total-cpu_assigned) cpu_free, round(mem_total/1024/1024/1024) mem_total_gb, round((mem_total-mem_assigned)/1024/1024/1024) mem_free_gb, usec_to_time(b.last_offline_time) last_offline_time, usec_to_time(b.start_service_time) start_service_time, b.status, b.build_version , usec_to_time(a.stop_time) stop_time from __all_virtual_server_stat a join __all_server b on (a.svr_ip=b.svr_ip and a.svr_port=b.svr_port) order by a.zone, a.svr_ip;
+-------+--------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+------------------------------------------------------------------------+----------------------------+
| zone  | observer           | cpu_total | cpu_free | mem_total_gb | mem_free_gb | last_offline_time          | start_service_time         | status | build_version                                                          | stop_time                  |
+-------+--------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+------------------------------------------------------------------------+----------------------------+
| zone1 | 192.168.0.162:2882 |        14 |       14 |           31 |          31 | 1970-01-01 08:00:00.000000 | 2021-12-17 16:42:44.380453 | active | 3.1.1_1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2(Dec 15 2021 15:28:57) | 1970-01-01 08:00:00.000000 |
| zone1 | 192.168.0.168:2882 |        14 |       14 |           31 |          31 | 1970-01-01 08:00:00.000000 | 2021-12-17 16:42:38.612900 | active | 3.1.1_1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2(Dec 15 2021 15:18:16) | 1970-01-01 08:00:00.000000 |
| zone1 | 192.168.0.173:2882 |        14 |       14 |           31 |          31 | 1970-01-01 08:00:00.000000 | 2021-12-17 16:42:48.318850 | active | 3.1.1_1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2(Dec 15 2021 15:20:51) | 1970-01-01 08:00:00.000000 |
| zone1 | 192.168.0.187:2882 |        14 |     11.5 |           31 |          23 | 1970-01-01 08:00:00.000000 | 2021-12-17 16:42:36.806127 | active | 3.1.1_1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2(Dec 15 2021 14:04:00) | 1970-01-01 08:00:00.000000 |
| zone1 | 192.168.0.193:2882 |        14 |       14 |           31 |          31 | 1970-01-01 08:00:00.000000 | 2021-12-17 16:42:41.755750 | active | 3.1.1_1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2(Dec 15 2021 15:32:36) | 1970-01-01 08:00:00.000000 |
| zone1 | 192.168.0.70:2882  |        14 |       14 |           31 |          31 | 1970-01-01 08:00:00.000000 | 2021-12-17 16:42:40.865138 | active | 3.1.1_1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2(Dec 15 2021 15:49:35) | 1970-01-01 08:00:00.000000 |
+-------+--------------------+-----------+----------+--------------+-------------+----------------------------+----------------------------+--------+------------------------------------------------------------------------+----------------------------+

划分资源

MySQL [oceanbase]> create resource unit tpcc_unit max_cpu 14, max_memory '31G', max_iops 66666, max_disk_size '120G', max_session_num 5000, MIN_CPU=14, MIN_MEMORY='31G', MIN_IOPS=66666;
Query OK, 0 rows affected (0.006 sec)

MySQL [oceanbase]> create resource pool tpcc_pool unit = 'tpcc_unit', unit_num = 5, zone_list=('zone1');                                                                                                        Query OK, 0 rows affected (0.018 sec)
//unit_num=5剩一个资源不足的作为管理节点和压测节点

MySQL [oceanbase]> create tenant tpcc_tenant resource_pool_list=('tpcc_pool'), charset=utf8mb4, replica_num=3, zone_list('zone1'), locality='F@zone1' set ob_compatibility_mode=mysql;
Query OK, 0 rows affected (1.486 sec)
//3副本

MySQL [oceanbase]> ALTER TENANT tpcc_tenant SET VARIABLES ob_tcp_invited_nodes='%';
Query OK, 0 rows affected (0.034 sec)

七、创建用户

[admin@ecs0002 ~]$ mysql -h127.0.0.1 -uroot@tpcc_tenant -P2881 -c -A
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 3221770195
Server version: 5.7.25 OceanBase 3.1.1 (r1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2) (Built Dec 15 2021 15:49:35)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> create user tpcc identified by 'tpcc';
Query OK, 0 rows affected (0.032 sec)

MySQL [(none)]> GRANT ALL PRIVILEGES ON *.* TO tpcc with grant option;           
Query OK, 0 rows affected (0.027 sec)


[admin@ecs0002 ~]$ mysql -h192.168.0.70 -utpcc@tpcc_tenant -P2881 -ptpcc -c -A
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 3221770721
Server version: 5.7.25 OceanBase 3.1.1 (r1-4a61aa99e787eaa5eaa6e59ee52768550d0f5fb2) (Built Dec 15 2021 15:49:35)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          |
| information_schema |
| mysql              |
| test               |
| tpcc               |
+--------------------+
5 rows in set (0.004 sec)

MySQL [(none)]> select version();
+--------------------+
| version()          |
+--------------------+
| 3.1.1-OceanBase CE |
+--------------------+
1 row in set (0.001 sec)

MySQL [(none)]> select now();
+---------------------+
| now()               |
+---------------------+
| 2021-12-17 21:32:29 |
+---------------------+
1 row in set (0.001 sec)

 obproxy和obd均没有arm版,负载均衡考虑HAproxy

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值