1-4.微服务架构零基础理论入门

学习B站尚硅谷周阳老师SpringCloud的听课笔记

1. SpringCloud与SpringBoot版本选择

SpringBoot是一种技术,SpringCloud是分布式微服务的一揽子解决方案,有多种技术的落地。
SpringCloud依赖的SpringBoot版本:https://start.spring.io/actuator/info

在这里插入图片描述SpringCloud版本列表

在这里插入图片描述点击Reference Doc有对应建议的SpringBoot版本
在这里插入图片描述

2.Spring Boot版本号命名规则

命名部分均参考于该博客。
在这里插入图片描述

2.1数字部分

2.1.1 举例:2.3.3.RELEASE

开头2: 表示的主版本号,表示是我们的SpringBoot第二代产品,当功能模块有较大更新或者整体架构发生变化时,主版本号会更新。
中间3: 表示的是次版本号,增加了一些新的功能但是主体的架构是没有变化的,是兼容的,只是局部的一些变动。。
末尾3: 表示的一般是bug的修改或者是小的变动。

RELEASE:此版本号用户标注当前版本的软件处于哪个开发阶段

所以2.3.3.RELEASE合起来就是springboot的第二代版本的第3个小版本的第3次bug修复版本。

SpringBoot版本格式: 主版本号.子版本号.修正版本号。

2.2英文部分:

snapshot: 快照
alpha : 内测
beta : 公测
release : 稳定版本
GA: 最稳定版本
Final : 正式版
Pro(professional) : 专业版
Plus: 加强版
Retail : 零售版
DEMO : 演示版
Build : 内部标号
Delux: 豪华版 (deluxe:豪华的,华丽的)
Corporation或Enterpraise 企业版
M1 M2 M3 : M是milestone的简写 里程碑的意思
RC 版本RC:(Release Candidate),几乎就不会加入新的功能了,而主要着重于除错
SR : 修正版
Trial : 试用版
Shareware : 共享版
Full : 完全版

名词解释:
build-snapshot: 开发版本,也叫快照版本。当前版本处于开发中,开发完成之后,自己进行测试,另外让团队其它人也进行测试使用下;

M1…M2(Milestone): 里程碑版本,在版发布之前 会出几个里程碑的版本。使用snapshot版本开发了一个时间,觉得最近写代码杠杠的,那么就整几个里程碑版本记录下吧,记录我们这个重大的时刻,是你我未来的回忆。

RC1…RC2(Release Candidates): 发布候选。内部开发到一定阶段了,各个模块集成后,经过细心的测试整个开发团队觉得软件已经稳定没有问题了,可以对外发行了。

release: 正式版本。发布候选差不多之后,那么说明整个框架到了一定的阶段了,可投入市场大面积使用了,那么发布出去,让广大用户来吃吃香吧。

SR1…SR2(Service Release): 修正版。这是啥意思呐,这不release版本发布之后,让广大群体使用了嘛,再牛逼的架构师,也无法写出零bug的代码,那么这时候,就优先对于release版本的问题进行修复,这时候每次迭代的版本就是SR1,SR2,SR3。

上述顺序:

snapshot –>M1…MX –> RC1…RCX –> release –> SR1…SRX

对应的文字理解:

开发版本(BS) --(开发到一个小阶段,就要标记下)–> 里程碑版本(MX) --(版本到了一个相对稳定的阶段,可以对外发行了,但是可能还存在修复的问题,此时只做修复,不做新功能的增加)–> 发布候选(RC1) --(BUG修复完成,发布)–>正式版本(release) --(外界反馈存在一些问题,进行内部在修复)–> 修正版本(SRX)

2.3版本选择

CURRENT:当前推荐的版本。

GA:稳定版,可用于生产

PRE :里程碑版/预览版本

SNAPSHOT : 快照

版本号只是一个标识,方便大家在使用时引入版本号即可。为了稳定起见,我们一般选择是RELEASE、CURRENT和GA版本,SNAPSHOT打死不选。
2. 2.4 0-M2 PRE
2.4.0: 第二代Spring Boot的第4个小版本的第0次bug修复;

M2: 这是2.4.0版本的第2次里程碑版本啦;

PRE: 程碑版本/预览版本,告知我们这个是里程碑版本,先偷腥的人可以来;

2.3.3 CURRENT GA
2.3.3 : 第二代Spring Boot的第3个小版本的第3次bug修复;

CURRENT : 这是官网当前推荐的使用版本;

GA: 这是稳定版本,可用于生产环境。

2.3.4 SNAPSHOT
2.3.4: 第二代Spring Boot的第3个小版本的第4次bug修复;

SNAPSHOT: 这是我们内部在开发的一个版本啦,也是对于2.3.4版本的bug迭代版本;

2.2.9 GA
2.2.9: 第一代Spring Boot的第2个小版本的第9次bug修复;

