开发环境:IDEA2021+ JDK1.8+maven
1.JDK1.8的下载与安装
2.IDEA配置和maven
这里没有IDEA的下载与安装
(注意:这里环境的配置一定要小心注意细节,尤其是Maven,否则容易引起后续项目创建报错)
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等数据分析,服务跟踪系统进行整合,为服务跟踪、解决问题提供了便利。
通过Maven工具创建,记得JDK版本选择我们安装的1.8
我这里因为是要交的作业,统一命名项目坐标
作为父级项目,需要增加的pom.xml有四项:
以下是父级pom.xml参考
<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.0modelVersion>
<groupId>ptu.com.microservicegroupId>
<artifactId>ptu201912900704artifactId>
<packaging>pompackaging>
<version>1.0-SNAPSHOTversion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.5.8version>
<relativePath/>
parent>
<properties>
<java.version>1.8java.version>
<spring-cloud.version>2020.0.5spring-cloud.version>
<maven.compiler.source>8maven.compiler.source>
<maven.compiler.target>8maven.compiler.target>
properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>${spring-cloud.version}version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-resources-pluginartifactId>
<version>3.1.0version>
plugin>
plugins>
build>
project>
使用Maven构建项目
为了结构清晰便于后期回顾,模块的命名方式统一为:“lesson+编号-模块名称”
切换到pom.xml,注意是当前模块的pom文件,不要切换到父级的pom文件。
在当前模块pom中添加spring boot web依赖
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
dependencies>
在java路径下创建一个主程序的包,包名可以自己指定。
在刚才创建的包下面创建一个启动类,类名可以任意取,建议是xxxApplication格式。
在类中填写如下代码则创建一个spring boot启动类:
在资源目录下创建一个application.yml文件
在firstService包下创建一个Controller包
第一个程序的接口是返回个人信息,因此在Controller包下创建一个获取信息的类
运行成功后打开浏览器,在地址栏输入127.0.0.1:8181/info
出现此页面即表示成功!
1. 在firstService下创建conrtoller包命名时如果删除了firstService.会一直变成同级的,要留着firstService. 直接在其后进行命名。
2. 在idea中操作失误可进行如下:
①ctrl+z;
②进入history恢复
3. 把鼠标移至要引入的后面,按住alt+enter->import*
4. 分布式和集群的区别:
分布式:做同一件事情所需要的不同服务
集群:几个服务做同一件事情
(此文章参考老师的实验指导,为方便后续学习回顾,写的时候加上了一些自己的理解,有什么错误的地方欢迎大家指出,一起进步~)