SpringCloud快速入门

框架 :springboot+springcloud+nacos+Feign

(1)个人理解

springboot:

    1.Spring Boot简化了基于Spring的应用开发,单体服务
    2.自动装配
    3.约定大于配置

springcloud:

    1.Spring Cloud是一系列框架的有序集合。
    2.利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,
      如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等
    3.微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,
      采用了微服务这种架构之后,项目的数量会非常多,Spring Cloud做为大管家就需要提供各种方案来维护整个生态。
    4.Spring Cloud就是一套分布式服务治理的框架,既然它是一套服务治理的框架,
      那么它本身不会提供具体功能性的操作,更专注于服务之间的通讯、熔断、监控等。
      因此就需要很多的组件来支持一套功能。

springboot与springcloud关系

     1.Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务,
       Spring Cloud是一个基于Spring Boot实现的云应用开发工具;
       
     2.Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;
     
     3.Spring Boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,
        能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot来实现;
    
     4.Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖的关系。

(2) 快速开始

运用springboot框架开发的是单体服务,运用springcloud+springboot开发才算是微服务,即有多个单体服务进行通信,运用springcloud来治理。

注册中心

解决了服务之间的自动发现。在没有注册中心时候,服务间调用需要知道被调方的地址或者代理地址。当服务更换部署地址,就不得不修改调用当中指定的地址或者修改代理配置。

而有了注册中心之后,每个服务在调用别人的时候只需要知道服务名称就好,继续地址都会通过注册中心同步过来。

下载nacos并启动

参考:https://nacos.io/zh-cn/docs/quick-start.html

访问

在这里插入图片描述

项目搭建

1.项目结构
在这里插入图片描述
2.nacos-provider配置pom.xml

注意(nacos与springboot版本不符时可能会报错,可以调换相应版本)

 <properties>
        <java.version>1.8</java.version>
        <spring-boot.version>2.4.2</spring-boot.version>
        <spring-cloud.version>2020.0.1</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
    </properties>

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

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

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>${spring-cloud-alibaba.version}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!-- spring boot 依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- spring cloud 依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- spring cloud alibaba 依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>

3.properties.properties配置文件

server.port=8002
nacos.config.server-addr=127.0.0.1:8848
spring.application.name=nacos-provider
myName=nacos

4.新建一个Controller层创建ProviderController类

/**
 * @Description:
 * @Author: lizq
 * @date 2021/5/30 11:07
 **/
@RestController
public class ProviderController {

    @Value("${myName}")
    private String name;

    @GetMapping("hello")
    public String hello(){
        return "hello " + name;
    }

5.NacosProviderApplication启动类上添加自动发现配置注解

@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {

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

}

6.启动类访问nacos页面
在这里插入图片描述

到这里就已经成功把服务注册进去了!

7.nacos-consumer服务配置

跟上面配置同操作
  1. 添加依赖:同生产者

  2. 在application.properties中配置nacos的服务名及服务地址:同生产者

  3. 在引导类(NacosConsumerApplication.java)中添加@EnableDiscoveryClient注解:同生产者

  4. 启动类访问nacos

    在这里插入图片描述

8.nacos-consumer

在这里插入图片描述

1.ConsumerController类

/**
 * @Description:
 * @Author: lizq
 * @date 2021/5/30 11:42
 **/
@RestController
public class ConsumerController {

    @Autowired
    private ProviderFeign providerFeign;

    @GetMapping("hi")
    public String hi() {
        return this.providerFeign.hellos();
    }
}

2.ProviderFeign


@FeignClient("nacos-provider")
public interface ProviderFeign {
    @RequestMapping("hello")
    String hellos();
}

3.访问
在这里插入图片描述

到这里就实现了再nacos-consumer服务调用nacos-provider服务的功能!

总结

本章节通过搭建springcloud框架,实现了两个服务之间的通信!算是个快速入门! 下章节将详细分享细节!
关注博主,不迷路!一起进步,一起拿高薪!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值