谷粒商城分布式基础篇

谷粒商城分布式基础篇
谷粒商城分布式高级篇(上)
谷粒商城分布式高级篇(中)
谷粒商城分布式高级篇(下)

文章目录


简介

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

在这里插入图片描述

在这里插入图片描述

环境

使用vagrant快速创建linux虚拟机

  1. 使用virtualbox 6.1.10
  2. 使用vagrant2.2.9
  3. cmd窗口 vagrant 初始化 centos
vagrant init centos7 https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7.box
  1. vagrant up vagrant ssh(注意在有vagrantfile的目录 启动vagrant命令)

虚拟机网络设置

未设置前需手动指定端口映射
在这里插入图片描述
在这里插入图片描述
给虚拟机固定IP地址

VagrantFile 修改配置
在这里插入图片描述
在这里插入图片描述
vagrant reload
互相ping 通

linux安装docker

网上都有: 教程
如果国内镜像下载docker很慢,可以试试用手机热点下载,亲测有效
docker 开机自启 systemctl enable docker

在这里插入图片描述

配置docker阿里云镜像加速

docker安装MySQL

  1. 下载镜像文件docker pull mysql:5.7
  2. 创建实例并启动
    docker run -p 3306:3306 --name mysql \
    -v /mydata/mysql/log:/var/log/mysql \
    -v /mydata/mysql/log:/var/lib/mysql \
    -v /mydata/mysql/conf:/etc/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    -d mysql:5.7
    
  3. 参数说明
    -p 3306:3306 将容器的3306端口映射到主机的3306端口
    --name mysql 容器命名为 mysql
    -v /mydata/mysql/cong:/etc/mysql 将docker的实例配置文件夹挂载到主机
    -v /mydata/mysql/log:/var/lib/mysql 将docker的日志文件夹载到主机
    -v /mydata/mysql/conf:/etc/mysql 将docker的配置文件夹挂载到主机
    -e MYSQL_ROOT_PASSWORD=root 初始化root用的密码
  4. docker ps 查看在运行的容器
  5. 创建mysql配置文件 vi /mydata/mysql/conf/my.cnf
    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
    skip-name-resolve
    
  6. 设置容器随docker自启动 docker update mysql --restart=always
  7. 进入mysql容器内部的命令 docker exec -it mysql /bin/bash/
mysql启动报错

启动失败 docker logs [容器id] 查看日志

2023-01-19 01:09:34+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.41-1.el7 started.
2023-01-19 01:09:34+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
        command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.JmvWhCmjVf
        mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

配置文件有问题
删掉docker 容器

sudo mkdir -p /etc/mysql/conf.d

sudo docker run --privileged=true \
 -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/conf.d \
 -e MYSQL_ROOT_PASSWORD=root \
 -d mysql:5.7

docker安装redis

  1. 下载 redis 镜像 docker pull redis
  2. 创建实例并启动
    mkdir -p /mydata/redis/conf
    touch /mydata/redis/conf/redis.conf
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
  1. 使用redis镜像执行redis-cli命令连接 docker exec -it redis redis-cli
  2. 开启redis持久化存储
    vi /mydata/redis/conf/redis.conf
    # 添加如下内容
    appendonly yes
    
  3. 设置容器随docker自启动 docker update redis --restart=always

开发工具&环境安装配置

  1. 配置好maven

  2. idea 插件 lombok mybatisX gitee

  3. vscode 插件
    在这里插入图片描述
    在这里插入图片描述

配置git-ssh

  1. 下载并安装git
  2. 任意位置 git bash
    配置用户名
    git config --global user.name "username" username 随意
    配置邮箱
    git config --global user.email "xx@xx.com" 注册gitee 时用的邮箱
  3. 配置ssh 免密登录
    git bash 中 ssh-keygen -t rsa -C "xx@xx.com" 连续三次回车
    cat ~/.ssh/id_rsa.pub 或找到生成路径查看生成的密钥
    进入gitee设置中添加ssh公钥
    ssh -T git@gitee.com 测试是否成功

项目结构创建&提交到码云

