OceanBase社区版集群搭建+proxy

前言:

     OceanBase开源了,本篇搭建OceanBase社区版集群+Obproxy

关于Oceanbase

     OceanBase 数据库是蚂蚁集团不基于任何开源产品,自研的企业级分布式关系数据库。 一款完全自研的原生分布式关系数据库软件,产品具有云原生、强一致性、高度兼容MySQL等特性。目前社区版暂不兼容 Oracle数据库 。社区版地址: https://open.oceanbase.com/

	高可用:   单服务器故障能够自愈,支持跨城多机房容灾,数据零丢失,可满足金融行业6级容灾标准(RPO=0,RTO<=30秒)。
	线性扩展: 透明扩展,自动负载均衡,应用透明的水平扩展,集群规模可超过1500节点,数据量可达 PB 级,单表记录万亿行。
	MySQL     高度兼容:兼容 MySQL 协议、语法和使用习惯,MySQL客户端工具可以直接访问OceanBase。
	高性能:   准内存级数据变更操作、独创的编码压缩技术,结合线性水平扩展,TPC-C 测试达到7.07亿 tpmC。
	低成本:   使用 PC 服务器和低端 SSD,高存储压缩率降低存储成本,高性能降低计算成本,多租户混部充分利用系统资源。
	多租户:   原生支持多租户构架,同一套数据库集群可以为多个独立业务提供服务,租户间数据隔离,降低部署和运维成本。
部署环境
采用1+1+1+obproxy集群策略
  
系统:centos7.9
cou:16
内存:32GB
磁盘:1TB
节点分布: 
192.168.42.122:  `ob1+obprox`
192.168.42.123:  `ob2`
192.168.42.124:  `ob3`

在这里插入图片描述

初始化准备
  1. 修改主机名
[root@localhost ~]# SSH root@192.168.42.122 
[root@localhost ~]# hostnamectl set-hostname OB1
[root@localhost ~]# SSH root@192.168.42.123 
[root@localhost ~]# hostnamectl set-hostname OB2
[root@localhost ~]# SSH root@192.168.42.124 
[root@localhost ~]# hostnamectl set-hostname OB3
  1. 关闭三台防火墙和selinux
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config &&  setenforce 0
  1. 设置用户会话
echo"* soft nofile 655350
* hard nofile 655350
* soft stack 20480
* hard stack 20480
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited" >>/etc/security/limits.conf

  1. 设置内核

echo"fs.aio-max-nr = 1048576
net.core.somaxconn = 2048
net.core.netdev_max_backlog = 10000
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.ip_local_port_range = 3500 65535
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_slow_start_after_idle=0

vm.swappiness = 0
kernel.core_pattern = /data/1/core-%e-%p-%t
vm.min_free_kbytes = 2097152
vm.max_map_count=655360" > /etc/sysctl.conf && sysctl -p
  1. 设置免密登录
OB1上操作
ssh-keygen -t rsa  #默认全部回车
ssh root@192.168.42.123  'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub 
ssh root@192.168.42.124  'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub #推送公钥到 123/124上
  1. 设置时间同步
OB1/2/3操作
yum –y install ntp  # 下载NTP服务


OB1作为时间同步服务器,修改OB1 ntp配置
echo"driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict ::1
restrict 192.168.42.122 nomodify notrap nopeer noquery
restrict 192.168.42.0 mask 255.255.252.0 nomodify notrap
server 0.cn.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
server 127.127.1.0
Fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor" > /etc/ntp.conf


OB2同步OB1配置
echo"driftfile /var/lib/ntp/drift
restrict 127.0.0.1 
restrict ::1
server 192.168.42.122
Fudge 192.168.42.122 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor" > /etc/ntp.conf

OB3同步OB1配置
echo"driftfile /var/lib/ntp/drift
restrict 127.0.0.1 
restrict ::1
server 192.168.42.122
Fudge 192.168.42.122 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor" > /etc/ntp.conf


验证:
在OB2/OB3上执行  " ntpstat "
[root@O2]# ntpstat
synchronised to NTP server (192.168.42.122) at stratum 4
   time correct to within 143 ms
   polling server every 1024 s
   
返回以上信息,同步成共
使用OBD搭建observer集群和Proxy

