SpringCloud学习笔记--尚硅谷--01

1:springcloud简单介绍

1:Spring Cloud 五大组件

服务注册与发现

负载均衡

断路器

服务网关

分布式配置

2:技术图解

在这里插入图片描述

3:课程版本约束

在这里插入图片描述

cloud: Hoxton.SR1

boot: 2.2.2.RELEASE

cloud alibaba: 2.1.0.RELEASE

java: java8

Maven 3.5以上

Mysql: 5.7以上

4: Cloud各种组件的停更/升级/替换

服务注册中心:

  • Eureka 停更
  • Zookeeper 可用
  • Consul 可用但不推荐
  • Nacos 完美替换Eureka 推荐

服务调用:

  • Ribbon可用
  • LoadBalancer Spring 新推出 打算替代Ribbon

服务调用2:

  • Fiegn 停更
  • OpenFiegn 可用 推荐

服务降低熔断:

  • Hystrix 停更但企业大部分在使用
  • resilience4j官网推荐,国外使用的居多
  • Sentinel阿里巴巴的 强烈推荐

服务网关:

  • Zuul 停更
  • Zuul2 胎死腹中
  • gateway Spring家的,推荐

服务配置:

  • config 不推荐
  • apolo 携程的 推荐
  • Nacos 阿里巴巴的 更加推荐

服务总线:

  • Bus 不推荐
  • Nacos 推荐

2: SpringCloud项目创建

1:pom.xml

和 的区别

2:配置

<?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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.atguigu.springcloud</groupId>
  <artifactId>cloud2021</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <!--统一管理jar包版本-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit.version>4.12</junit.version>
    <log4j.version>1.2.17</log4j.version>
    <lombok.version>1.16.18</lombok.version>
    <mysql.version>5.7.33</mysql.version>
    <druid.verison>1.1.16</druid.verison>
    <mybatis.spring.boot.verison>1.3.0</mybatis.spring.boot.verison>
  </properties>
  <!--子模块继承后,提供作用:锁定版本+子module 不用写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.2.0.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- MySql -->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
      <!-- Druid -->
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid.verison}</version>
      </dependency>
      <!-- mybatis-springboot整合 -->
      <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis.spring.boot.verison}</version>
      </dependency>
      <!--lombok-->
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
      </dependency>
      <!--junit-->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <!-- log4j -->
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
      </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>

</project>

3:微服务模块构建

1.建module

2.改pom

3.写yml

4.主启动

5.业务类

4:Devtools热部署

每次修改代码build project 就可以,不用重新启动,开发时使用,产品上线必须关闭

1. 添加devtools 依赖和pom插件
<!-- devtools 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
   <scope>runtime</scope>
    <optional>true</optional>
</dependency>

<!-- devtools 插件 -->
<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>
2.修改compile的配置

img

3. Ctrl+Alt+Shift+/ —>registry---->打勾

img

4. 重启IDEA ----- 热部署OK!

5:消费者工程

1. 使用RestTemplate来进行远程调用
  • RedisTemplate 提供了多种便捷的访问远程HTTP服务的方法
  • 是一种简单轻便的访问restful服务模板类,是Spring提供的用户访问Rest服务的客户端模板工具集。
2. 使用RestTemplate

(url ,requestMap,ResponseBean.class) 这三个参数分别代表了(Rest请求地址、请求参数、Http响应转换被转换成的对象类型)

3. 将RestTemplate添加到容器中
@Configuration
public class ApplicationContextConfig {
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
4. 使用RestTemplate 调用8001端口
@RestController
@Slf4j
public class OrderController {

    public static final String PAYMENT_URL="http://localhost:8001";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/consumer/payment/create")
    public CommonResult<Payment> create(Payment payment){
        return restTemplate.postForObject(PAYMENT_URL+"/payment/create",payment,CommonResult.class);
    }
    @GetMapping("/consumer/payment/get/{id}")
    public CommonResult<Payment> getPayment(@PathVariable("id") Long id){
        return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
    }

}

6:工程重构

1. 新建模块 cloud-api-commons

依赖:

<dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.1.0</version>
        </dependency>
    </dependencies>

2.其他工程导入冗余的依赖

将消费者和服者种的entities拷贝至新模块中,删除原来的entities包,

clean、install cloud-api-commons 模块,

在消费则服务者pom.xml中分别引入依赖,测试运行。

 <!--引入自己定义的api通用包,可以使用payment支付的Entities-->
        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值