0
点赞
收藏
分享

微信扫一扫

谷粒商城:01. 分布式基础&项目环境搭建

源码之路 2022-03-12 阅读 58


一、项目简介

1、项目背景

  1. 电商模式:市面上有 5 种常见的电商模式 ​​B2B​​​、​​B2C​​​、​​C2B​​​、​​C2C​​​、​​O2O​​;

  • ​B2B​​​模式:​​B2B​​​(​​Business to Business​​), 是指商家与商家建立的商业关系。 如:阿里巴巴
  • ​B2C​​​模式:​​B2C​​​(​​Business to Consumer​​), 就是我们经常看到的供应商直接把商品卖给用户,即“商对客” 模式,也就是通常说的商业零售,直接面向消费者销售产品和服务。如:苏宁易购、京东、 天猫、小米商城
  • ​C2B​​​模式:​​C2B​​​(​​Customer to Business​​),即消费者对企业。先有消费者需求产生而后有企业生产,即先有消费者提出需求,后有生产企业按需求组织生产
  • ​C2C​​​模式:​​C2C​​​ (​​Customer to Consumer​​),客户之间自己把东西放上网去卖,如:淘宝,闲鱼
  • ​O2O​​​模式:​​O2O​​​ (​​Online To Offline​​),也即将线下商务的机会与互联网结合在了一起,让互联网成为线下交易的前台。线上快速支付,线下优质服务。如:饿了么,美团,淘票票,京东到家

2 、谷粒商城

谷粒商城是一个 ​​B2C​​ 模式的电商平台,销售自营商品给客户。

3、项目架构图


  1. 项目微服务架构图项目前后端分离开发,分为​​内网部署​​和​​外网部署​​。
  2. 公众使用客户端完成相应功能,比如登录、注册等,都需要通过客户端给后台服务发送请求。


外网部署

面向公众访问,部署前端项目,包括手机APP和电脑Web网站。



内网部署

整个后台服务集群。



  1. 微服务划分图
    谷粒商城:01. 分布式基础&项目环境搭建_mysql
  2. 项目技术和特色

  • 前后分离开发,并开发基于 ​​vue​​ 的后台管理系统
  • ​SpringCloud​​ 全新的解决方案
  • 应用监控、限流、网关、熔断降级等分布式方案 全方位涉及
  • 透彻讲解分布式事务、分布式锁等分布式系统的难点
  • 分析高并发场景的编码方式,线程池,异步编排等使用
  • 压力测试与性能优化
  • 各种集群技术的区别以及使用
  • CI/CD 使用


4、项目前置要求

学习项目的前置知识


  • 熟悉 ​​SpringBoot​​ 以及常见整合方案
  • 了解​​SpringCloud​
  • 熟悉 ​​git​​​,​​maven​
  • 熟悉 ​​linux​​​,​​redis​​​,​​docker​​ 基本操作
  • 了解 ​​html​​​,​​css​​​,​​js​​​,​​vue​
  • 熟练使用 idea 开发项目

二、分布式基础概念

1、微服务

微服务架构风格,就像是把一个​单独的应用程序​开发为​一套小服务​,每个​小服务​运行在​​ ​​的​进程​中,并使用轻量级机制通信,通常是 ​​HTTP API​​。这些服务围绕业务能力来构建, 并通过完全自动化部署机制来独立部署。这些服务使用不同的编程语言书写,以及不同数据存储技术,并保持最低限度的集中式管理。

简而言之:拒绝大型单体应用,基于业务边界进行服务微化拆分,各个服务独立部署运行。

谷粒商城:01. 分布式基础&项目环境搭建_mysql_02

2、集群&分布式&节点

集群是个​物理形态​,分布式是个​工作方式​。

只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;


《分布式系统原理与范型》定义:

“分布式系统是若干独立计算机的合集,这些计算机对于用户来说就像单个相关系统。”

分布式系统(distributed system)是建立在网络之上的软件系统。


分布式与集群的区别:

分布式:将不同的业务分布在不同的地方。


  • 不同业务
  • 不同地方
  • 业务拆分

