微服务分布式电商项目《谷粒商城》学习笔记

一、基本架构图

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

二、配置

1、安装linux虚拟机
2、下载docker容器
3、在docker容器上添加mysql和redis容器
4、windows下载redis、maven、vscode、node.js、数据库、git
5、git配置github免密登录

三、项目搭建

1、在github/码云创建仓库并拉取到本地,在本地创建并且到分支develop
1)、创建仓库
在这里插入图片描述
在这里插入图片描述

2)、拉取代码

github拉取master代码
在这里插入图片描述
码云拉取分支feature代码
在这里插入图片描述
2、windows下的idea创建项目微服务
商品服务:com.atguigu.gulimall.product
仓储服务:com.atguigu.gulimall.ware
订单服务:com.atguigu.gulimall.order
会员(用户)服务:com.atguigu.gulimall.member
优惠卷服务:com.atguigu.gulimall.coupon
在这里插入图片描述
1)、IDEA打开项目
在这里插入图片描述
在这里插入图片描述
2)、新建模块(Springboot版本控制在2.2.0,可创建后修改版本号2.2.0)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其他同理可得
在这里插入图片描述
在这里插入图片描述

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

四、数据库

1.开启虚拟机,在windows下通过navicat连接上

注意需要先将文件设置为UTF-8,否则会中文乱码。
在这里插入图片描述
复制相应内容粘贴,运行代码
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.人人开源:https://gitee.com/renrenio

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

将三个项目clone到本地(记得删除.git文件再放入目录),renren-fast-vue作为前台管理系统,renren-fast和renren-generator放在gulimall项目下:
0)、renren-fast-vue
使用vscode打开renren-fast-vue项目
在这里插入图片描述
npm install
在这里插入图片描述

报错请看:
如使用npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass
https://www.cnblogs.com/tw6668/p/12507369.html
https://blog.csdn.net/hancoder/article/details/113821646

npm run dev运行项目
在这里插入图片描述

1)、放入renren-fast
创建gulimall_admin数据库,然后运行sql文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
刷新renren-fast-vue的前端页面(账号:admin、密码:admin)
在这里插入图片描述
即完成前后联调。
在这里插入图片描述

2)、导入renren-generator,用于逆向生成
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
把import导入的删除,注解注释。
在这里插入图片描述

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

补充:导入文件后,缺少工具类,需要从renren-fast中拿。(通过创建gulimall-common共用)

其他同理可得。

3)、公共依赖
在这里插入图片描述

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

在这里插入图片描述

gulimall-common添加公共依赖
在这里插入图片描述

<dependencies>
       <!--mybatis-plus-->
       <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus</artifactId>
           <version>3.2.0</version>
       </dependency>
       <!--lombok-->
       <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <version>1.18.8</version>
       </dependency>
       <!-- httpcomponent包。发送http请求 -->
       <dependency>
           <groupId>org.apache.httpcomponents</groupId>
           <artifactId>httpcore</artifactId>
           <version>4.4.12</version>
       </dependency>
       <dependency>
           <groupId>commons-lang</groupId>
           <artifactId>commons-lang</artifactId>
           <version>2.6</version>
       </dependency>
       <!--导入mysql驱动-->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>8.0.17</version>
       </dependency>

       <!--tomcat里一般都带-->
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>servlet-api</artifactId>
           <version>2.5</version>
           <scope>provided</scope>
       </dependency>
</dependencies>

在这里插入图片描述

gulimall-product项目及application.yml
在这里插入图片描述
在这里插入图片描述
auto表示实体id设置成自增

#application.yml
server:
  port: 10000
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.129.129:3306/gulimall_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver

# MapperScan
# sql映射文件位置
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto

编写测试类
在这里插入图片描述

说明:
可以用shift+F6修改模块名

coupon=>sms 端口号:7000
member=》ums 端口号:8000
order=>oms 端口号:9000
product=》pms 端口号:10000
ware=》wms 端口号:11000
记得数据库连接要配置

