目录

  • 一、开发环境配置
  • 二、Spring Cloud概述
  • 三、创建项目
  • 1、创建父级目录
  • 1.1、创建项目
  • 1.2、删除src
  • 1.3、修改pom.xml
  • 2、创建第一个服务
  • 2.1、在父级上新建一个模块
  • 2.2、修改当前模块pom.xml
  • 2.3、创建启动类
  • 2.4、编写资源文件
  • 2.5、创建服务接口
  • 2.6、启动程序
  • 四、总结


一、开发环境配置

开发环境:IDEA2021+ JDK1.8+maven 1.JDK1.8的下载与安装 2.IDEA配置和maven 这里没有IDEA的下载与安装 (注意:这里环境的配置一定要小心注意细节,尤其是Maven,否则容易引起后续项目创建报错)

二、Spring Cloud概述

Spring Cloud是一个基于Spring Boot实现的微服务开发架构,它利用Spring Boot的开发便利性巧妙地简化了分布式系统的开发。例如配置管理、服务发现、断路器、智能路由、控制总线等操作,都可以使用Spring Boot开发风格做到一键启动和部署。可以说,Spring Cloud将Spring Boot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Spring Cloud是一系列框架的有序集合,为开发人员构建微服务架构提供了完整的解决方案,它利用Spring Boot开发的便利性巧妙地简化了分布式系统基础设施的开发,如服务注册发现、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

Spring Cloud微服务架构的常用组件及模块

(1)Spring Cloud Netflix(核心模块)
•  Eureka:服务注册中心,基于REST服务的分布式中间件,主要用于服务管理。
•  Hystrix:熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
•  Ribbon:云端负载均衡,支持多种负载均衡策略,可以配合服务发现和断路器使用,在客户端实现负载均衡。
•  Feign:一个REST客户端,基于Ribbon和Hystrix的声明式服务调用组件。
•  Zuul:服务网关,为微服务集群提供代理,过滤,路由等功能。

(2)Spring Cloud Config
配置管理工具包,负责把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。

(3)Spring Cloud Bus
事件、消息总线,用于在集群(例如配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

(4) Spring Cloud Sleuth
服务追踪框架,可以与Zipkin、Apache Htrace和ELK等数据分析,服务跟踪系统进行整合,为服务跟踪、解决问题提供了便利。

Spring Cloud微服务架构图

springcloud 微服务的部署架构图 springcloud微服务架构搭建_架构

三、创建项目

1、创建父级目录

1.1、创建项目

springcloud 微服务的部署架构图 springcloud微服务架构搭建_架构_02


通过Maven工具创建,记得JDK版本选择我们安装的1.8

springcloud 微服务的部署架构图 springcloud微服务架构搭建_spring cloud_03


我这里因为是要交的作业,统一命名项目坐标

springcloud 微服务的部署架构图 springcloud微服务架构搭建_spring cloud_04

1.2、删除src

因为我们是创建父级项目,所以把src进行删除。

springcloud 微服务的部署架构图 springcloud微服务架构搭建_微服务_05

1.3、修改pom.xml

作为父级项目,需要增加的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>ptu.com.microservice</groupId>
    <artifactId>ptu201912900704</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <!--    1.继承spring boot父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.8</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <!--    2.自定义变量-->
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>2020.0.5</spring-cloud.version>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <!--    3.依赖管理-->
    <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>
    <!--    4.构建项目所需要的信息-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>
        </plugins>
    </build>

</project>

2、创建第一个服务

2.1、在父级上新建一个模块

springcloud 微服务的部署架构图 springcloud微服务架构搭建_maven_06


使用Maven构建项目

springcloud 微服务的部署架构图 springcloud微服务架构搭建_spring_07


为了结构清晰便于后期回顾,模块的命名方式统一为:“lesson+编号-模块名称”

springcloud 微服务的部署架构图 springcloud微服务架构搭建_maven_08

2.2、修改当前模块pom.xml

切换到pom.xml,注意是当前模块的pom文件,不要切换到父级的pom文件。

springcloud 微服务的部署架构图 springcloud微服务架构搭建_微服务_09


在当前模块pom中添加spring boot web依赖

<dependencies>
<!--spring boot web依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    </dependencies>
2.3、创建启动类

在java路径下创建一个主程序的包,包名可以自己指定。

springcloud 微服务的部署架构图 springcloud微服务架构搭建_spring_10


springcloud 微服务的部署架构图 springcloud微服务架构搭建_架构_11


在刚才创建的包下面创建一个启动类,类名可以任意取,建议是xxxApplication格式。

springcloud 微服务的部署架构图 springcloud微服务架构搭建_spring cloud_12


springcloud 微服务的部署架构图 springcloud微服务架构搭建_微服务_13


在类中填写如下代码则创建一个spring boot启动类:

springcloud 微服务的部署架构图 springcloud微服务架构搭建_maven_14

2.4、编写资源文件

在资源目录下创建一个application.yml文件

springcloud 微服务的部署架构图 springcloud微服务架构搭建_架构_15

springcloud 微服务的部署架构图 springcloud微服务架构搭建_微服务_16


在application.yml下添加配置

springcloud 微服务的部署架构图 springcloud微服务架构搭建_架构_17

2.5、创建服务接口

在firstService包下创建一个Controller包

springcloud 微服务的部署架构图 springcloud微服务架构搭建_架构_18


springcloud 微服务的部署架构图 springcloud微服务架构搭建_spring_19


第一个程序的接口是返回个人信息,因此在Controller包下创建一个获取信息的类

springcloud 微服务的部署架构图 springcloud微服务架构搭建_spring cloud_20


springcloud 微服务的部署架构图 springcloud微服务架构搭建_maven_21


在类中填写如下代码

springcloud 微服务的部署架构图 springcloud微服务架构搭建_架构_22

2.6、启动程序

springcloud 微服务的部署架构图 springcloud微服务架构搭建_微服务_23


运行成功后打开浏览器,在地址栏输入127.0.0.1:8181/info

springcloud 微服务的部署架构图 springcloud微服务架构搭建_spring cloud_24


出现此页面即表示成功!

四、总结

1. 在firstService下创建conrtoller包命名时如果删除了firstService.会一直变成同级的,要留着firstService. 直接在其后进行命名。
2. 在idea中操作失误可进行如下:
①ctrl+z;
②进入history恢复
3. 把鼠标移至要引入的后面,按住alt+enter->import*
4. 分布式和集群的区别:
分布式:做同一件事情所需要的不同服务
集群:几个服务做同一件事情

(此文章参考老师的实验指导,为方便后续学习回顾,写的时候加上了一些自己的理解,有什么错误的地方欢迎大家指出,一起进步~)