集群:将几台服务器集中在一起,实现同一业务。


  • 多个机器
  • 同一业务
  • 同一地方

例如:​京东是一个分布式系统,众多业务运行在不同的机器​,所有业务构成一个大型的​业务集群​。每一个小的业务,比如用户系统,访问压力大的时候一台服务器是不够的。我们就 应该将用户系统部署到多个服务器,也就是​每一个业务系统也可以做集群化​;

分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。

节点:集群中的一个服务器

3、远程调用

在分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免的需要互相调用,我 们称为远程调用。

​SpringCloud​​​ 中使用 ​​HTTP+JSON​​ 的方式完成远程调用

谷粒商城:01. 分布式基础&项目环境搭建_redis_03

优势:天然的​跨平台性​。HTTP请求与JSON在任何平台都可以使用。

4、负载均衡

谷粒商城:01. 分布式基础&项目环境搭建_docker_04

分布式系统中,A 服务需要调用 B 服务,B 服务在多台机器中都存在,A 调用任意一个服务器均可完成功能。

为了​​使每一个服务器都不要太忙或者太闲​​,我们可以负载均衡的调用每一个服务器,提升网站的健壮性。

  • 常见的负载均衡算法:

  • 轮询:​ 为第一个请求选择健康池中的第一个后端服务器,然后按顺序往后依次选择,直 到最后一个,然后循环。
  • 最小连接:​ 优先选择连接数最少,也就是压力最小的后端服务器,在会话较长的情况下 可以考虑采取这种方式。
  • 散列:​ 根据请求源的​​IP​​ 的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器,可以考虑采取这种方式。

5、服务注册/发现&注册中心

A 服务调用 B 服务,A 服务并不知道 B 服务当前在哪几台服务器有,哪些正常的,哪些服务已经下线。解决这个问题可以引入注册中心;

谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_05

如果某些服务下线,我们其他人可以实时的感知到其他服务的状态,从而避免调用不可用的服务。

  • 流程

  • 服务上线 — 注册到注册中心
  • 服务调取 — 从注册中心中发现所需服务

注册中心集中管理服务列表清单

6、配置中心

谷粒商城:01. 分布式基础&项目环境搭建_docker_06

每一个服务最终都有大量的配置,并且每个服务都可能部署在多台机器上。我们经常需要变更配置,我们可以让每个服务在配置中心获取自己的配置。

配置中心用来集中管理微服务的配置信息

7、服务熔断&服务降级

在微服务架构中,微服务之间通过网络进行通信,存在相互依赖,当其中一个服务不可用时,

有可能会造成雪崩效应。要防止这样的情况,必须要有容错机制来保护服务。

谷粒商城:01. 分布式基础&项目环境搭建_mysql_07


  1. 服务熔断:
    设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后来的请求不再去调用这个服务,本地直接返回默认的数据。
    多次调用某服务失败后,不再调用,返回默认数据。
  2. 服务降级
    在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级运行。降级:某些服务不处理,或者简单处理【抛异常、返回 NULL、调用 Mock 数据、调用 Fallback 处理逻辑】。
    系统高峰期非核心业务不在处理或简单处理。

8、API网关

在微服务架构中,​​API Gateway​​作为整体架构的重要组件,它 ​抽象了微服务中都需要的公共功能​ ,同时提供了 ​客户端负载均衡,服务自动熔断,灰度发布,统一认证,限流流控,日志统计等丰富的功能,帮助我们解决了很多API管理难题​。

谷粒商城:01. 分布式基础&项目环境搭建_mysql_08

三、环境搭建