五、微服务-注册中心、配置中心、网关

在这里插入图片描述
在这里插入图片描述
项目文档地址:https://github.com/alibaba/spring-cloud-alibaba/

1.导入公共依赖

https://spring.io/projects/spring-cloud-alibaba
在这里插入图片描述

spring-cloud-alibaba-dependencies
spring-cloud-starter-alibaba-nacos-discovery

	<dependencies>
         <dependency>
		     <groupId>com.alibaba.cloud</groupId>
		     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
		 </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

在这里插入图片描述
注:下载Nacos Server1.1.3的
https://github.com/alibaba/nacos/archive/refs/tags/1.1.3.zip
在这里插入图片描述

2.配置Nacos Server地址

在这里插入图片描述

server:
  port: 7000
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.129.129:3306/gulimall-sms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
  application:
     name: gulimall-coupon

# MapperScan
# sql映射文件位置
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto

3.使用 @EnableDiscoveryClient 注解开启服务注册与发现功能

在这里插入图片描述

4.登录nacos

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

5.版本确定

在这里插入图片描述

版本选择:Spring Cloud Hoxton.SR9(SpringCloud)=》2.2.6.RELEASE(SpringCloud)=》2.3.2.RELEASE(SpringBoot)
=>1.4.2(Nacos)

1.Spring Cloud Alibaba Version
地址: https://spring.io/projects/spring-cloud-alibaba=》确认 Spring Cloud Alibaba: 2.2.6.RELEASE
2.选择Spring Boot Version,选择 Nacos Version
https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明
=》确认 Spring Boot: 2.3.2.RELEASE
=》确认 Nacos: 1.4.2
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6.openFeign远程调用

声明式远程调用:编写一个接口,告诉SpringCloud这个接口需要远程调用
在这里插入图片描述
在这里插入图片描述
模拟远程调用
在这里插入图片描述
开启远程调用功能
在这里插入图片描述
测试结果
在这里插入图片描述
7.配置中心-统一处理
在这里插入图片描述

<!--配置中心来做配置管理-->
<dependencies>
   <dependency>
       <groupId>com.alibaba.cloud</groupId>
       <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
   </dependency>
</dependencies>

bootstrap.properties(优先级最高)优于application.yml,application.properties
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击发布
在这里插入图片描述
在这里插入图片描述
通过配置中心完成配置,无需修改文件
在这里插入图片描述

7.命名空间(配置隔离)和配置分组

每个微服务可以创建自己的命名空间,使用配置分组区分环境:dev,testing,prod

(1)新建命名空间
在这里插入图片描述
(2)配置分组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)bootstrap.properties配置命名空间和分组

例1:
在这里插入图片描述
在这里插入图片描述
例2:
在这里插入图片描述
在这里插入图片描述
7.加载多个配置集(从配置文件迁移到配置中心)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将application.yml的文件注释掉
在这里插入图片描述

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

测试连接在这里插入图片描述

8.gateway

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改版本
在这里插入图片描述

在这里插入图片描述

<dependency>
     <groupId>com.atguigu.gulimall</groupId>
     <artifactId>gulimall-common</artifactId>
     <version>0.0.1-SNAPSHOT</version>
 </dependency>
<!--引入gateway网关-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
    <!--排除gateway 内部不兼容的 spring-web -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </exclusion>
    </exclusions>
</dependency>

开启网关服务注册和发现
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
配置路由转发
在这里插入图片描述
在这里插入图片描述

六、商品服务

在这里插入图片描述

(一) 分类维护

在这里插入图片描述

1.添加商品分类信息

将pms_catelog.sql文件的插入语句导入到表里
在这里插入图片描述

2.前端发送请求获取商品分类信息

在这里插入图片描述
可配置请求端口
在这里插入图片描述
在这里插入图片描述

3.配置网关路由和路径重写

在这里插入图片描述
在这里插入图片描述
renren-fast添加服务注册

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