码云创建仓库
在这里插入图片描述
idea 新建版本控制项目
在这里插入图片描述

模块创建示例
在这里插入图片描述
必要组件的导入
在这里插入图片描述
在这里插入图片描述

根目录新建pom 聚合服务
在这里插入图片描述
pom添加进maven工程
在这里插入图片描述
设置忽略文件
第一次commit
在这里插入图片描述

数据库初始化

创建5个数据库并导入表
在这里插入图片描述

快速开发

人人开源搭建后台管理系统

克隆两个项目
在这里插入图片描述
renren-fast属于后端模块导入工程
创建后台管理的数据库并导入
在这里插入图片描述
修改配置 并运行
在这里插入图片描述

逆向工程搭建使用

clone导入renren-genertor
填入需要逆向的数据库地址,模块名,包名

创建 common 模块,抽取各个公共依赖放入
每个模块都依赖common

在这里插入图片描述

调整生成器Controller的模板 注释这一段
在这里插入图片描述

配置&测试微服务基本CRUD功能(整合MyBatis-Plus)

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

主键自增

依法炮制各个模块

nodejs

安装 10.* . * 版本,与教学中大版本保持一致
注意设置淘宝镜像源
npm install时 模块 node-sass还是从github中拉取,导致拉取失败所以还需单独设置 此模块的镜像源

npm config set registry http://registry.npm.taobao.org/

npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/

//运行前端项目

npm install

npm run dev

分布式组件

SpringCloud Alibaba简介

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

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检查 spring-cloud 、spring-boot、spring-cloud-alibaba 的对应版本

需根据 对应版本说明 调整 自身项目的对应版本,或严格按照教程所示版本

SpringCloud Alibaba-Nacos注册中心

在这里插入图片描述

在这里插入图片描述
common中导入nacos
在这里插入图片描述
在这里插入图片描述
1.1.3版本 启动nacos
配置文件nacos地址和模块名
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
模块名
在这里插入图片描述

SpringCloud-OpenFeign测试远程调用

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

SpringCloud Alibaba-Nacos配置中心-简单示例

在这里插入图片描述

  1. 导入配置在这里插入图片描述
    在这里插入图片描述
    测试
    未使用配置中心
    在这里插入图片描述
    在这里插入图片描述
    使用配置中心

配置中心配置列表新建配置,默认为模块名的properties文件
controller上注解动态刷新配置
在这里插入图片描述

SpringCloud Alibaba-Nacos配置中心-命名空间与配置分组

在这里插入图片描述
配置集
在这里插入图片描述
在这里插入图片描述
配置文件中可指定命名空间,可以开发环境隔离
在这里插入图片描述
也可以
在这里插入图片描述

配置分组
在这里插入图片描述
可以分组隔离
bootstrap.properties文件中
在这里插入图片描述

SpringCloud Alibaba-Nacos配置中心-加载多配置集

就是 拆分配置文件,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SpringCloud-Gateway网关核心概念&原理

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一个路由里面包含多个Predicate和多个Filter
请求到达网关,网关利用断言 Predicate 判断这次请求是否符合路由规则 Route 如果符合了,经过一系列 Filter 路由到指定地方
在这里插入图片描述

SpringCloud-Gateway-创建&测试API网关

spring初始化向导创建一个moudle网关

在这里插入图片描述

在这里插入图片描述

配置模块将模块注册到 nacos 注册中心和配置中心
排除数据库相关配置
在这里插入图片描述

测试application.yml
在这里插入图片描述

前端基础

技术栈简介

在这里插入图片描述

ES6

let&const

在这里插入图片描述

解构&字符串

箭头函数

Vue

介绍&HelloWorld

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
初始化vue
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本语法&插件安装

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

整合ElementUI快速开发

商品服务-API

三级分类

查询-递归树形结构数据获取

product控制器下
在这里插入图片描述

  1. 查出所有
  2. 组装父子结构

配置网关路由与路径重写

前端新增目录
在这里插入图片描述
新增菜单
在这里插入图片描述
在element组件加入 Tree树形控件
在这里插入图片描述
在这里插入图片描述
发现请求路径错误
在这里插入图片描述
修改基准地址
在这里插入图片描述