1、安装 linux 虚拟机


  1. 开启CPU虚拟化。
    这里以Dell台式机为例,开机F2进入BIOS系统,如图勾选设置即可。
    谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_09
  2. 下载&安装 VirtualBox (前提条件:完成第一步开启CPU虚拟化。)

  • ​​下载VirtualBox​​,我这里下载6.1版本的。
  • 选择Windows hosts即可。
    谷粒商城:01. 分布式基础&项目环境搭建_docker_10
  • 下载完成后安装即可。
    谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_11
  • 运行VirtualBox
    谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_12

  1. 下载&安装&使用 VagrantVagrant可以结合VirtualBox快速搭建虚拟机,不在需要下载镜像。

  • ​​下载Vagrant​​谷粒商城:01. 分布式基础&项目环境搭建_docker_13
  • 下载完成后安装即可。
    谷粒商城:01. 分布式基础&项目环境搭建_mysql_14
  • 验证是否安装完成。
    cmd 通过 命令 ​​vagrant​​来验证是否安装成功。
    谷粒商城:01. 分布式基础&项目环境搭建_redis_15

  1. 打开 window cmd 窗口,运行 Vagrant init centos/7,即可初始化一个 centos7 系统
    使用命令​​vagrant init centos/7​​初始化虚拟机。
    谷粒商城:01. 分布式基础&项目环境搭建_redis_16
    注意:​​vagrant init​​后跟的名称必须与​​Vagrant官方镜像仓库​​中的名称一致才可以。
  2. 运行 ​​vagrant up​​ 即可启动虚拟机。系统 root 用户的密码是 vagrant
    谷粒商城:01. 分布式基础&项目环境搭建_mysql_17
  3. vagrant 其他常用命令

  • vagrant ssh:自动使用 vagrant 用户连接虚拟机。
    使用命令​​vagrant ssh​​连接虚拟机,默认用户名为vagrant,可以使用linux命令。
    谷粒商城:01. 分布式基础&项目环境搭建_docker_18
  • vagrant reload:重启虚拟机
  • vagrant upload source [destination] [name|id]:上传文件
  • 使用命令​​exit;​​退出与虚拟机连接
    谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_19
  • ​​Vagrant 命令行​​

  1. 可以在VirtualBox中对虚拟机进行管理
    谷粒商城:01. 分布式基础&项目环境搭建_redis_20
  2. 注意:​在命令行中使用vagrant命令时,需要确保所在文件夹有Vagrantfile文件。谷粒商城:01. 分布式基础&项目环境搭建_redis_21
  3. 默认虚拟机的 ip 地址不是固定 ip,开发不方便

  • 修改 Vagrantfile​,查询本机IP,查询VirtualBox网关,将配置文件中IP的前三位与网关改为一致。
    谷粒商城:01. 分布式基础&项目环境搭建_mysql_22
  • 重新使用 vagrant up 启动机器即可,然后再 vagrant ssh 连接机器。
    使用命令​​ip addr​​来查看虚拟机IP网络地址
    谷粒商城:01. 分布式基础&项目环境搭建_redis_23
  • windows和linux互相ping测试均可ping通
    谷粒商城:01. 分布式基础&项目环境搭建_docker_24

  1. 默认只允许 ssh 登录方式,为了后来操作方便,文件上传等,我们可以配置允许账号密码登录

  • Vagrant ssh 进去系统之后

  • vi /etc/ssh/sshd_config
  • 修改 PasswordAuthentication yes/no
  • 重启服务 service sshd restart

  • 以后可以使用提供的 ssh 连接工具直接连接

  1. 注意:VirtualBox 会与包括但不限于如下软件冲突,需要卸载这些软件,然后重启电脑; 冲突的软件:红蜘蛛,360,净网大师(有可能)等
  2. vagrant创建的root账户密码默认为vagrant,可以使用
    ​$ su root ​​切换用户为root,以免后续命令无权限。