这是OBD工具的开源地址:https://gitee.com/oceanbase/obdeploy
简介:
OceanBase Deploy (简称 OBD)是 OceanBase 开源软件的安装部署工具。OBD 同时也是包管理器,可以用来管理 OceanBase 所有的开源软件。本文介绍如何安装 OBD、使用 OBD 和 OBD 的命令。

  1. 在OB1上部署OBD
yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
yum install -y ob-deploy

  1. 编辑一个yaml的配置文件 ,使用OBD根据这个yaml文件即可自动创建集群
vim obd_observer_obproxy.yaml
##内容如下,可根据机器配置进行修改,另外官方也给有系统参数说明,可去开源社区看
## Only need to configure when remote login is required
user:
    username: root                    #用户名,前提三个节点保持一致
    password: test123!                #密码 ,前提三个节点保持一致
    key_file: /root/.ssh/id_rsa       #密钥,可省略 

####################    下面是 observer搭建参数  ##############################
oceanbase-ce: 
  servers:
    - name: z1         # zone名
      # Please don't use hostname, only IP can be supported
      ip: 192.168.42.122    # OB1 地址
    - name: z2
      ip: 192.168.42.123
    - name: z3
      ip: 192.168.42.124
  global:
    devname: ens192             # 设置要部署节点的网卡,这里需要注意,需要网络环境的,如果不能上网,请移步到社区找离线安装的
    memory_limit: 30G           # 单节点是32G的 这里我给集群的单台内存配置是30G
    lower_case_table_names: 1   # 数据库不区分大小写
    foreign_key_checks: 0       # DML 语句不检查外建约束,DDL 操作不受影响
    system_memory: 2G 			# 系统剩余保留内存2G
    sys_bkgd_migration_retry_num: 5    	# 副本迁移失败时最多重试次数。
    stack_size: 512K					# 设置程序函数调用栈的大小。 磁盘要512k 对齐,如果不是可能会启动失败
    cpu_count: 16						# cpu 16核
    cache_wash_threshold: 1G			# 设置触发缓存清理的容量阈值。如果内存空间小于指定值时,内存空间将被清理。
    __min_full_resource_pool_memory: 1073741824  	# 默认普通租户的内存最小规格必须大于等于 5 GB,这里设置成1G,就说明我可以最低设置租户内存为1G 
    workers_per_cpu_quota: 10 						#  用于设置分配给每个 CPU 配额的工作线程数量。
    schema_history_expire_time: 1d					# 元数据历史数据过期时间。
    net_thread_count: 4								# 设置网络 I/O 线程数
    major_freeze_duty_time: Disable
    minor_freeze_times: 10							# 多少次小合并触发一次全局合并。
    enable_separate_sys_clog: True					# 是否把系统事务日志与用户事务日志分开存储。
    enable_merge_by_turn: FALSE
    datafile_disk_percentage: 40  					# 数据库系统初始化用于存储数据,例如我这里设置了40,表示百分之四十,那么我单节点是1TB的 约400多G空间将会被立即占用
    syslog_level: WARN  							# 日志警报级别
    enable_syslog_recycle: True						# 开启回收系统日志的功能
    max_syslog_file_count: 4						# 日志文件数量
    cluster_id: 1									# 集群ID
    # observer cluster name, consistent with obproxy's cluster_name
    appname: Oceanbase								# 集群名,要与下面obproxy的对应一致
    ###下面设置节点信息
  z1:
    mysql_port: 2881            # 数据库端口
    rpc_port: 2882				# 远程访问的协议端口号
    home_path: /root/data/observer   	# 数据目录
    zone: zone1							# 设置节点所在的 Zone 的名字
  z2:
    mysql_port: 2881
    rpc_port: 2882
    home_path: /root/data/observer
    zone: zone2
  z3:
    mysql_port: 2881
    rpc_port: 2882
    home_path: /root/data/observer
    zone: zone3
########################## 以下是obrpoxy的 搭建参数 ######################3
obproxy: 
  servers:
    - 192.168.42.122
  global:
    listen_port: 2883
    home_path: /root/data/obproxy
    # oceanbase root server list
    # format: ip:mysql_port,ip:mysql_port
    rs_list: 192.168.42.122:2881;192.168.42.123:2881;192.168.42.124:2881
    enable_cluster_checkout: false

  1. 使用OBD初始化集群
 obd cluster deploy 集群名字-c 刚刚弄得yaml配置 
 obd cluster deploy test -c obd_observer_obproxy.yaml
