简介

SpringCloud为开发人员提供了在分布式系统中快速构建一些通用模式的工具(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线)。

这是一个含概多个子项目的开发工具集,集合了众多的开源框架,利用了Spring Boot开发的便利性实现了很多功能,比如服务注册、服务注册发现、负载均衡等。SpringCloud在整合过程中主要是针对Netflix开源组件的封装。

SpringCloud的出现真正的简化了分布式架构的开发。NetFlix是美国的一个在线视频网站,微服务业的翘楚,是公认的大规模生产级微服务的杰出实践者。NetFlix的开源组件已经在大规模分布式微服务环境中经过多年的生产实战验证。因此SpringCloud中很多组件都是基于NetFlix。

核心组件

springcloud项目开发模式 springcloud开发环境_spring cloud

名称

代表

注册中心

EurekaServer、Consul、Nacos

负载均衡和调用

Rabbion、OpenFeign

熔断和监控

Hystrix & Hystrix Dashboard

网关

Zuul、Gateway

配置中心

Config

消息总线

Bus



版本

SpringCloud是一个由众多独立子项目组成的大型综合项目,原则每个子项目上有不同的发布节奏,都维护自己发布版本号。为了更好的管理SpringCloud的版本,通过一个资源清单BOM(Bill of Materials),为避免与子项目的发布号混淆,所以没有采用版本号的方式,而是通过命名的方式。这些名字是按字母顺序排列的。如伦敦地铁站的名称(“天使”是第一个版本,“布里斯顿” 是第二个版本,"卡姆登"是第三个版本)。当单个项目的点发布累积到一个临界量,或者其中一个项目中有一个关键缺陷需要每个人都可以使用时,发布序列将推出名称以“.SRX”结尾的“服务发布”,其中“X”是一个数字。

SpringCloud与SpringBoot有严格的版本对应关系

springcloud项目开发模式 springcloud开发环境_spring cloud_02

开发环境

  • JDK:1.8
  • Maven:3.6
  • SpringBoot:2.5.2
  • SpringCloud:Hoxton.SR6
  • IDEA:2019.3

创建Maven项目

创建一个Maven项目,并删除src文件夹,修改pom文件为以下内容:

<?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>com.moti</groupId>
    <artifactId>SpringCloud</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>cloud-eureka-server</module>
        <module>cloud-eureka-client</module>
        <module>cloud-consul-client</module>
        <module>cloud-users</module>
        <module>cloud-orders</module>
    </modules>

    <!--管理版本号-->
    <properties>
        <spring.boot-version>2.2.5.RELEASE</spring.boot-version>
        <spring.cloud-version>Hoxton.SR6</spring.cloud-version>
        <lombok-version>1.18.20</lombok-version>
    </properties>

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

</project>

之后创建SpringCloud的其他组件只需要在当前项目的基础上新建Module即可。