Spring Cloud微服务架构学习-1

一、开发环境配置

开发环境: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微服务架构图
在这里插入图片描述

三、创建项目

1、创建父级目录

1.1、创建项目


通过Maven工具创建,记得JDK版本选择我们安装的1.8
在这里插入图片描述
我这里因为是要交的作业,统一命名项目坐标

在这里插入图片描述

1.2、删除src

因为我们是创建父级项目,所以把src进行删除。
在这里插入图片描述

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、在父级上新建一个模块

在这里插入图片描述
使用Maven构建项目
在这里插入图片描述
为了结构清晰便于后期回顾,模块的命名方式统一为:“lesson+编号-模块名称”
在这里插入图片描述

2.2、修改当前模块pom.xml

切换到pom.xml,注意是当前模块的pom文件,不要切换到父级的pom文件。
在这里插入图片描述
在当前模块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路径下创建一个主程序的包,包名可以自己指定。
在这里插入图片描述
在这里插入图片描述
在刚才创建的包下面创建一个启动类,类名可以任意取,建议是xxxApplication格式。
在这里插入图片描述
在这里插入图片描述
在类中填写如下代码则创建一个spring boot启动类:

在这里插入图片描述

2.4、编写资源文件

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

在这里插入图片描述

在这里插入图片描述
在application.yml下添加配置
在这里插入图片描述

2.5、创建服务接口

在firstService包下创建一个Controller包
在这里插入图片描述
在这里插入图片描述
第一个程序的接口是返回个人信息,因此在Controller包下创建一个获取信息的类

在这里插入图片描述
在这里插入图片描述
在类中填写如下代码
在这里插入图片描述

2.6、启动程序

在这里插入图片描述
运行成功后打开浏览器,在地址栏输入127.0.0.1:8181/info
在这里插入图片描述
出现此页面即表示成功!

四、总结

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

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值