+-------------------------------------------------------------------+
|                              Packages                             |
+--------------+---------+------------------------------------------+
| Repository   | Version | Md5                                      |
+--------------+---------+------------------------------------------+
| oceanbase-ce | 3.1.0   | 56f57e9843e719d830ec03c206d914f4b3adc82b |
+--------------+---------+------------------------------------------+
Open ssh connection ok
Remote oceanbase-ce-3.1.0-56f57e9843e719d830ec03c206d914f4b3adc82b repository install ok
Remote oceanbase-ce-3.1.0-56f57e9843e719d830ec03c206d914f4b3adc82b repository lib check ok

+-----------------------------------------+
|             Packages                    |
+--------------+---------+----------------+
| Repository      | Version |             |
+--------------+---------+----------------+
| oceanbase-Proxy | 3.1.0   |			  |
+--------------+---------+----------------+
Open ssh connection ok
Remote oceanbase-ce-3.1.0-56f57e9843e719d830ec03c206d914f4b3adc82b repository install ok
Remote oceanbase-ce-3.1.0-56f57e9843e719d830ec03c206d914f4b3adc82b repository lib check ok
127.0.0.1 initializes cluster work home
xlucas deployed

  1. 查看启动集群
[root@status ~]# obd cluster list 
+------------------------------------------------------------+
|                        Cluster List                        |
+-----------+------------------------------+-----------------+
| Name      | Configuration Path           | Status (Cached) |
+-----------+------------------------------+-----------------+
| Oceanbase | /root/.obd/cluster/Oceanbase | deployed        |
+-----------+------------------------------+-----------------+

[root@status ~]# obd cluster start Oceanbase

[root@status ~]# obd cluster  list 
+------------------------------------------------------------+
|                        Cluster List                        |
+-----------+------------------------------+-----------------+
| Name      | Configuration Path           | Status (Cached) |
+-----------+------------------------------+-----------------+
| Oceanbase | /root/.obd/cluster/Oceanbase | running         |
+-----------+------------------------------+-----------------+

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本操作
  1. 连接Oceanbase 数据库

     	连接Oceanbase 数据可以使用光放提供的Obclient客户端,
     	也可以直接使用mysql客户端连接,应为具有兼容Oracle/MySQL的特性。
    

下面示例使用Obclient客户端连接
下载Obclient客户端

 yum install -y obclient
obclient -h<your_ip> -P<observer_mysql_port> -uroot  # 连接命令

[root@status ~]# obclient  -h192.168.42.122 -P2883 -uroot -p
Enter password: 
Welcome to the OceanBase.  Commands end with ; or \g.
Your MySQL connection id is 524296
Server version: 5.6.25 OceanBase 3.1.0 (r-) (Built May 30 2021 11:21:29)

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              |
| SYS                |
| LBACSYS            |
| ORAAUDITOR         |
| test               |
+--------------------+
7 rows in set (0.183 sec)

MySQL [(none)]>

  1. 现在默认登录的是系统租户sys 我们可以创建一个用户租户,进行日常的使用。

     我们先了解下租户:
     
     MySQL 是一个单租户的模式 ,所有用户在一套资源池下进行使用,这可能会导致一种故障。
     当用户负载非常高时,应用将用尽数据库的所有资源,导致数据库管理员无法连接数据库,
     也无法执行一些高优先级的控制命令。
     OceanBase 数据库默认会自动创建 sys 租户,sys 租户负责一部分 OceanBase 数据库的管理
     工作,并且能够访问系统元数据表,sys 自动预留了一定的资源。
     创建租户必须要有对应的资源
     池,一个租户对应一个资源池,而资源池是有资源单元组成,当租户注销后,释放资源池内的资源
    
    
    
     资源单元(Resource Unit,Unit)
     	资源单元是一个容器。实际上,副本是存储在资源单元之中的,所以资源单元是副本的容器。
     	资源单元包含了计算存储资源(Memory、CPU 和 IO 等)同时资源单元也是集群负载均衡的
     	一个基本单位,在集群节点上下线,扩容缩容时会动态调整资源单元在节点上的分布进而达到
     	资源的使用均衡。
     
    
     资源池 (Resource Pool)
       一个租户拥有若干个资源池,这些资源池的集合描述了这个租户所能使用的所有资源。一个资源
       池由具有相同资源规格的若干个资源单元组成。一个资源池只能属于一个租户。每个资源单元描
       述了位于一个 Server 上的一组计算和存储资源,可以视为一个轻量级虚拟机,包括若干 CPU 资
       源、内存资源、磁盘资源等。一个租户在同一个 Server 上最多有一个资源单元。
    
      资源配置(Resource Config)
    
     	资源配置是资源单元的具体配置,包含资源单元所属的资源池信息、使用资源的租户信息、资源
     	单元的配置信息(如 CPU 核数和内存资源)等。修改资源配置可以动态调整资源单元的计算资
     	源,进而调整对应租户的资源。
    