GA: 这是稳定版本,可用于生产;

3.SpringCloud第二季定稿版(截止2020.2.15)

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

4.关于Cloud各种组件的停更/升级/替换

在这里插入图片描述以前:
在这里插入图片描述
2020:
在这里插入图片描述Spring Cloud官方参考文档:
Spring Cloud中文文档:
Spring Boot官方参考文档:

5.IDEA新建project工作空间

5.1.New Project

在这里插入图片描述

5.2.聚合总工程名字

在这里插入图片描述

5.3.Maven选版本

在这里插入图片描述

5.4.工程名字

在这里插入图片描述

5.5字符编码

在这里插入图片描述

5.6.注解生效激活

在这里插入图片描述

5.7.java编译版本选8

在这里插入图片描述

5.8.File Type过滤

在这里插入图片描述

5.2 父工程POM
<!-- 子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version  -->
    <dependencyManagement>
        <dependencies>
            <!--spring boot 2.2.2-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.2.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud Hoxton.SR1-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud alibaba 2.1.0.RELEASE-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.spring.boot.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <optional>true</optional>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>
        </plugins>
    </build>
5.3Maven中的dependencyManagement和dependencies

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

5.4maven跳过单元测试

在这里插入图片描述
父工程创建完成执行mvn:install将父工程发布到仓库方便子工程继承

6.Rest微服务工程构建

6.1.cloud-provider-payment8001微服务提供者支付Module模块
6.1.1建cloud-provider-payment8001

在这里插入图片描述在这里插入图片描述在这里插入图片描述创建完成后请回到父工程查看pom文件变化,说明cloud-provider-payment8001已经是父工程的一个子模块。

在这里插入图片描述

6.1.2改POM文件
<dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
           <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

在父工程pom使用了dependencyManagement标签后,子模块不需要写groupId和version
在这里插入图片描述

6.1.3写YML

新建application.yml文件,图标呈现树叶状则正常。
在这里插入图片描述`

server:
  port: 8001
  
spring:
  application:
    name: cloud-payment-service
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.gjt.mm.mysql.Driver
    url: jdbc:mysql://localhost:3306/db2019?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: 123456

mybatis:
  mapperLocations: classpath:mapper/*.xml
  type-aliases-package: com.atguigu.springcloud.entities
6.1.4主启动

新建启动类,标上@SpringBootApplication注解。

在这里插入图片描述

6.1.5业务类

CRUD省略不写。

6.2.热部署Devtools(仅限开发环境,生产环境要关闭)
6.2.1.Adding devtools to your project

添加该依赖到对应的子模块

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
   <scope>runtime</scope>
    <optional>true</optional>
</dependency>
6.2.2.Adding plugin to your pom.xml

下一段配置到父工程当中的pom里

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <configuration>
        <fork>true</fork>
        <addResources>true</addResources>
      </configuration>
    </plugin>
  </plugins>
</build>
6.2.3.Enabling automatic build

在这里插入图片描述

6.2.4.Update the value of

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

6.2.5.重启IDEA

关闭所有服务

在这里插入图片描述

6.3.idea开启Run DashBoard

通过修改idea的workpace.xml的方式来快速打开Run DashBoard窗口

找到自己工程所在目录,如:E:\springcloud2020.idea 修改workpace.xml

搜索RunDashboard,添加如下内容

    <option name="configurationTypes">
      <set>
        <option value="SpringBootApplicationConfigurationType" />
      </set>
    </option>

在这里插入图片描述然后打开idea,即可看到Run Dashboard面板,如果看不到直接重启idea。以后启动服务就会直接进入到Run Dashboard面板,不在进入run面板。
在这里插入图片描述

6.4.首说RestTemplate

在这里插入图片描述官网地址:
https://docs.spring.io/spring-framework/docs/5.2.2.RELEASE/javadoc-api/org/springframework/web/client/RestTemplate.html

在这里插入图片描述

6.5.工程重构
6.5.1发现问题:系统中有重复部分,重构
6.5.2新建cloud-api-commons工程
6.5.3修改pom文件
<?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>cloud2020</artifactId>
        <groupId>com.atguigu.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud-api-commons</artifactId>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
           <optional>true</optional>
        </dependency>

        <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.1.0</version>
        </dependency>
    </dependencies>

</project>

将Payment实体类和CommonResult通用封装类迁移过来

maven命令clean install

clean后出现success,说明构建成功,然后install发布jar包供其他服务调用
在这里插入图片描述

6.5.4改造80和8001工程

修改pom文件,删除原有的Payment实体类和CommonResult通用封装类

<dependency>
    <groupId>com.atguigu.springcloud</groupId>
    <artifactId>cloud-api-commons</artifactId>
    <version>${project.version}</version>
</dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值