2、安装 docker


  1. Docker简介
    谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_25
  2. 相关网址
    ​​Docker 安装文档​​​​Docker软件镜像网址​​
  3. 安装过程

  • 卸载系统之前的 docker
    ​$ 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 ​
  • 安装Docker-CE
    ​$ sudo yum install docker-ce docker-ce-cli containerd.io ​

  1. 启动Docker
    ​$ sudo systemctl start docker ​
  2. 检查是否安装成功

  • 查看Docker版本​​docker -v​谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_26
  • 列出本地镜像​​sudo docker images​谷粒商城:01. 分布式基础&项目环境搭建_mysql_27

  1. 设置开机启动
    ​$ sudo systemctl enable docker ​谷粒商城:01. 分布式基础&项目环境搭建_mysql_28
  2. 配置镜像加速docker默认下载是从docker hub进行下载,由于是国外网站,速度较慢。可以配置国内镜像加速:依次执行以下命令

  • 创建配件夹
    ​sudo mkdir -p /etc/docker ​
  • 配置镜像加速地址
    ​sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://9t35rfn5.mirror.aliyuncs.com"] } EOF ​
  • 重启docker伴随线程
    ​sudo systemctl daemon-reload ​
  • 重启docker服务
    ​sudo systemctl restart docker ​


3、docker 安装 mysql


  1. 下载镜像文件
    ​$ docker pull mysql:5.7 ​谷粒商城:01. 分布式基础&项目环境搭建_redis_29
    使用​​sudo docker images​​查看镜像
    谷粒商城:01. 分布式基础&项目环境搭建_redis_30
  2. 创建实例并启动​​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 ​​参数说明
  3. 可以使用命令​​docker ps​​查看正在运行中的容器
    创建成功后,可以通过Navicat或其他MySQL连接工具进行连接MySQL测试


-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口



-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机



-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机



-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机



-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码

谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_31



  1. docker容器文件挂载与端口映射

  • docker run:创建新容器。​docker run​​一下,就会启动一个容器,容器与容器之间相互隔离,互不影响。(容器其实就是一个完整的linux系统)。
  • -p 3306:3306:将MySQL容器的3306端口映射到Linux系统的3306端口。​:MySQL被安装到了​​MySQL容器​​中,MySQL默认端口为3306,但是3306端口为​​MySQL容器​​的3306端口,如果想使用MySQL,需要把MySQL容器的3306端口映射到Linux中。在命令中,前一个3306为宿主机(这里为Linux)端口号,后一个3306为MySQL容器端口号。
    ​-p IP:HOSTPORT:CONTAINERPORT ​
  • –name mysql:为容器起别名。
  • -v:目录挂载。​MySQL配置文件、日志文件等在日常开发中经常使用,通过​​-v​​命令,可以将MySQL容器中的目录文件夹挂载到Linux目录中。
    ​-v Linux映射目录:容器目录 ​​挂载完成后,可以在Linux对应目录查看文件变化。
    谷粒商城:01. 分布式基础&项目环境搭建_docker_32
  • -e:指定root用户密码。
  • -d:后台运行容器,并返回容器ID。

  1. MySQL 配置修改MySQL字符编码,改为utf8编辑配置文件​​vi /mydata/mysql/conf/my.cnf​

  • 进入/mydata/mysql/conf目录
  • 使用命令​​vi my.cnf​​命令编辑配置文件
    谷粒商城:01. 分布式基础&项目环境搭建_docker_33
  • 敲击键盘​​i​​进入插入模式
  • 将配置信息复制到文件中
    ​[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 ​谷粒商城:01. 分布式基础&项目环境搭建_redis_34
  • ​Esc​​后使用​​:wq​​命令退出
  • 使用命令​​docker restart mysql​​重启MySQL容器
    谷粒商城:01. 分布式基础&项目环境搭建_redis_35
  • 可以进入MySQL容器查询源文件内容
    谷粒商城:01. 分布式基础&项目环境搭建_docker_36

  1. 解决MySQL连接慢的问题
    在配置文件中加入如下,并重启 mysql
    ​[mysqld] skip-name-resolve ​​解释:
    skip-name-resolve:跳过域名解析>
  2. 通过容器的 mysql 命令行工具连接
    ​docker exec -it mysql mysql -uroot -proot ​
  3. 设置 root 远程访问
    ​grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; flush privileges; ​
  4. 进入容器文件系统
    ​docker exec -it mysql /bin/bash ​

4、docker 安装 redis


  1. 下载redis镜像
    ​docker pull redis ​谷粒商城:01. 分布式基础&项目环境搭建_docker_37
  2. 创建实例并启动

  1. 首先自己创建文件目录以及对应配置文件
    ​mkdir -p /mydata/redis/conf touch /mydata/redis/conf/redis.conf ​谷粒商城:01. 分布式基础&项目环境搭建_mysql_38
  2. 创建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 ​谷粒商城:01. 分布式基础&项目环境搭建_redis_39
    **注意:**这里指定了redis将会加载/etc/redis/redis.conf目录下的配置文件
  3. 使用​​docker ps​​检查是否创建成功
    谷粒商城:01. 分布式基础&项目环境搭建_docker_40
  4. 使用 redis 镜像执行 redis-cli 命令连接
    ​docker exec -it redis redis-cli​谷粒商城:01. 分布式基础&项目环境搭建_docker_41

  1. 对redis做持久化存储

  • 进入配置文件目录
    谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_42
  • 编辑配置文件
    谷粒商城:01. 分布式基础&项目环境搭建_mysql_43
    ​​redis配置文件​​
  • 按​​i​​进入插入模式
  • 设置redis的aof持久化保存方式
    谷粒商城:01. 分布式基础&项目环境搭建_mysql_44
  • 保存​​:wq​
  • 重启redis​​docker restart redis​

  1. 可以使用软件RedisDesktopManager对redis进行可视化管理。
    谷粒商城:01. 分布式基础&项目环境搭建_docker_45

5、开发环境统一


  1. Maven

  • 查询Maven和jdk版本
    谷粒商城:01. 分布式基础&项目环境搭建_mysql_46
  • Maven配置阿里云镜像

  • 找到Maven目录下的配置文件
    谷粒商城:01. 分布式基础&项目环境搭建_mysql_47
  • 配置镜像,将以下代码放到对应位置即可
    ​<mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors> ​谷粒商城:01. 分布式基础&项目环境搭建_docker_48
  • 配置JDK1.8编译项目,将以下代码放到对应位置即可。
    ​<profiles> <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile> </profiles> ​谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_49


  1. Idea & VSCode

  • Idea

  • 指定Maven安装目录和配置文件
    谷粒商城:01. 分布式基础&项目环境搭建_docker_50
  • 安装插件:​​lombok​​ & ​​MyBatisX​

  • lombok:简化JavaBean开发
    谷粒商城:01. 分布式基础&项目环境搭建_mysql_51
  • MyBatisX:MyBatisPlus开发,快速从mapper定位到xml文件
    谷粒商城:01. 分布式基础&项目环境搭建_redis_52


  • VSCode安装插件

  • Vetur —— 语法高亮、智能感知、Emmet 等包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个 Ctrl需要同时按着)
  • EsLint —— 语法纠错
  • Auto Close Tag —— 自动闭合 HTML/XML 标签
  • Auto Rename Tag —— 自动完成另一侧标签的同步修改
  • JavaScript(ES6) code snippets — — ES6 语法智能提示以及快速输入, 除 js 外还支持.ts,.jsx,.tsx,.html,.vue,省去了配置其支持各种包含 js 代码文件的时间
  • HTML CSS Support —— 让 html 标签上写 class 智能提示当前项目所支持的样式
  • HTML Snippets —— html 快速自动补全
  • Open in browser —— 浏览器快速打开
  • Live Server —— 以内嵌服务器方式打开
  • Chinese (Simplified) Language Pack for Visual Studio Code —— 中文语言包


  1. 安装配置git

  • 下载Gitee​​git下载地址​​
  • 配置 git,进入 git bash
    ​# 配置用户名 git config --global user.name "username" //(名字) # 配置邮箱 git config --global user.email "username@email.com" //(注册账号时用的邮箱) ​
  • 配置 ssh 免密登录

  • ​​生成/添加SSH公钥​​
  • 配置
    进入 git bash;使用:​​ssh-keygen -t rsa -C "xxxxx@xxxxx.com"​​命令。 连续三次回车。
    一般用户目录下会有
    谷粒商城:01. 分布式基础&项目环境搭建_docker_53
    或者 ​​cat ~/.ssh/id_rsa.pub​​登录进入 gitee,在设置里面找到 SSH KEY 将.pub 文件的内容粘贴进去使用 ​​ssh -T git@gitee.com​​测试是否成功即可

  • ​​Git + 码云教程​​

  1. 逆向工程使用

  1. 导入项目逆向工程
  2. 下载人人开源后台管理系统脚手架工程

  • 导入工程,创建数据库
  • 修改工程 shiro 依赖为 SpringSecurity
  • 删除部分暂时不需要的业务

  1. 下载人人开源后台管理系统 vue 端脚手架工程

  • vscode 导入前端项目
  • 前后端联调测试基本功能