转发至网关 88 端口

发现验证码错误,将后端管理模块renren-fast也加入注册中心,也由网关分配地址
网关路径重写为正确地址
在这里插入图片描述
在这里插入图片描述

网关统一配置跨域

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在网关模块配置跨域

在这里插入图片描述
去除 renren-fast 多余的跨域配置

查询-树形展示三级分类数据

配置商品服务的网关
粒度大的往后,粒度细的提前
在这里插入图片描述
前端获取到数据
在这里插入图片描述
正确显示
在这里插入图片描述

删除-页面效果

使用scope
在这里插入图片描述
在这里插入图片描述
只有在点击箭头才收缩节点
在这里插入图片描述
限制按钮显示
在这里插入图片描述
添加选择框
在这里插入图片描述
设置节点唯一标识
在这里插入图片描述
在这里插入图片描述

删除-逻辑删除

category控制器中delete方法自定义逻辑删除
查看官方文档
在这里插入图片描述
此步可省略,直接在字段属性上加@TableLogin注解
在这里插入图片描述

删除-删除效果细化

在这里插入图片描述
确认提示框
默认展开节点
因为做了mybtis的逻辑删除,所以查询时会自动过滤逻辑标记字段

新增-新增效果完成

在这里插入图片描述
表单插件,显示表单插件el-dialog
在这里插入图片描述

修改-基本修改效果完成

同增加差不多
在这里插入图片描述

修改-拖拽效果

el-tree属性
在这里插入图片描述
在这里插入图片描述

修改-拖拽数据收集

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

修改-拖拽功能完成

品牌管理

使用逆向工程的前后端代码

品牌表在这里插入图片描述

新增在这里插入图片描述

在这里插入图片描述

效果优化与快速显示开关

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

云存储开通与使用

在这里插入图片描述

  1. 开通oss
  2. 创建bucket
  3. 安装sdk
  4. 开通子用户的Accesskey
    在这里插入图片描述

OSS获取服务端签名

创建第三方模块,整合oss
在这里插入图片描述
排除数据库配置
在这里插入图片描述
三方服务模块创建 osscontroller 获取签名的接口

在这里插入图片描述
报错
在这里插入图片描述
OSSClient 组件未找到
原因
在这里插入图片描述
对象存储环境的自动配置中 容器 Bean放的ossClient OSS 是接口类型
在这里插入图片描述
自动注入时要保持一致
在这里插入图片描述—>在这里插入图片描述
配置好后也要将此模块加入到网关中
在这里插入图片描述

如果出现 OSS项目启动报错 Field ossClient not found
那么手动注入

OSS前后联调测试上传

将前端编写好的上传组件加入到 项目 commonents 中
在这里插入图片描述
替换文件中的 bucket 地址
在这里插入图片描述
在要用到文件上传功能的地方导入组件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小问题,接口方面优化返回值
在这里插入图片描述
设置bucket跨域权限

在这里插入图片描述

表单校验&自定义校验器

使用 elementui的 imge组件
在这里插入图片描述
报错没有注册 imge组件
在这里插入图片描述
组件注册步骤

  1. main.js中导入 src目录的element-ui在这里插入图片描述
  2. src目录下的element-ui中的index.js中导入了各个注册的组件

在这里插入图片描述
3. 可按需导入需要的组件
4. 此报错为 此版本 element-ui 没有以下组件,删除这些组件即可
在这里插入图片描述

页面的校验

在这里插入图片描述
校验规则命名为了 dataRule
在这里插入图片描述
在这里插入图片描述

自定义的校验规则

与上区别为 自定义了校验方法,
在这里插入图片描述

在这里插入图片描述
也可以将校验器直接定义在内部
在这里插入图片描述

JSR303数据校验

在bean加入校验注解
在这里插入图片描述

controller开启校验
在这里插入图片描述
还可以自定义返回提示
在这里插入图片描述
自定义校验返回,紧跟被校验对象加BindingResult
在这里插入图片描述
获取和处理校验返回结果
在这里插入图片描述
可以标注多个校验注解
在这里插入图片描述

