TiDB的搭建与维护过程
TiDB的搭建与维护过程
背景
总结一下TiDB的搭建以及简单维护过程.
目标: 简单快速的创建TiDB数据库,以及进行备份恢复等工作.
TiDB 简介
TiDB(全称:Ti Distributed Database)是一款开源的分布式数据库系统,
由PingCAP公司开发。它是一种基于分布式架构的新型关系数据库,
融合了传统关系数据库的ACID特性和分布式数据库的可扩展性、高可用性和分布式事务特性。
TiDB以MySQL协议为基础,与MySQL兼容,可以无缝替代传统的关系型数据库。
它的最大不同是它的存储和计算部分是分离的,存储节点称为TiKV,计算节点称为TiDB。
TiKV是以分布式的方式将数据存储在多个节点上,而TiDB负责存储计划的解析与执行。
这种架构使得TiDB具备了良好的水平扩展性和高并发处理能力。
TiDB拥有强大的分布式特性,支持数据的自动分片与迁移,
可以根据负载自动扩容与缩容,从而实现了无需停机的横向扩展。
它还支持跨数据中心的数据复制,保证了数据的高可用性和容灾能力。
此外,TiDB还具备分布式事务的支持,可以提供全局的事务一致性。
除了以上特性,TiDB还集成了一些高级功能,
如分布式查询优化、在线数据扩容、自动故障转移等,以满足复杂的业务需求。
总之,TiDB是一个具备分布式特性、高可用性和水平扩展能力的开源分布式数据库系统,
为用户提供了一种全新的数据库解决方案。
环境准备
1. 机器名
2. ssh互信
3. /etc/hosts
4. ulimit配置
5. selinux设置
5. 防火墙设置
6. 其他设置
7. 关闭透明大页
8. 修改IO调度器
9. 创建用户/ssh互信
10.挂载磁盘等.
11.内核参数优化
部分环境准备内容
1. 用户相关
useradd tidb
passwd tidb
visudo
tidb ALL=(ALL) NOPASSWD: ALL
ssh-keygen
ssh-copy-id tidb@tidb01
su - tidb
ssh-copy-id tidb@tidb01
2. 部分设置
关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
临时关闭
setenforce 0
查看状态
getenforce
ulimit 的设置
vi /etc/security/limits.conf
tidb hard nproc 65536
tidb soft nproc 65536
tidb soft nofile 1000000
tidb hard nofile 1000000
tidb soft stack 32768
tidb hard stack 32768
临时设置
ulimit -HSn 65536
检查
ulimit -a
内核参数相关
vim /etc/sysctl.conf
kernel.sysrq=0
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.tcp_syncookies=1
kernel.dmesg_restrict=1
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.default.accept_redirects=0
net.ipv4.tcp_syncookies=0
vm.swappiness=0
vm.vfs_cache_pressure=200
vm.dirty_background_ratio=5
vm.dirty_ratio=10
vm.dirty_expire_centisecs=1500
vm.dirty_writeback_centisecs=300
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.ip_local_port_range = 2000 65000
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 4096
文件系统相关
关闭swap
swapoff -a
永久关闭swap
vi /etc/fstab
删除 swap一行.
挂载其他硬盘
mkdir -p {/data1,/data2,/data3}
初始化卷
fdisk -l |grep "/dev"
查看为挂载的硬盘
然后执行
fdisk /dev/vdb 等磁盘初始化
选择 n 新建分区. P 分区. w写入就可以.
lsblk 查看带挂载的信息
mkfs.ext4 /dev/vdb1
mkfs.ext4 /dev/vdc1
mkfs.ext4 /dev/vdd1
开机自动挂载的设置
vim /etc/fstab中新增加
/dev/vdb1 /data1 ext4 defaults,noatime,nodiratime,nodelalloc 0 0
/dev/vdc1 /data2 ext4 defaults,noatime,nodiratime,nodelalloc 0 0
/dev/vdd1 /data3 ext4 defaults,noatime,nodiratime,nodelalloc 0 0
修改一下文件属主:
chown tidb:tidb /data1 -R
chown tidb:tidb /data2 -R
chown tidb:tidb /data3 -R
文件调度器与透明大页
修改磁盘调度器模式
注意 需要改 /etc/rc.d/rc.local 可执行权限
chmod 700 /etc/rc.d/rc.local
cat /sys/block/vda/queue/scheduler
永久设置
关闭透明大页
vi /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled;then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag;then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
echo none > /sys/block/vda/queue/scheduler
echo none > /sys/block/vdb/queue/scheduler
echo none > /sys/block/vdc/queue/scheduler
echo none > /sys/block/vdd/queue/scheduler
# 可以将 echo none 也添加进来 none 是centos8 的叫法
查看方式
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/block/vda/queue/scheduler
# 需要重启后验证
安装部分软件
yum install numactl sysstat ntp -y
关闭防火墙
systemctl disable firewalld && systemctl stop firewalld
systemctl disable cockpit.socket && systemctl stop cockpit.socket
ntpdate ntp.aliyun.com
crontab -e
1 */4 * * * ntpdate ntp.aliyun.com
systemctl enable --now crond
检查项目合计
systemctl status firewalld
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/block/vda/queue/scheduler
ulimit -a
getenforce
安装过程
上传安装包到 一台机器
比如我使用的版本是 7.2 第一步安装软件
cd tidb-community-toolkit-v7.2.0-linux-amd64
执行命令:
./local_install.sh
然后进行处理一下:
source /root/.bash_profile
# 注意离线安装的话 需要 toolkit和server 放到一起不然会提示缺少很多component
# 在线与离线安装的命令基本上一样.
# 最大的不同点是 mirror 是本地的文件,还是外部的地址.
配置文件
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/deploy/tidb"
data_dir: "/data1"
server_configs:
pd:
replication.enable-placement-rules: true
pd_servers:
- host: 172.16.39.101
- host: 172.16.39.102
- host: 172.16.39.103
tidb_servers:
- host: 172.16.39.101
- host: 172.16.39.102
- host: 172.16.39.103
tikv_servers:
- host: 172.16.39.101
- host: 172.16.39.102
- host: 172.16.39.103
tiflash_servers:
- host: 172.16.39.103
data_dir: /data2,/data3
cdc_servers:
- host: 172.16.39.101
- host: 172.16.39.102
- host: 172.16.39.103
monitoring_servers:
- host: 172.16.39.103
grafana_servers:
- host: 172.16.39.103
alertmanager_servers:
- host: 172.16.39.103
在线安装
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
安装 tiup
source /root/.bash_profile
tiup mirror show
安装 cluster
tiup install cluster
升级到最新
tiup update --self && tiup update cluster
tiup update --all 升级所有.
执行一下检查
tiup cluster check ./tidb_cluster.yaml --user tidb -i /home/tidb/.ssh/id_rsa
查看 tidb的版本:
tiup list tidb
进行安装: 最新的稳定是 7.2.0 20230629.
tiup cluster deploy erptidb v7.2.0 ./tidb_cluster.yaml --user tidb -i /home/tidb/.ssh/id_rsa
启动命令为:
tiup cluster start erptidb --init
建立本地的 仓库的方法
tiup mirror clone tidb-community-server-7.2.0-linux-amd64 7.2.0 --os=linux --arch=amd64
arm的话 可以直接使用.
tiup mirror clone tidb-community-server-7.2.0-linux-amd64 7.2.0 --os=linux --arch=arm64
设置镜像的路径:
tiup mirror set /shared_data/tiup
tiup mirror set https://tiup-mirror.example.com/
默认监控信息
http://172.16.39.102:2379/dashboard
默认用户 root 密码为空
http://172.16.39.103:3000/
默认用户 admin 密码 admin
登录数据库以及修改密码:
mysql -u root -p -P 4000 -h 172.16.39.101
默认是空密码 回车就可以登录.
show databases;
set password for 'root'@'%' = 'Test20131127' ;
flush privileges ;
tiup的部分运维操作
tiup cluster list
# 查看集群列表
tiup cluster start $cluster_name
# 启动集群
tiup cluster start ${cluster-name} -R pd
# 单独启动组件
tiup cluster start $cluster_name -N 1.2.3.4:2379,1.2.3.5:2379
# 单独重启某几台机器上面的特定组件.
tiup cluster display $cluster-name
# 查看集群状态
tiup cluster stop $cluster-name
# 关闭集群
tiup cluster stop ${cluster-name} -N 1.2.3.4:4000,1.2.3.5:4000
# 关闭tidb组件 注意 4000 也是 mysql客户端使用的端口.
tiup cluster clean ${cluster-name} --all
# 清理所有的数据
TiDB快速处理参数硬件参数的方法
useradd tidb
echo Test20131127 | passwd --stdin tidb
sed -i '/tidb/d' /etc/sudoers
echo "tidb ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed -i '/^tidb/d' /etc/security/limits.conf
echo "tidb hard nproc 65536
tidb soft nproc 65536
tidb soft nofile 1000000
tidb hard nofile 1000000
tidb soft stack 32768
tidb hard stack 32768" >> /etc/security/limits.conf
scp /etc/sysctl.conf /etc/sysctl.conf_$(date +%Y%m%d%H%M)
cat > /etc/sysctl.conf <<EOF
kernel.sysrq=0
net.ipv4.ip_forward=1
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.tcp_syncookies=1
kernel.dmesg_restrict=1
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.default.accept_redirects=0
net.ipv4.tcp_syncookies=0
vm.swappiness=0
vm.vfs_cache_pressure=200
vm.dirty_background_ratio=5
vm.dirty_ratio=10
vm.dirty_expire_centisecs=1500
vm.dirty_writeback_centisecs=300
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.ip_local_port_range = 2000 65000
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 4096
vm.max_map_count=262144
EOF
sysctl -p
cat > /etc/systemd/system/cpupower.service <<EOF
[Unit]
Description=CPU powersave
[Service]
Type=oneshot
ExecStart=/usr/bin/cpupower -c all frequency-set -g performance
[Install]
WantedBy=multi-user.target
EOF
systemctl enable --now cpupower
swapoff -a
scp /etc/fstab /etc/fstab_$(date +%Y%m%d%H%M)
sed -i '/swap/d' /etc/fstab
# 需要注意这个命令一定要注意安全 必须测试完再重启, 先备份文件
sed -i '/scheduler/d' /etc/rc.d/rc.local
sed -i '/transparent_hugepage/d' /etc/rc.d/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo none > /sys/block/vda/queue/scheduler
echo none > /sys/block/vdb/queue/scheduler
echo none > /sys/block/vdc/queue/scheduler " > /etc/rc.d/rc.local
chmod 777 /etc/rc.d/rc.local
systemctl disable firewalld && systemctl stop firewalld
systemctl disable cockpit.socket && systemctl stop cockpit.socket
yum install -y ntpdate
cat >/etc/cron.d/ntpdate <<EOF
1 */4 * * * ntpdate ntp.aliyun.com
EOF
systemctl enable --now crond
创建时建议手工介入的脚本
挂载新的硬盘
mkdir /data01 /data02
fdisk /dev/vdb
fdisk /dev/vdc
mkfs.ext4 /dev/vdb1
mkfs.ext4 /dev/vdc1
然后挂载新的硬盘
# 方式2
mkdir /data01 /data02
parted /dev/vdc mklabel gpt
parted /dev/vdc mkpart primary ext4 2048s 100%
parted /dev/vdb mklabel gpt
parted /dev/vdb mkpart primary ext4 2048s 100%
mkfs.ext4 /dev/vdb1
mkfs.ext4 /dev/vdc1
echo "/dev/vdb1 /data01 ext4 defaults,noatime,nodiratime,nodelalloc 0 0
/dev/vdc1 /data02 ext4 defaults,noatime,nodiratime,nodelalloc 0 0" >> /etc/fstab
注意可以给将目录廷加上对应的用户权限
chown tidb:tidb /data01 -R
chown tidb:tidb /data02 -R
参数优化部分-需要根据配置单独的配置进行优化
server_configs:
tidb:
log.file.max-days: 1
log.level: error
performace:
max-procs: 4
server-memory-quota: 4G
allow-expression-index: true
tikv:
log.file.max-days: 1
log.level: error
readpool.unified.max-thread-count: 8
storage.block-cache.capacity: 3G
pd:
replication.enable-placement-rules: true
tidb_dashboard: {}
tiflash:
performance.max-procs: 4
tiflash-learner: {}
pump: {}
drainer: {}
cdc: {}
kvcdc: {}
grafana: {}
其他配置
SET GLOBAL tidb_ignore_prepared_cache_close_stmt=on;
SET GLOBAL tidb_enable_fast_analyze=1 ;
SET GLOBAL tidb_rc_read_check_ts=on ;
SET config pd `replication.max-replicas`=1;
SET config tikv `txn-local-latches`=false;
set config tikv `raftstore.apply-pool-size` = 16 ;
set config tikv `raftstore.store-pool-size` = 16 ;
SET GLOBAL tidb_auto_analyze_start_time='01:00 +0000' ;
SET GLOBAL tidb_auto_analyze_end_time='03:00 +0000' ;
SET config tikv `log.level` = 'CRITICAL';
SET config pd `log.level` = 'error';
SET GLOBAL sql_mode='NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
SET GLOBAL tidb_server_memory_limit = "8GB";
SET GLOBAL tidb_mem_quota_query = 1<< 30;
SET GLOBAL tidb_multi_statement_mode='ON' ;
SET GLOBAL tidb_enable_tiflash_read_for_write_stmt=ON;
set GLOBAL tidb_max_tiflash_threads = 4 ;
set @@global.tidb_disable_txn_auto_retry = 0;
set @@global.tidb_retry_limit = 10;
set GLOBAL tidb_partition_prune_mode = `dynamic`;
set global tidb_enable_noop_functions=1 ;
set global sql_require_primary_key=off;
# 注意以下参数与分区表冲突
set GLOBAL tidb_scatter_region=true ;
下载与安装之二
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
/root/.bash_profile
tiup cluster check /deploy/tidb_cluster.yaml --user tidb -i /home/tidb/.ssh/id_rsa
tiup cluster deploy erptidb v6.5.3 /deploy/tidb_cluster.yaml --user tidb -i /home/tidb/.ssh/id_rsa
# 启动命令为:
tiup cluster start erptidb --init
使用mysql登录并且修改密码
alter user root@'%' identified by 'SomePassword' ;
tiup install br:v6.5.3 安装备份恢复软件
tiup install ctl:v6.5.3
增加环境变量 便于后续处理
cat > /etc/profile.d/tidb.sh <<EOF
export PATH=$PATH:/root/.tiup/components/br/v6.5.3:/root/.tiup/components/ctl/v6.5.3
EOF
source /etc/profile.d/tidb.sh
备份恢复数据库
备份
now=`date +%Y%m%d%H`
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin
ssh root@192.168.255.65 "mkdir -p /data/minio/data/tidb25574${now}"
time /root/.tiup/components/br/v7.2.0/br backup full -f '*.*' -f '!information_schema.*' -f '!emetrics_schema.*' --pd "192.168.254.72:2379" --storage "s3://tidb25574${now}" --s3.endpoint "http://192.168.255.65:9000" --send-credentials-to-tikv=true --log-file backupfull.log
恢复 可以单个数据库, 单个表回复, 也可以完整恢复
注意恢复时 数据库建议是空的.
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin
/root/.tiup/components/br/v7.2.0/br restore db --db ERPDATA_ZZ_DEV_0001 --pd "192.168.254.72:2379" --storage "s3://tidb255742023100823" --s3.endpoint "http://192.168.255.65:9000" --send-credentials-to-tikv=true --log-file restore
计划任务备份与处理
crontab -e
1 23 * * * /deploy/br
清理方式
find /minio/data -maxdepth 1 ! -path "/minio/data/.minio.sys" -mtime +5 -exec rm -rf {} \;
设置计划任务:
1 4 * * * /deploy/diskclean
TiDB的搭建与维护过程的更多相关文章
- mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)
文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...
- 深入理解Fabric环境搭建的详细过程
博主之前的文章都是教大家怎么快速的搭建一个Fabric的环境,但是其中大量的工作都隐藏到了官方的脚本中,并不方便大家深入理解其中的过程,所以博主这里就将其中的过程一步步分解,方便大家! 前面的准备工作 ...
- mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下)
继续 mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上) 五.使用监听器启动Spring容器 1.修改pom.xml文件,添加Spring-we ...
- 深入理解Fabric环境搭建的详细过程(转)
前面的准备工作我就不用多说了,也就是各种软件和开发环境的安装,安装好以后,我们git clone下来最新的代码,并切换到v1.0.0,并且下载好我们需要使用的docker镜像,也就是到步骤6,接下来我 ...
- git的本质是资源库和版本(资源)目录的维护过程
仓库的本质: 资源+索引. 对git而言,添加到暂存区的过程是,将单个资源的修改副本保存到资源库,同时维护暂存区目录的过程. git的本质是资源库和版本目录的维护过程. 一.要素 1.资源 2.副本 ...
- vue-cli3.0 脚手架搭建项目的过程详解
1.安装vue-cli 3.0 ? 1 2 3 npm install -g @vue/cli # or yarn global add @vue/cli 安装成功后查看版本:vue -V(大写的V) ...
- Nginx搭建反向代理服务器过程详解
一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...
- Nginx 搭建反向代理服务器过程详解
1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet ...
- CentOS7使用yum详细搭建zabbix3.2过程
本文引用于:http://blog.csdn.net/s3275492383/article/details/62417210 一.准备搭建环境: 1.系统:CentOS7 2.默认有使用linux服 ...
- Docker 企业级镜像仓库 Harbor 的搭建与维护
目录 一.什么是 Harbor 二.Harbor 安装 2.1.Harbor 安装环境 2.2.Harbor安装 2.3 配置HTTPS 三.Harbor 的使用 3.1.登录Harbor并使用 3. ...
随机推荐
- 文心一言 VS 讯飞星火 VS chatgpt (172)-- 算法导论13.3 1题
一.用go语言,在 RB-INSERT 的第 16 行,将新插人的结点 z 着为红色.注意到,如果将 z 着为黑色,则红黑树的性质4就不会被破坏.那么为什么不选择将 z 着为黑色呢? 文心一言: 在红 ...
- Win10笔记本开启热点让手机上网
Win10开启热点让手机上网,笔记本电脑开启热点,笔记本电脑开启WiFi,手机连接笔记本电脑热点上网. 1.前提条件:笔记本电脑网线联网,笔记本电脑支持热点 2.胆子要大,不怕公司网管统计发现你的电脑 ...
- POJ 1156 单调队列优化
原题链接 题意 给我们一个n * m矩阵,要求我们求出一个面积最大的子矩阵,满足其内部的极差小于等于c, 同时宽度小于等于100 输入 m, n, c,求这个最大面积.n,m <= 700,c ...
- KubeEdge在国家工业互联网大数据中心的架构设计与应用
摘要:在18年的时候,工信部开展了一个叫国家创新发展工程,这个工程中提出了要建立一个国家工业大数据中心,中国移动在其中承担了边缘协同与数据采集相关功能的研发.本文将从该项目背景下面临的问题与挑战.技术 ...
- 带你了解数据库的“吸尘器”:VACUUM
摘要:在GaussDB(DWS)中,VACUUM的本质就是一个"吸尘器",用于吸收"尘埃". 下面将从VACUUM的作用.用法.原理等方面进行介绍. 在Gaus ...
- 认识Java的整形数据结构
摘要:java中一切都是对象,为什么int不用创建对象实例化,而可以直接使用? 本文分享自华为云社区<[Java]对基本类型-整型数据结构的认识>,作者: huahua.Dr . 整型数据 ...
- 破解数据匮乏现状:纵向联邦学习场景下的逻辑回归(LR)
摘要:主要介绍了华为云可信智能计算服务(TICS)采用的纵向联邦逻辑回归(LR)方案. 本文分享自华为云社区<纵向联邦学习场景下的逻辑回归(LR)>,作者: 汽水要加冰. 海量训练数据是人 ...
- 1024程序员节献礼,火山引擎ByteHouse带来三重产品福利
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流. 随着信息技术飞速发展,互联网.Web3.物联网.人工智能相继出现. 在这近三十年的高速发展中,"程序 ...
- 收钱吧与火山引擎VeDI合作一年后 有了哪些新变化?
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 收钱吧正在和火山引擎数智平台(VeDI)跑出一条业务提效新通路. 相关数据显示,收钱吧的日服务人次就近 ...
- 用 Java?就用国产轻量框架: Solon v1.10.2
相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 - 10 倍. (更快) qps 高 2- 3 倍. (更高) 运行时内存节省 1/3 ~ 1/2. (更少) 打包 ...