查询系统资源占用情况
MySQL [(none)]> use oceanbase;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MySQL [oceanbase]> select svr_ip,svr_port, cpu_total, mem_total, disk_total, zone from __all_virtual_server_stat ;
+----------------+----------+-----------+-------------+--------------+-------+
| svr_ip         | svr_port | cpu_total | mem_total   | disk_total   | zone  |
+----------------+----------+-----------+-------------+--------------+-------+
| 192.168.42.122 |     2882 |        14 | 30064771072 | 439386898432 | zone1 |
| 192.168.42.123 |     2882 |        14 | 30064771072 | 439386898432 | zone2 |
| 192.168.42.124 |     2882 |        14 | 30064771072 | 439386898432 | zone3 |
+----------------+----------+-----------+-------------+--------------+-------+
3 rows in set (0.019 sec)

### 可以看到 可用的资源:每个server CPU是14核 ,内存大概是28G,以为我配置文件里写的是30G,预留给系统2G
### 磁盘单个server是1TB的,应为我配置文件里,写的是百分之40 ,所以大概是400多G 

MySQL [oceanbase]> select sum(c.max_cpu), sum(c.max_memory) from __all_resource_pool as a, __all_unit_config as c where a.unit_config_id=c.unit_config_id;
+----------------+-------------------+
| sum(c.max_cpu) | sum(c.max_memory) |
+----------------+-------------------+
|             5 |       644245095    |
+----------------+-------------------+
1 row in set (0.032 sec)

### 可以看到现在默认的系统租户sys 用了5核 600M 资源, 那么我们创建的新的用户租户,应当用总资源减去已用的资源


第一: 创建资源单元
MySQL [(none)]> CREATE RESOURCE UNIT unit1      # 创建的资源单元的名称
  max_cpu = 9,     							 	# 资源CPU
  max_memory = 20401094656,						# 资源最大内存
  min_memory = 20401094656,						# 资源最小内存
  max_iops = 10000,								# 最大 IOPS
  min_iops = 5000,								# 最小 IOPS
  max_session_num = 3000,  						# 最大 session
  max_disk_size = 375809638400					# 磁盘资源大小
;
第二: 创建资源池 
MySQL [(none)]> CREATE RESOURCE POOL pool1
  UNIT = 'unit1',
  UNIT_NUM = 1,
  ZONE_LIST = ('zone1', 'zone2', 'zone3')
;
第三:创建租户
MySQL [(none)]> CREATE TENANT IF NOT EXISTS zuhu01  # 用户租户名
    charset='utf8mb4',								# 所用字符集
    replica_num=3,
    zone_list=('zone1','zone2','zone3'),
    primary_zone='RANDOM',
    resource_pool_list=('pool1')
;
## 在登陆之前先授权所有用户登录该租户
MySQL [(none)]> alter  tenant  zabbix  set variables ob_tcp_invited_nodes='%';

  1. 我们登录最新创建的租户
