Springboot 开发助力
开发涉及到文档
1. Linux 安装CentOS7
链接:https://pan.baidu.com/s/1P5aAjk9aML7Iw8VmCNN2Gw
提取码:7ksd
2.Docker环境搭建
参考官方文档Linux CentOS安装:https://docs.docker.com/engine/install/centos/
Docker.pdf 已放到百度网盘
Docker CE JIANDAN简单操作
卸载原有的环境:
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装对应的依赖环境和镜像地址
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装过慢设置镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo
直接安装docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io
3. Git安装和TortoiseGit
Git安装包:Git-2.26.2-64-bit 已放到百度网盘
TortoiseGit安装包:TortoiseGit-2.10.0.2-64bit 已放到百度网盘
安装文档:Git安装和TortoiseGit详细使用教程【基础篇】
4. 人人开源学习网址(gitee)
Gitee网址:https://gitee.com/renrenio
5. SpringCloudAlibaba
GitHub地址(中文介绍):https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/README-zh.md
- 注册中心:Nacos
- 配置中心:Nacos
- 负载均衡:Ribbon
- 声明式服务调用:OpenFegin
- 服务容错:Sentinel
- 网关服务:Gateway
- 链路监控:Sleuth
- 分布式事务:Seata
介绍SpringCloudAlibaba
家族成员以及主要功能。一定要引入Manager后才可以引入spring-cloud-alibaba-***
,否则cloud与boot
会冲突
6. cloud与boot
版本对应的映射
Spring Boot
单体应用升级Spring Cloud
微服务最佳实践:官方文档
7. Nacos搭建
Nacos具有注册中心与配置中心,两大功能:GitHub查看并下载 官方配置文档(中文)
8. Mybatis Plus
9.Vue 合集
Vue 3文档
其中也包含了比较有名的插件
10. Element Plus
前端很火的UI插件,网上教程或者公司都爱使用
以上两个使用需要Vue加载对应组件后,方可使用。二者使用层面上,有的地方向通,有的地方不通。
11. 优雅转换mapstruct-plus
mapstruct-plus对标BeanUtil的方法,BeanUtil是通过反射的方式完成赋值的,要求属性名称相同,而mapstruct-plus是通过get/set完成赋值的,且可以做不同字段名的映射。推荐~!!!
12. 阿里云 OOS
OOS主要是用于存储一些不是很大,但很重要的文件、图片等。以流的方式存到云端,可以前台存储、读取,也可以后端存储、读取,
阿里云对象存储服务(Object Storage Service,简称OSS),是阿里云对外提供的海量、安全、低成本、高可靠的云存储服务。您可以通过本文档提供的简单的REST接口,在任何时间、任何地点、任何互联网设备上进行上传和下载数据。基于OSS,您可以搭建出各种多媒体分享网站、网盘、个人和企业数据备份等基于大规模数据的服务。
13. ElasticSearch相关安装
ElasticSearch&Kibana 学习资料已经存放到百度网盘(ElasticSearch学习资料.md)
###############
# 索引 <==> 数据库
# 文档 <==> 数据库中的表
# 文本内容 <==> 表中的数据
# ES <==> MYSQL/ORACLE
# Kibana <==> navicat/sqlyog
###############
ElasticSearch
ElasticSearch在整个系列中类似MySql。数据存储为json格式,其索引以key-vakue存储,名为倒排索引。
Linux下使用docker安装 es
1. 拉取镜像
docker pull elasticsearch:7.4.2
2. docker创建容器需要挂载(以实际情况进行调整)
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host : 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
3. docker 创建容器
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.4.2
4. 启动项目
4.1 elasticsearch.yml配置文件的 : 两边需要添加空格,否则报错
4.2 chmod -R 777 /mydata/elasticsearch/ 挂载文件要有权限,否则报错
5. 验证启动
浏览器测试访问:http://192.168.56.100:9200,返回200并显示json数据为启动陈宫
注意:
ES最新版本不支持jdk8,启动报错,需要下载以前版本:elasticsearch-7.6.1(此版本最佳适配jdk11,但jdk8也能启动.。7.4.2似乎适配JDK8未测试)
Kibanan
Kibanan的安装就相当于安装MySQL的客户端SQLYog。它的存在就是配合ES来使用的。读取的也是ES中数据。
但下载时需注意,应选择与Elasticsearch对应版本的Kibana Kabanan版本下载页面
Kibanan.yml 文件中需要注意的几个参数
# 服务端口号
server.port: 5601
# 允许访问的IP,如果允许任何IP访问此处输入0.0.0.0
server.host: "localhost"
# 服务名称
server.name: "kibana"
# The URLs of the Elasticsearch instances to use for all your queries.
# ES服务地址
elasticsearch.hosts: ["http://localhost:9200"]
# 创建的索引 有需求打开
#kibana.index: ".kibana"
# 登录ES使用的用户名和密码 有需求打开
#elasticsearch.username: "kibana"
#elasticsearch.password: "pass"
# 设置kibana为中文
i18n.locale: "zh-CN"
14. Kibana语言之 DSL
kibana DSL语言查看文档
大佬的文档内容很全,适合忘记时查看语句。但如果想学习,建议还是要看视频一点一点写。
DSL关键字简述
15.boot集成es版本配置
es-java-rest-high-maven.html
这个路径是官方推荐maven使用版本。但Spring boot
的集成包(spring-boot-dependencies
)已经加载了对应的es版本,二者最好统一一下。
16. Nginx:反向代理、负载均衡
注:
- 反向代理,就是代理客户端向服务端发送请求。反向代理时,host需要手动添加。
server {
listen 80; // 这个是端口号
server_name malleds; // 这个是域名
location / {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8070; # 指向某一具体地址,算配置完成了
}
}
- 负载均衡,就是做服务器集群
http {
# 做成集群的方式
upstream malleds {
server 127.0.0.1:8070;
server xxx.x.x.x:xxxx;
server xxx.x.x.x:xxxx;
server xxx.x.x.x:xxxx;
}
server {
listen 80;
server_name malleds;
# 我将所有的 js、css、png等静态文件,放在html目录下。
# root 后面的地址,可以写相对地址,或者绝对地址。
# 相对地址 是从nginx1.20.x 根目录开始的。
location /static/ {
root html;
}
location / {
proxy_set_header Host $host;
proxy_pass http://malleds; # 指向集群别称,算配置完成了
}
}
}
17. JMeter 压力测试
- 官方网址(很慢)
- 下载安装文档(软件在百度网盘中查找,按照文档安装)
- 页面永久中文显示,将/bin/jmeter.properties文件中,language=en 改为 language=zh_CN
- Jmeter的基本使用(Jmeter压测实战,适合新手)
18. 压测
硬件决定上限(单看nginx测试就能区分,我与老师的电脑性能差别)
软件(中间件)越多,性能损失就越大,大多数的损失都是在数据的交互。
添加索引,确实会添加吞吐量,增长多少,要看硬件设备
压力测试内容 | 压力测试的线程数 | 吞吐量/s | 90%响应时间 | 99%响应时间 |
---|---|---|---|---|
Nginx | 50 | 7,385 | 10 | 70 |
Gateway | 50 | 23,170 | 3 | 14 |
单独测试服务 | 50 | 23,160 | 3 | 7 |
Gateway+服务 | 50 | 8,461 | 12 | 46 |
Nginx+Gateway | 50 | |||
Nginx+Gateway+服务 | 50 | 2,816 | 27 | 42 |
一级菜单 | 50 | 1,321 | 48 | 74 |
三级分类压测 | 50 | 12 | 4000 | 4000 |
首页全量数据(DB-Themleaf) | 50 | 2 | ||
一级菜单(DB-索引) | 50 | 1900 | 40 | 70 |
三级分类压测(索引) | 50 | 34 | 1599 | 1700 |
首页全量数据(DB-Themleaf-放开缓存) | 50 | 30 | 。。。 | 。。。 |
个人测试
压力测试内容 | 压力测试的线程数 | 吞吐量/s | 90%响应时间 | 99%响应时间 |
---|---|---|---|---|
Nginx 单测,自测 | 50 | 2820 | 19 | 34 |
Gateway 单测,自测 | 50 | 4030 | 18 | 72 |
Nginx+Gateway 自测 | 50 | 845 | 77 | 129 |
一级菜单 自测 | 50 | 670 | 120 | 314 |
一级菜单 自测,添加索引 | 50 | 897 | 97 | 218 |
三级分类压测 自测,添加索引 | 50 | 21.8 | 3149 | 4157 |
全网页 自测,动静分离 | 50 | 180 | 389 | 916 |
三级分类压测 自测,优化代码 | 50 | 892 | ||
三级分类压测 自测,redis | 50 | 2090 | 29 | 189 |
19. 性能分析工具-jvisualvm
工具:(这两个工具都是JDK自带的工具,可以通过搜索框找到。)
- jconsole 功能简单
- jvisualvm 功能全(重点),安装
Visual GC
直观显示堆变化
在搜索插件时,如果发现无内容或者无反应,问题点在插件地址错误,需要结合你的jdk的版本来选择对应的插件的版本
20. 分布式缓存:击穿、穿透、雪崩
// Redis 引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>