专栏首页IT技能应用什么是 Spring Cloud ?
原创

什么是 Spring Cloud ?

Spring Cloud 为开发者提供了快速构建分布式系统中一些常见模式的工具(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)。分布式系统的协调导致了样板模式,使用 Spring Cloud 开发人员可以快速建立实现这些模式的服务和应用程序。它们将适用于任何分布式环境,包括开发人员自己的笔记本电脑、裸机数据中心和托管平台(如 Cloud Foundry)。

特征

Spring Cloud 专注于为典型用例和可扩展性机制提供良好的开箱即用体验以覆盖其他用例。

  • 分布式/版本化配置
  • 服务注册和发现
  • 路由
  • 服务到服务呼叫
  • 负载均衡
  • 断路器
  • 全局锁
  • 领导选举和集群状态
  • 分布式消息传递

入门

生成一个新的 Spring Cloud 项目

最简单的入门方法是访问start.spring.io,选择您的 Spring Boot 版本和您要使用的 Spring Cloud 项目。这将在您生成项目时将相应的 Spring Cloud BOM 版本添加到您的 Maven/Gradle 文件中。

将 Spring Cloud 添加到现有的 Spring Boot 应用程序

如果您想要将 Spring Cloud 添加到该应用程序的现有 Spring Boot 应用程序,第一步是确定您应该使用的 Spring Cloud 版本。您在应用中使用的版本取决于您使用的 Spring Boot 版本。

下表概述了 Spring Cloud 的哪个版本映射到 Spring Boot 的哪个版本。

发布系列 Spring Boot 兼容性

Spring Cloud Dalston、Edgware、Finchley 和 Greenwich 都已达到生命周期终止状态,不再受支持。

通过服务版本 (SR) 将错误修复和向后兼容功能添加到每个版本系列中。确定要使用哪个版本的 Spring Cloud 后,您应该使用该版本系列的最新服务版本。您可以在我们的发布说明页面上找到最新的服务发布信息。

既然您知道要使用哪个版本系列以及该版本系列的最新服务版本,您就可以将 Spring Cloud BOM 添加到您的应用程序中。

<properties>

<spring.cloud-version>Hoxton.SR8</spring.cloud-version>

</properties>

<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>

buildscript {

dependencies {

classpath "io.spring.gradle:dependency-management-plugin:1.0.10.RELEASE"

}

}

ext {

set('springCloudVersion', "Hoxton.SR8")

}

apply plugin: "io.spring.dependency-management"

dependencyManagement {

imports {

mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"

}

}

发布系列包含 spring-cloud-dependencies和 spring-cloud-starter-parent. 您可以像使用父对象一样使用spring-boot-starter-parent(如果您使用的是 Maven)。如果您只需要依赖管理,“依赖”版本是同一事物的仅 BOM 版本(它只包含依赖管理,没有插件声明或对 Spring 或 Spring Boot 的直接引用)。如果您使用的是 Spring Boot 父 POM,那么您可以使用 Spring Cloud 中的 BOM。相反的情况并非如此:使用 Cloud 父级使得不可能或至少不可靠地还使用 Boot BOM 来更改 Spring Boot 及其依赖项的版本。

就像 Spring Boot 一样,许多 Spring Cloud 项目都包含 starters,您可以将其添加为依赖项,以将各种云原生功能添加到您的项目中。在许多情况下,许多功能纯粹是通过将 starter 添加到类路径来启用的。起始名称记录在各个项目中。下面是一个示例,说明如何将 Spring Cloud Config Client 和 Spring Cloud Netflix Eureka 客户端添加到您的应用程序中。

<dependencies>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-config</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

</dependency>

...

</dependencies>

dependencies {

compile 'org.springframework.cloud:spring-cloud-starter-config'

compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'

//...

}

入门资源

  • Spring Cloud 初学者指南

主要项目

春云配置

由 git 存储库支持的集中外部配置管理。配置资源直接映射到 Spring,Environment但如果需要,可以由非 Spring 应用程序使用。

春云 Netflix

与各种 Netflix OSS 组件(Eureka、Hystrix、Zuul、Archaius 等)集成。

春云巴士

用于将服务和服务实例与分布式消息连接在一起的事件总线。用于在集群中传播状态更改(例如配置更改事件)。

Spring Cloud Cloudfoundry

将您的应用程序与 Pivotal Cloud Foundry 集成。提供服务发现实现,还可以轻松实现 SSO 和 OAuth2 保护的资源。

Spring Cloud 开放服务代理

提供构建实现 Open Service Broker API 的服务代理的起点。

Spring Cloud 集群

领导选举和通用状态模式,具有 Zookeeper、Redis、Hazelcast、Consul 的抽象和实现。

Spring Cloud 领事

使用 Hashicorp Consul 进行服务发现和配置管理。

春云安全

为 Zuul 代理中的负载平衡 OAuth2 其余客户端和身份验证标头中继提供支持。

春云侦探

Spring Cloud 应用程序的分布式跟踪,兼容 Zipkin、HTrace 和基于日志(例如 ELK)的跟踪。

Spring Cloud 数据流

用于现代运行时上的可组合微服务应用程序的云原生编排服务。易于使用的 DSL、拖放式 GUI 和 REST-API 共同简化了基于微服务的数据管道的整体编排。

春云流

一个轻量级的事件驱动微服务框架,用于快速构建可以连接到外部系统的应用程序。在 Spring Boot 应用程序之间使用 Apache Kafka 或 RabbitMQ 发送和接收消息的简单声明模型。

Spring Cloud Stream 应用程序

Spring Cloud Stream 应用程序是开箱即用的 Spring Boot 应用程序,使用 Spring Cloud Stream 中的绑定器抽象提供与外部中间件系统(如 Apache Kafka、RabbitMQ 等)的集成。

