目录
- 一、开发环境配置
- 二、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微服务架构图
三、创建项目
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. 分布式和集群的区别:
分布式:做同一件事情所需要的不同服务
集群:几个服务做同一件事情
(此文章参考老师的实验指导,为方便后续学习回顾,写的时候加上了一些自己的理解,有什么错误的地方欢迎大家指出,一起进步~)