谷粒商城-分布式基础篇_01
谷粒商城环境搭建以及简介

环境搭建

安装Linux虚拟机

省略,我个人比较习惯使用VM ware,所以我使用的是VM ware,虽然可能安装镜像稍微麻烦点。

安装Docker

👉Docker安装👈

  1. 卸载旧版本

    1
    2
    3
    4
    5
    6
    7
    8
    sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
  2. 设置存储库

    1
    2
    3
    4
    sudo yum install -y yum-utils
    sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  3. 安装Docker

    1
    sudo yum install docker-ce docker-ce-cli containerd.io
  4. 启动Docker

    1
    2
    3
    4
    5
    # 启动docker
    sudo systemctl start docker
    # 查看其版本
    sudo docker -v
    # Docker version 20.10.11, build dea9396
  5. 配置Docker加速,百度解决

Docker安装mysql

  1. 下载MySQL镜像

    1
    2
    3
    4
    5
    # 下载MySQL5.7镜像
    docker pull mysql:5.7
    # 等待下载成功
    # 查看镜像
    docker images
  2. 使用镜像创建容器

    1
    2
    3
    4
    5
    6
    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 mysql:5.7
    • -v:将宿主机的文件夹映射到容器中的对象
    • -e:镜像提供的相关参数变量
    • -d:选择的镜像以及版本
    • –name:镜像名称
    • -p:将容器的端口映射到宿主机
  3. 修改MySQL配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # 进入映射的目录
    cd /mydata/mysql/conf

    # 创建配置文件并录入配置
    cat <<EOF> my.cnf
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    [mysqld]
    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
    EOF

    # 重启docker容器
    docker restart mysql
  4. (可选操作)设置MySQL容器自启动

    1
    docker update mysql --restart=always

Docker安装Redis

  1. 下载Redis镜像

    1
    2
    3
    4
    5
    # 下载最新版本Redis镜像
    docker pull redis
    # 等待下载完成
    # 查看镜像
    docker images
  2. 准备外部配置文件

    1
    2
    3
    4
    5
    6
    # 创建配置文件目录
    mkdir -p /mydata/redis/conf
    # 创建配置文件
    touch /mydata/redis/conf/redis.conf
    # 设置redis数据持久化
    echo "appendonly yes" >> /mydata/redis/conf/redis.conf
  3. 使用镜像创建容器

    1
    2
    3
    4
    # 创建Redis容器
    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
  4. 测试Redis是否可以正常使用

创建Maven工程

创建Maven主工程:gulimall

分别创建Maven子工程:

  • gulimall-product:商品服务
  • gulimall-order:订单服务
  • gulimall-ware:仓储服务
  • gulimall-coupon:优惠券服务
  • gulimall-member:会员服务

子工程使用相同的Maven依赖,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.imxushuai.gulimall</groupId>
<artifactId>gulimall-product</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>gulimall-product</name>
<description>谷粒商城-商品服务</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2021.0.0</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

创建数据库并执行SQL语句

省略

人人开源

下载人人开源的renren-fast以及renren-fast-vue项目

renren-fast

renren-fast-vue

renren-fast

  1. 复制renren-fast项目到gulimall
  2. 创建数据库gulimall-admin并使用sql文件对数据库进行初始化
  3. 修改配置文件,设置正确的数据库地址
  4. 启动项目

renren-fast-vue

  1. 安装node环境

  2. 设置npm淘宝镜像

    1
    npm config set registry http://registry.npm.taobao.org/
  3. 执行npm install

  4. 启动

    1
    npm run dev
  5. 访问:localhost:8001,查看是否成功启动。默认账号密码:admin/admin

快速开发-逆向工程

下载人人开源的renren-generator项目

renren-generator

  1. 打开项目,下载相关Maven依赖
  2. 修改数据库配置文件运行项目
  3. 生成逆向工程文件
  4. 将生成的逆向工程文件复制到项目中并解决其报错情况

gulimall-common

  1. 依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
    <artifactId>gulimall</artifactId>
    <groupId>com.imxushuai.gulimall</groupId>
    <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>gulimall-common</artifactId>

    <dependencies>
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
    </dependency>
    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.22</version>
    </dependency>
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.15</version>
    </dependency>
    <dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
    </dependency>
    </dependencies>
    </project>
  2. 复制工具类到gulimall-common

其他微服务

其他微服务拷贝逆向工程文件后需要做一些配置

  1. 添加依赖

    1
    2
    3
    4
    5
    6
    <!-- gulimall-common -->
    <dependency>
    <groupId>com.imxushuai.gulimall</groupId>
    <artifactId>gulimall-common</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </dependency>
  2. 添加配置文件:application.yml(需要删除application.properties)

    注意每个微服务的数据库url不一样以及端口不一样

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    spring:
    datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.149.151:3306/gulimall_sms
    driver-class-name: com.mysql.jdbc.Driver
    mybatis-plus:
    mapper-locations: classpath:/mapper/**/*.xml
    global-config:
    db-config:
    id-type: auto
    server:
    port: 7000
  3. 启动类添加@MapperScan注解

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    package com.imxushuai.gulimall.coupon;

    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;

    @SpringBootApplication
    @MapperScan("com.imxushuai.gulimall.coupon.dao")
    public class GulimallCouponApplication {

    public static void main(String[] args) {
    SpringApplication.run(GulimallCouponApplication.class, args);
    }

    }
  4. 启动测试,查看调用API是否正常

文章作者: imxushuai
文章链接: https://www.imxushuai.com/2021/12/13/41.谷粒商城-分布式基础-01/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 imxushuai
支付宝打赏
微信打赏