统一异常处理

用到SpringMVC提供的 ControllerAdvice
新建一个包存放统一处理,指定需要处理的包basepackge
在这里插入图片描述
取消方法中的异常处理,都交给统一处理
在这里插入图片描述
@ExceptionHandler 感知异常和指定的异常类
在这里插入图片描述
发现异常类型为
在这里插入图片描述
遂可以精确获取异常
在这里插入图片描述
上面处理精确异常,而后需要一个捕获所有异常
在这里插入图片描述
并统一异常代码
在这里插入图片描述
再公共模块中编写统一异常码的枚举类
在这里插入图片描述
在这里插入图片描述

JSR303分组校验

groups必须指定一个接口类型,此接口类型仅作标识用,无需任何实现
在这里插入图片描述
接口方法指定校验组,使用spring提供的validated
在这里插入图片描述

JSR303自定义校验注解

在这里插入图片描述

  1. 编写一个注解,必须满足jsr303规范,查看自带注解可以看到规范
    在这里插入图片描述
  2. 校验注解的规范,两部分,原信息和三个属性,和一个注解传入的值vals

在这里插入图片描述

  1. 配置错误提示信息,一般为当前包全路径,在resource
    在这里插入图片描述
    在这里插入图片描述
  2. 指定用什么自定义的类来校验
    在这里插入图片描述
    validateBy的值为数组且类型为 ConstraintValidator 接口所以,自定义的检验类必须实现ConstraintValidator这个接口
    在这里插入图片描述
  3. ConstraintValidator 接口有两个泛型,第一个泛型指定注解,第二个泛型为被校验数据的基本类型

在这里插入图片描述
6. 编写自定义校验器,添加两个实现方法
在这里插入图片描述
initialize 初始化方法,获取校验注解上输入的 vals 的值 ,并封装在 set 数组里,方便isValid方法处理
在这里插入图片描述

在这里插入图片描述
isValid方法对输入的值进行判断处理, Integer value参数为输入的值
在这里插入图片描述
7. 校验器的原信息中指定刚才编写的检验方法

在这里插入图片描述

小修改,
在这里插入图片描述
在这里插入图片描述

概念-SPU&SKU&规格参数&销售属性

在这里插入图片描述
在这里插入图片描述
spu与sku的关系类似与 java中 类与对象的关系

在这里插入图片描述
spu => 基本属性 => 规格与包装
sku=>销售属性
在这里插入图片描述

关联关系

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

属性分组

前端组件抽取&父子组件交互

导入菜单表
在这里插入图片描述
在这里插入图片描述
抽取一个三级分类
在这里插入图片描述
使用分隔jianlan
在这里插入图片描述
导入抽取的三级分类
在这里插入图片描述
导入自动生成 的 attrgroup组件及其方法
在这里插入图片描述
父子组件传递数据
在这里插入图片描述
tree组件中的事件函数
在这里插入图片描述
函数中向父组件发送数据 this.$emit

在这里插入图片描述
父组件的子引用部分可以 接受这个事件
在这里插入图片描述
父组件就可以处理这个事件
在这里插入图片描述
就可以获取到被点击的 catid

获取分类属性分组

在这里插入图片描述
查询的 是 pms_attr_group
在这里插入图片描述
一个被封装的标准分页返回
在这里插入图片描述
当前类默认生成的方法 this.page,传入分页信息page 和查询条件封装 queryWrapper
在这里插入图片描述
构造查询条件

select * from pms_attr_group where catelog_id=? and (attr_group_id=key or attr_group_name like %key%)

等同于上面的sql语句
在这里插入图片描述
前端部分 点击三级分类后 重新加载
在这里插入图片描述

分组新增&级联选择器

前端 级联选择器的使用
在这里插入图片描述
在这里插入图片描述
在生命周期创建时 触发此查询
在这里插入图片描述

设置级联选择器的 属性
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
后端去掉children的空集合

在这里插入图片描述
级联选择器的选中值为数组
在这里插入图片描述
所以提交时,只提交数组最后一个元素
在这里插入图片描述

