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的搭建与维护过程的更多相关文章

  1. mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)

    文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...

  2. 深入理解Fabric环境搭建的详细过程

    博主之前的文章都是教大家怎么快速的搭建一个Fabric的环境,但是其中大量的工作都隐藏到了官方的脚本中,并不方便大家深入理解其中的过程,所以博主这里就将其中的过程一步步分解,方便大家! 前面的准备工作 ...

  3. mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下)

    继续 mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上) 五.使用监听器启动Spring容器 1.修改pom.xml文件,添加Spring-we ...

  4. 深入理解Fabric环境搭建的详细过程(转)

    前面的准备工作我就不用多说了,也就是各种软件和开发环境的安装,安装好以后,我们git clone下来最新的代码,并切换到v1.0.0,并且下载好我们需要使用的docker镜像,也就是到步骤6,接下来我 ...

  5. git的本质是资源库和版本(资源)目录的维护过程

    仓库的本质: 资源+索引. 对git而言,添加到暂存区的过程是,将单个资源的修改副本保存到资源库,同时维护暂存区目录的过程. git的本质是资源库和版本目录的维护过程. 一.要素 1.资源 2.副本 ...

  6. 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) ...

  7. Nginx搭建反向代理服务器过程详解

    一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...

  8. Nginx 搭建反向代理服务器过程详解

    1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet ...

  9. CentOS7使用yum详细搭建zabbix3.2过程

    本文引用于:http://blog.csdn.net/s3275492383/article/details/62417210 一.准备搭建环境: 1.系统:CentOS7 2.默认有使用linux服 ...

  10. Docker 企业级镜像仓库 Harbor 的搭建与维护

    目录 一.什么是 Harbor 二.Harbor 安装 2.1.Harbor 安装环境 2.2.Harbor安装 2.3 配置HTTPS 三.Harbor 的使用 3.1.登录Harbor并使用 3. ...

随机推荐

  1. 文心一言 VS 讯飞星火 VS chatgpt (172)-- 算法导论13.3 1题

    一.用go语言,在 RB-INSERT 的第 16 行,将新插人的结点 z 着为红色.注意到,如果将 z 着为黑色,则红黑树的性质4就不会被破坏.那么为什么不选择将 z 着为黑色呢? 文心一言: 在红 ...

  2. Win10笔记本开启热点让手机上网

    Win10开启热点让手机上网,笔记本电脑开启热点,笔记本电脑开启WiFi,手机连接笔记本电脑热点上网. 1.前提条件:笔记本电脑网线联网,笔记本电脑支持热点 2.胆子要大,不怕公司网管统计发现你的电脑 ...

  3. POJ 1156 单调队列优化

    原题链接 题意 给我们一个n * m矩阵,要求我们求出一个面积最大的子矩阵,满足其内部的极差小于等于c, 同时宽度小于等于100 输入 m, n, c,求这个最大面积.n,m <= 700,c ...

  4. KubeEdge在国家工业互联网大数据中心的架构设计与应用

    摘要:在18年的时候,工信部开展了一个叫国家创新发展工程,这个工程中提出了要建立一个国家工业大数据中心,中国移动在其中承担了边缘协同与数据采集相关功能的研发.本文将从该项目背景下面临的问题与挑战.技术 ...

  5. 带你了解数据库的“吸尘器”:VACUUM

    摘要:在GaussDB(DWS)中,VACUUM的本质就是一个"吸尘器",用于吸收"尘埃". 下面将从VACUUM的作用.用法.原理等方面进行介绍. 在Gaus ...

  6. 认识Java的整形数据结构

    摘要:java中一切都是对象,为什么int不用创建对象实例化,而可以直接使用? 本文分享自华为云社区<[Java]对基本类型-整型数据结构的认识>,作者: huahua.Dr . 整型数据 ...

  7. 破解数据匮乏现状:纵向联邦学习场景下的逻辑回归(LR)

    摘要:主要介绍了华为云可信智能计算服务(TICS)采用的纵向联邦逻辑回归(LR)方案. 本文分享自华为云社区<纵向联邦学习场景下的逻辑回归(LR)>,作者: 汽水要加冰. 海量训练数据是人 ...

  8. 1024程序员节献礼,火山引擎ByteHouse带来三重产品福利

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流.   随着信息技术飞速发展,互联网.Web3.物联网.人工智能相继出现. 在这近三十年的高速发展中,"程序 ...

  9. 收钱吧与火山引擎VeDI合作一年后 有了哪些新变化?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群     收钱吧正在和火山引擎数智平台(VeDI)跑出一条业务提效新通路.   相关数据显示,收钱吧的日服务人次就近 ...

  10. 用 Java?就用国产轻量框架: Solon v1.10.2

    相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 - 10 倍. (更快) qps 高 2- 3 倍. (更高) 运行时内存节省 1/3 ~ 1/2. (更少) 打包 ...