Spring Cloud 任务

一个短暂的微服务框架,用于快速构建执行有限数据处理量的应用程序。用于向 Spring Boot 应用程序添加功能和非功能特性的简单声明。

Spring Cloud Task 应用启动器

Spring Cloud Task App Starters 是 Spring Boot 应用程序,可以是任何进程,包括不会永远运行的 Spring Batch 作业,它们在有限的数据处理时间后结束/停止。

春云动物园管理员

使用 Apache Zookeeper 进行服务发现和配置管理。

Spring Cloud 连接器

使各种平台中的 PaaS 应用程序可以轻松连接到后端服务,如数据库和消息代理(该项目以前称为“Spring Cloud”)。

Spring Cloud 初学者

Spring Boot 风格的启动项目,以简化 Spring Cloud 消费者的依赖管理。(作为一个项目停止并与Angel.SR2之后的其他项目合并。)

Spring Cloud CLI

Spring Boot CLI 插件,用于在 Groovy 中快速创建 Spring Cloud 组件应用程序

Spring Cloud 合约

Spring Cloud Contract 是一个包含解决方案的伞形项目,可帮助用户成功实施消费者驱动的合同方法。

春云网关

Spring Cloud Gateway 是一个基于 Project Reactor 的智能可编程路由器。

Spring Cloud OpenFeign

Spring Cloud OpenFeign 通过自动配置和绑定到 Spring Environment 和其他 Spring 编程模型习语,为 Spring Boot 应用程序提供集成。

Spring Cloud 管道

Spring Cloud Pipelines 提供了一个自以为是的部署管道,其中包含确保您的应用程序可以以零停机时间的方式部署并轻松回滚出现问题的步骤。

春云功能

Spring Cloud Function 通过函数促进业务逻辑的实现。它支持跨无服务器提供商的统一编程模型,以及独立运行(本地或在 PaaS 中)的能力。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 什么是Spring Cloud 数据流?

    用于 Cloud Foundry 和 Kubernetes 的基于微服务的流式和批处理数据处理。

    IT胶囊
  • 什么是Spring Cloud项目,我把它讲清楚了

    最近几年微服务很火,大家都在建设微服务,仿佛不谈点微服务相关的技术,都显得不是那么主流了。

    润森
  • Netflix是什么,与Spring Cloud有什么关系

    1、首先,Netflix是一家做视频的网站,可以这么说该网站上的美剧应该是最火的。

    wuweixiang
  • Netflix是什么,与Spring Cloud有什么关系

    1、首先,Netflix是一家做视频的网站,可以这么说该网站上的美剧应该是最火的。

    悟空聊架构
  • Spring Cloud到底是什么?

    i)Spring Cloud是一个微服务框架,Spring Cloud基于微服务基础框架Netflix进行了upgrade,同时又能和Spring Boot开发...

    马克java社区
  • Spring boot与Spring cloud 是什么关系?

    最近有两张图快被我用烂了,但是在这里不得不再用一次。这两张图都来自(http://spring.io)首页!

    格姗知识圈
  • Spring Cloud是什么,和Dubbo对比呢?

    简介 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消...

    Java技术栈
  • 什么是spring

    从这一篇开始,我们将学习spring框架的知识,spring无疑是现在Java开发框架最火爆的开源框架之一。正是因为spring是开源的框架,所以我们可以很容易...

    吉林乌拉
  • Spring Cloud是怎么运行的?

    在之前的文章中给大家介绍了Spring Boot的基本运行原理(链接),收到了很多读者朋友们关于目前比较流行的微服务框架Spring Cloud的问题反馈。因此...

    用户5927304
  • Spring Cloud 是怎么运行的?

    在之前的文章中给大家介绍了Spring Boot的基本运行原理,收到了很多读者朋友们关于目前比较流行的微服务框架Spring Cloud的问题反馈。因此,在这篇...

    纯洁的微笑
  • 微服务为什么选Spring Cloud?

    现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时,支持微服务的技术栈也是多种多样的,本系列文章主要介绍这些技术中的翘楚——...

    Java技术栈
  • Spring cloud zuul为什么需要FormBodyWrapperFilter

    Spring cloud zuul里面有一些核心过滤器,以前文章大致介绍了下各个过滤器的作用,武林外传—武三通的zuul之惑。这次重点讲解下FormBodyWr...

    java达人
  • Spring cloud zuul的SendResponseFilter做了什么

    Spring cloud zull 的SendResponseFilter主要工作是将代理请求获取的reponse写入当前response,发送回客户端。以下是...

    java达人
  • 什么是Spring Boot?

    Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器...

    用户5224393
  • 什么是Spring Boot?

    什么是Spring BootSpring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了...

    Java技术栈
  • 什么是 Spring MVC?

    Spring MVC 是一个用于构建 Web 应用程序的 Java 框架,遵循 模型 - 视图 - 控制器 设计模式。它实现了一个 Spring 核心框架的所有...

    村雨遥
  • 什么是Spring Boot

    logging.config= # Location of the logging configuration file. For instance class...

    海仔
  • 什么是Spring Data?

    Spring Data 的委托是为数据访问提供熟悉且符合 Spring 的编程模型,同时仍保留着相关数据存储的特​​殊特征。

    IT胶囊
  • Spring杂谈 | 什么是ObjectFactory?什么是ObjectProvider?

    这个接口的定义非常简单,就是一个对象工厂,定义了一个返回对象的工厂方法。回顾我们直接介绍过的一个内容FactroyBean,其接口定义如下:

    程序员DMZ

扫码关注云+社区

领取腾讯云代金券