基础篇01-分布式组件介绍
使用vagrant快速创建虚拟机(已改用vm)
#启动
vagrant up
#连接
vagrant ssh
#重启
vagrant reload
安装docker
# 安装mysql
```bash
# 下载
docker pull docker.1ms.run/drupalci/mysql-5.7:latest
#启动
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d docker.1ms.run/drupalci/mysql-5.7:latest
#进入容器
docker exec -it mysql /bin/bash
#连接
docker exec -it mysql mysql -uroot -proot
安装redis
#拉取
docker pulldocker.1ms.run/library/redis:latest
#启动
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d docker.1ms.run/library/redis:latest redis-server /etc/redis/redis.conf
#连接命令
docker exec -it redis redis-cli
远程连接赋权
SELECT user, host FROM mysql.user WHERE user='root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.69.1' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;

创建工程
- gulimall-test
在网站上先创建后拉取
导入spring web 和openFeign组件
导入人人开源项目
- 创建数据库gulimall-admin
- 安装nodeJs
- 设置淘宝镜像
- npm install报错 "解决chromedriver@2.27.2install:
node install.js的问题"
报错解决方法 - 登陆
启动前后端项目
admin/admin
代码生成器
- 下载人人开源代码生成器项目
- 改项目配置
![image]()

- 启动项目
登陆首页,并生成代码
生成的main文件夹进行粘贴
删除resources目录下的src(前端代码,暂时用不到) - 解决import报错
创建maven项目gulimall-common
加相关依赖mybatis-plus lombook - product整合mybatis-plus
导入依赖
配置数据源
mysql驱动
分布式组件
springCloud Alibaba介绍
- 参考文档SpringCloud组件和spring官网
添加nacos注册发现
- 添加依赖
- 启动类加注解
- 模块的项目名称是必须的
- 配置nacos地址
Feign
- 引入openfeign依赖
- 编写一个接口,告诉springCloud这个接口需要调用远程服务,并加入注解并扫描远程接口位置,在客户端中
![image]()
![image]()
- 在接口中声明每一个方法都是调用远程服务的哪个请求,即和服务端的接口定义,请求路径保持一致(需要完整的请求路径)
- 开启远程调用功能,即注解
nacos作为配置中心

- 会默认加载一个项目名.properties的配置文件
- 默认public命名空间
- 利用命名空间做环境隔离
- 基于每一个微服务创建命名空间进行隔离
![image]()
![image]()
- 加载多数据集
网关GateWay
- 官网学习
![image]()
2.创建项目
![image]()

选择依赖gateWay
3. 服务注册发现
- 加入注解
- 配置nacos地址
- 启动时候报数据库异常
#添加
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
014
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
</properties>
021 Nacos作为注册中心
所有的nacos依赖放入common模块
045 三级分类-递归树形结构
- 导入数据
![image]()
046 API三级分类-配置网关路由与路径重写
- 新增目录-商品系统
![image]()
![image]()
- 新增菜单-分类维护
![image]()
![image]()
![image]()
- 数据会记录到数据表中sys_menu
- 创建文件夹product
![image]()
- 修改地址到网关
![image]()
- renren-fast加入nacos
没有加入配置中心所以启动报错,不影响使用 - 网关路由后获取验证码
![image]()
047 网关统一配置跨域
网关代理,配置跨域请求,非简单请求会发送预检请求

048 树形展示三级分类
- 精确路由放在前面,高优先级
049 删除功能
- 逻辑删除
![image]()
![image]()
066 JSR303







068 分组校验

154 缓存使用-压力测试,内存泄漏

- 解决方案
![image]()
![image]()
![image]()
155-156 缓存击穿,穿透和雪崩
-
加锁,单体应用
![image]()
查了两遍数据库
![image]()
![image]()
-
分布式锁
![image]()
157本地锁-分布式环境下的问题
- 复制服务
![image]()
![image]()
158分布式锁原理及使用

- 设置过期时间
![image]()
![image]()
![image]()
- 原子操作
![image]()
- UUID不要删除别人的锁
![image]()
- lua脚本 解锁
![image]()
![image]()
![image]()
![image]()
![image]()
159 分布式锁redission









































浙公网安备 33010602011771号