在这里插入图片描述
没有请求到对应路径:
http://localhost:88/api =》http://localhost:88/api/captcha.jpg

真实目标路径:http://localhost:8080/renren-fast/captcha.jpg

使用网关重写功能:即可进行访问
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进行登录:产生跨域问题

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

4.跨域解决

4.1
在这里插入图片描述
解决方案一:
在这里插入图片描述
解决方案二:使用后端网关进行跨域配置
在这里插入图片描述
4.2

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

不允许有多个 ‘Access-Control-Allow-Origin’ CORS =》同源策略堵塞
在这里插入图片描述
在这里插入图片描述

9.Mybatis-plus逻辑删除

在这里插入图片描述

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

(二) 品牌管理

在这里插入图片描述

七、文件存储

在这里插入图片描述
使用云存储:阿里云对象存储
在这里插入图片描述
在这里插入图片描述

(一)上传方式

1.方式一

在这里插入图片描述

2.方式二:推荐使用

在这里插入图片描述

(二)创建RAM子账号

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

(三)整合第三方服务

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

(四)使用服务端签名后直传

在这里插入图片描述

(五)设置跨域

在这里插入图片描述
在这里插入图片描述
通过服务端加密,然后前端请求拿到相关签名数据,然后上传图片到OSS

使用vue插件查看logo地址
在这里插入图片描述

(六)添加JSR303数据校验

1.JSR303数据校验

1)给Bean添加校验注解:javax.validation.constraints,并定义自己的message提示
2)开始校验功能@Valid
效果:校验错误以后会有默认的响应
3)给校验的bean后紧跟一个BindingResult,就可以获取到校验的结果

gulimall-common添加依赖

Spring2.3.0及以后版本没有集成validation包,需要导入Spring Boot Starter Validation

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2.系统错误码定义

在这里插入图片描述

3.JSR303分组校验(多场景的复杂校验)

1)@NotBlank(message = “品牌名不能为空”, groups = {AddGroup.class, UpdateGroup.class})给注解标注什么情况需要进行校验
2)@Validated({AddGroup.class})
3) 默认没有指定分组的校验注解@NotBlank,在分组校验情况@Validated({AddGroup.class})下不生效
在这里插入图片描述
在这里插入图片描述

4.自定义校验注解

1)编写一个自定义的校验注解
2)编写一个自定义的校验器
3)关联自定义的校验器和自定义的校验注解

注意:(以及国际化相关的)
ValidationMessages.properties =》涉及校验注解的message默认值配置
在这里插入图片描述

@Constraint(validateBy={})=>指定用什么东西来校验,点击validatedBy了解ConstraintValidator,有两个方法initialize和isValid

5.SPU&SKU&规格参数&销售属性

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

6.属性分组

在这里插入图片描述
在gulimall_admin删除sys_menus,重新导入
在这里插入图片描述
在这里插入图片描述

7.品牌分组

重新导入到pms_category
在这里插入图片描述
在这里插入图片描述
让分类维护恢复初始数据

8.下载插件mybatisX

在这里插入图片描述

9.p84的pubsub、publish

p84 关于pubsub、publish报错,无法发送查询品牌信息的请求:
1、npm install --save pubsub-js
2、在src下的main.js中引用:
① import PubSub from ‘pubsub-js’
② Vue.prototype.PubSub = PubSub

如果 npm install --save pubsub-js 安装报错的话,可以试一下 cnpm install --save pubsub-js
在这里插入图片描述
在这里插入图片描述

10.项目配置-设置批量启动或内存设置

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

11.采购单需求

在这里插入图片描述

12.p100问题解决

插入sql

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

index.js的children: []添加

{ path: '/product-attrupdate', component: _import('modules/product/attrupdate'), name: 'attr-update', meta: { title: '规格维护', isTab: true } }

attrupdate.vue添加if (item.attrs != null) {}判断

13.分布式基础篇总结

在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值