分组修改&级联选择器回显

级联选择器的正确显示需要一个数组,所以要根据cateLogId查询完整的 父子 路径

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
前端,关闭后清空选择器
在这里插入图片描述
在这里插入图片描述
可搜索
在这里插入图片描述

品牌管理-品牌分类关联与级联更新

配置分页插件
在这里插入图片描述
在这里插入图片描述
品牌管理页的查询
在这里插入图片描述

替换前端已编写好的功能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关联表设置了两个字段的冗余
在这里插入图片描述

重新编写实现,做冗余
在这里插入图片描述

在这里插入图片描述
保证冗余数据的准确性,修改相关冗余时,同时修改冗余
修改 品牌修改接口增加冗余修改
在这里插入图片描述
在这里插入图片描述
分类修改时同上
在这里插入图片描述
首先保证基本更新,再冗余更新
在这里插入图片描述
在这里插入图片描述
mybatis 快捷 创建sql
在这里插入图片描述
使用 @Param 注解快捷传入sql 值
在这里插入图片描述
在这里插入图片描述

平台属性

规格参数新增与VO

属性分组 查询全部时 没有模糊查询
更改接口细节
在这里插入图片描述
什么是vo ,vo是根据当次接口需要的数据字段,替代原装持久层的
接受页面传递来的数据,封装对象
将业务处理完成的对象,封装成页面要用的对象
在这里插入图片描述
在这里插入图片描述
多了attrGroupId
在这里插入图片描述

重新编写保存接口

在这里插入图片描述

规格参数列表

在这里插入图片描述
在这里插入图片描述
相应数据多了 两个字段
在这里插入图片描述
可以继承基本的,再添加多出的

规格修改

在这里插入图片描述
数据的返回类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

销售属性维护

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

查询分组关联属性&删除关联

点击关联理出当前分组关联的所有属性
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这述
提交的一个自定义数据可以封装为vo
在这里插入图片描述

查询分组未关联的属性

新建关联
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新增分组与属性关联

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

新增商品

调试会员等级相关接口

在这里插入图片描述
配置会员服务的路由.

前端编写好的文件导入
在这里插入图片描述

获取分类关联的品牌

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
提到规范
在这里插入图片描述

获取分类下所有分组以及属性

在这里插入图片描述
在这里插入图片描述
根据上图所示响应数据封装新的vo

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

商品新增vo抽取

在这里插入图片描述
在这里插入图片描述
复制需要提交的json数据,格式化json数据
在这里插入图片描述
使用工具 json转java 实体类,设置好 类名和包名生成并下载,导入到工程
在这里插入图片描述

商品新增业务流程分析

调整 上一步生成的vo 价格字段都设为BigDeciaml,主键都为Long类型
由于有 Lomobank 所以去掉 get set
在这里插入图片描述
加上事务注解
在这里插入图片描述

保存SPU基本信息

保存SKU基本信息

调用远程服务保存优惠等信息

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

商品保存debug完成

设置一个 compund 统一启动
在这里插入图片描述
给每个服务设置内存占用

在这里插入图片描述
设置 mysql 隔离级别为读未提交,可以读到 事务中已经提交的数据,事物失败后会回滚
在这里插入图片描述

在这里插入图片描述

商品保存其他问题处理

过滤空的图片路径

商品管理

SPU检索

复杂检索
在这里插入图片描述
统一日期格式化
在这里插入图片描述

SKU检索

在这里插入图片描述

仓储服务-API

仓库管理

整合ware服务&获取仓库列表

  1. 加入注册中心
  2. 加入网关路由

查询库存&创建采购需求

在这里插入图片描述
在这里插入图片描述
查询采购需求
在这里插入图片描述

合并采购需求

在这里插入图片描述

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

领取采购单

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

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

完成采购

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

商品服务-API-商品管理-SPU规格维护

显示400,给admin表加入菜单

INSERT INTO sys_menu (menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (76, 37, '规格维护', 'product/attrupdate', '', 2, 'log', 0);

在这里插入图片描述

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

分布式基础篇总结

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值