6、创建项目微服务

商品服务、仓储服务、订单服务、优惠券服务、用户服务

共同点:


  • 都需要导入Web、OpenFeign依赖
  • 包名的组织名要统一,最后单独名称不同。
    com.atguigu.gulimall​.xxx(product/order/ware/coupon/member)
  • 模块名要统一:**gulimao-**coupon

步骤:



从Gitee初始化一个项目



新建仓库

谷粒商城:01. 分布式基础&项目环境搭建_mysql_54



编辑仓库信息

谷粒商城:01. 分布式基础&项目环境搭建_redis_55



项目克隆到本地



创建版本控制项目

谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_56



填写项目地址

谷粒商城:01. 分布式基础&项目环境搭建_mysql_57



默认目录结构

谷粒商城:01. 分布式基础&项目环境搭建_mysql_58







创建微服务模块

以商品服务模块为例,其他相同



新建模块

谷粒商城:01. 分布式基础&项目环境搭建_mysql_59



使用Spring的初始化向导

谷粒商城:01. 分布式基础&项目环境搭建_docker_60



编写模块信息

谷粒商城:01. 分布式基础&项目环境搭建_docker_61



引入必要依赖



Spring Web

谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_62



互相调用支持

谷粒商城:01. 分布式基础&项目环境搭建_mysql_63





next—finish完成创建



所有服务模块建完后项目结构

谷粒商城:01. 分布式基础&项目环境搭建_redis_64



将gulimall设置为总项目,聚合子模块



​gulimall​​根目录下新建​​pom.xml​



新建的pom.xml中添加如下代码

<?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>
<groupId>com.atguigu.gulimall</groupId>
<artifactId>gulimall</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>gulimall</name>
<description>聚合服务</description>
<packaging>pom</packaging>
<modules>
<module>gulimall-coupon</module>
<module>gulimall-member</module>
<module>gulimall-order</module>
<module>gulimall-product</module>
<module>gulimall-ware</module>
</modules>
</project>


在Maven管理中,将gulimall的配置文件添加到项目中

谷粒商城:01. 分布式基础&项目环境搭建_docker_65



效果如下,可以发现gulimall为root,负责聚合其他子模块

谷粒商城:01. 分布式基础&项目环境搭建_docker_66





修改总项目中的​​gitignore​​,将子模块中的无用文件进行忽略

  • **​/mvnw​:忽略任意路径下的mvnw文件都忽略掉
    修改后gitignore为:
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar

**/mvnw
**/mvnw.cmd

**/.mvn
**/target/

.idea

**/.gitignore



版本控制



将所有需要提交的文件加入到版本控制中

谷粒商城:01. 分布式基础&项目环境搭建_redis_67



安装Gitee插件进行版本控制

谷粒商城:01. 分布式基础&项目环境搭建_mysql_68



将代码提交到本地仓库

谷粒商城:01. 分布式基础&项目环境搭建_redis_69

谷粒商城:01. 分布式基础&项目环境搭建_docker_70



commit and push

谷粒商城:01. 分布式基础&项目环境搭建_谷粒商城_71



push推送

谷粒商城:01. 分布式基础&项目环境搭建_mysql_72

谷粒商城:01. 分布式基础&项目环境搭建_redis_73



码云查看

谷粒商城:01. 分布式基础&项目环境搭建_docker_74






举报

相关推荐

0 条评论