[root@status ~]# obclient  -h192.168.42.122 -P2883 -uroot@zuhu01 -p   ## root用户登录用户租户没有密码,直接回车即可
Enter password: 
ERROR 1045 (42000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
[root@status ~]# obclient  -h192.168.42.122 -P2883 -uroot@zabbix -p
Enter password: 
Welcome to the OceanBase.  Commands end with ; or \g.
Your MySQL connection id is 524298
Server version: 5.6.25 OceanBase 3.1.0 (r-) (Built May 30 2021 11:21:29)

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               |
+--------------------+
5 rows in set (0.074 sec)

MySQL [(none)]>
  1. 在用户租户里创建一个普通用户登录,应为租户之间有资源隔离,所以在sys租户下创建的用户并不能登录用户租户
MySQL [(none)]> CREATE USER 'user01' IDENTIFIED BY 'test123456'
  1. 这样我们就可以用普通用户登录普通租户
[root@status ~]# obclient  -h192.168.42.122 -P2883 -usuer01@zuhu01 -ptest123456
Welcome to the OceanBase.  Commands end with ; or \g.
Your MySQL connection id is 524299
Server version: 5.6.25 OceanBase 3.1.0 (r-) (Built May 30 2021 11:21:29)

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               |
+--------------------+
5 rows in set (0.097 sec)

MySQL [(none)]>
关于集群的基本操作总结

应为是用OBD创建的集群,我们可以使用OBD进行集群操作

查看集群状态
obd cluster list

停止集群
obd cluster stop 集群名

修改集群配置
obd cluster edit-config 集群名 ## obd cluster reload 集群名生效或者重启生效

删除集群
obd cluster destroy 集群名 # 可以用-f参数强制删除,注:该操作会删除节点上的server数据,但不会删除数据目录

======================================================================================================================================================================================================================================================================================================
以上只是初识OB数据库,请移步到社区版官网了解更多吧
辛苦浏览观看,如果对你有帮助,请顺手点个赞吧 (σ゚∀゚)σ…:*☆

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
以下是搭建Zabbix Server+Proxy+Agent的详细步骤: 1. 安装Zabbix Server和Proxy 首先,您需要在服务器上安装Zabbix Server和Proxy软件包。您可以使用以下命令在CentOS/RHEL系统上安装: ``` yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-proxy-mysql ``` 此命令将安装Zabbix Server、Zabbix Proxy和Zabbix Web界面,以及与MySQL数据库集成的必要软件包。 2. 配置Zabbix Server 接下来,您需要编辑Zabbix Server的配置文件`/etc/zabbix/zabbix_server.conf`。在文件中,您需要设置以下参数: ``` DBHost=<数据库服务器IP> DBName=<数据库名称> DBUser=<数据库用户名> DBPassword=<数据库密码> ``` 这些参数将用于将Zabbix Server连接到您的MySQL数据库。 您还需要在配置文件中设置Zabbix Server的主机名称和时区。例如: ``` Hostname=<Zabbix Server主机名称> TimeZone=<时区> ``` 3. 配置Zabbix Proxy 接下来,您需要编辑Zabbix Proxy的配置文件`/etc/zabbix/zabbix_proxy.conf`。在文件中,您需要设置以下参数: ``` Server=<Zabbix Server IP> Hostname=<Zabbix Proxy主机名称> DBHost=<数据库服务器IP> DBName=<数据库名称> DBUser=<数据库用户名> DBPassword=<数据库密码> ``` 这些参数将用于将Zabbix Proxy连接到您的Zabbix Server和MySQL数据库。 4. 配置Zabbix Agent 您需要在需要监控的主机上安装Zabbix Agent软件包。您可以使用以下命令在CentOS/RHEL系统上安装: ``` yum install -y zabbix-agent ``` 安装完成后,您需要编辑Zabbix Agent的配置文件`/etc/zabbix/zabbix_agentd.conf`。在文件中,您需要设置以下参数: ``` Server=<Zabbix Server IP> Hostname=<Zabbix Agent主机名称> ``` 这些参数将用于将Zabbix Agent连接到您的Zabbix Server。 5. 创建数据库 在配置Zabbix Server和Proxy之前,您需要创建一个MySQL数据库,并为Zabbix分配一个用户。您可以使用以下命令创建数据库: ``` mysql -uroot -p CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin; GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY '<密码>'; FLUSH PRIVILEGES; ``` 请将`<密码>`替换为您的MySQL密码。 6. 导入数据库架构 在创建数据库并分配用户后,您需要导入Zabbix的数据库架构。您可以使用以下命令导入架构: ``` zcat /usr/share/doc/zabbix-server-mysql-<本>/create.sql.gz | mysql -uzabbix -p zabbix ``` 请将`<本>`替换为您的Zabbix Server软件包本号。 7. 启动服务 完成上述配置后,您可以启动Zabbix Server、Proxy和Agent服务。您可以使用以下命令启动服务: ``` systemctl start zabbix-server systemctl start zabbix-proxy systemctl start zabbix-agent ``` 这将启动Zabbix Server、Proxy和Agent服务,并开始监控您的系统。 希望上述步骤能够帮助您搭建Zabbix Server+Proxy+Agent。如果您遇到任何问题,请随时与我联系。 注意:以上仅是搭建的基本步骤,具体操作还需要参考官方文档和您的实际情况进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

king config

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值