专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
51好读  ›  专栏  ›  OSC开源社区

Spring Cloud 项目综述(技术栈一览)

OSC开源社区  · 公众号  · 程序员  · 2017-04-13 08:32

正文

#点击图片报名参加武汉、长沙源创会#


摘要: Spring Cloud 为构建分布式系统和微服务提供了一些通用的工具,例如:配置中心,服务注册与发现,熔断器,路由,代理,控制总线,一次性令牌,全局锁,leader选举,分布式 会话,集群状态等。


前言


Spring Cloud 为构建分布式系统和微服务提供了一些通用的工具,例如:配置中心,服务注册与发现,熔断器,路由,代理,控制总线,一次性令牌,全局锁,leader选举,分布式 会话,集群状态等。

目前国内有很多公司还是使用dubbo做服务分解,但dubbo只提供了服务注册发现功能,要建立分布式系统还要自己找对应工具进行组合,当然这样定制性、灵活性高,但有些技术要摸着走,而且阿里已经停止了对dubbo的更新。

如果采用Spring Cloud技术栈,Spring Cloud提供了分布式系统和微服务中所需要的约大多数公共模块和功能,

Spring Cloud 下各项目都是基于 Spring Boot 的,所有要想用Spring Cloud做微服务开发,最好先掌握 Spring Boot

下表是dubbox与Spring Cloud技术栈对比


Spring Cloud Cluster


Zookeeper,Redis,Hazelcast,Consul的leader选举和公共的状态模式的抽象和实现。

简介

Spring Cloud为开发人员提供了快速构建分布式系统中的一些通用模式(patterns)的工具(例如配置管理,服务发现,熔断器,智能路由,微代理,控制总线(control bus),一次性令牌,全局锁,leader选举,分布式 会话,集群状态)。 分布式系统的协调导致锅炉板模式(boiler plate patterns),并且使用Spring Cloud开发人员可以快速开发出(stand up)实现这些模式的服务和应用程序。 程序将在任何分布式环境中都可以良好的运行,包括开发人员自己的笔记本电脑,裸机数据中心,以及像Cloud Foundry的托管平台。

Spring Cloud基于Spring Boot,通过提供的一组类库,可以在增强应用程序的行为。 您可以利用基本的默认行为(behaviour)/配置快速入门,然后在需要时,您可以配置或扩展以创建自定义解决方案。

快速开始

功能

Spring Cloud致力于为典型的使用案例和扩展机制提供良好的开箱即用的体验。

  • 分布式/版本化配置

  • 服务注册和发现

  • 路由

  • 服务到服务(Service-to-service)的调用

  • 负载均衡

  • 熔断器(Circuit Breakers)

  • 全局锁

  • Leader选举和集群状态

  • 分布式消息

Spring Cloud采用注解声明的方式,通常只需要一个类路径和(或)解释更改即可获得很多功能。作为发现客户端的示例应用程序:


Spring Cloud Config


由git仓库支持的统一配置管理。配置资源直接映射到SpringEnvironment,但如果需要,可以使用非Spring应用程序。

简介

Spring Cloud Config为分布式系统中的外部统一配置中心提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部(externalized)配置属性。客户端和服务器映射的概念与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何语言的应用程序一起使用。伴随着应用程序通过从开发环境到测试环境和生产环境的部署过程,您可以管理这些环境之间的配置,并确定应用程序不同环境迁移时需要所有配置属性。服务器存储端的默认实现使用git,因此它可以轻松支持带标签版本的配置环境,以及可以访问用于管理的内容的各种工具。可以轻松添加替代实现,并使用Spring配置将其插入。

功能

Spring Cloud Config Server功能:

  • 基于HTTP资源的外部配置API(名称/值对或等效的YAML内容)

  • 对属性值加密和解密(对称或非对称)

  • 可以使用@EnableConfigServer轻松嵌入Spring Boot应用程序

Config Client功能(适用于Spring应用程序):

  • 绑定到Config Server并使用远程的属性源初始化Spring Environment

  • 对属性值加密和解密(对称或非对称)

快速开始

以使用Maven为项目依赖管理为例:

只要Spring Boot Actuator和Spring Config Client类库在类路径中,任何Spring Boot应用程序将尝试连接 http://localhost:8888(spring.cloud.config.uri的默认值)的配置服务器:

示例中的config.name的值(或在Spring Boot以正常方式绑定的任何其他值)可以来自本地配置或远程Config Server。 默认情况下,Config Server将优先。要查看应用程序中的/env端点,请参阅configServer属性源。

要运行自己的服务器,请使用spring-cloud-config-server依赖项和@EnableConfigServer注解。如果您设置spring.config.name=configserver,则应用程序将在端口8888上运行,并从样本存储库(sample repository)提供数据。 您需要一个spring.cloud.config.server.git.uri来找到自己需要的配置数据(默认情况下,它是git存储库的位置,可以是本地url:.. URL)。


Spring Cloud Netflix


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

简介

Spring Cloud Netflix通过自动配置、绑定到Spring Environment 和其他Spring编程模型语法来为Spring Boot应用程序提供Netflix OSS集成。通过几个简单的注解,您可以快速启用和配置应用程序中的常见模式,并使用经过考验的Netflix组件构建大型分布式系统。 提供的常见模式包括服务发现(Eureka),融断机制(Hystrix),智能路由(Zuul)和客户端负载平衡(Ribbon)。

功能

Spring Cloud Netflix功能:

  • 服务发现:可以注册Eureka实例,客户端可以使用Spring管理的bean来发现实例

  • 服务发现:可以使用声明式Java配置创建嵌入式Eureka服务器

  • 融断机制:Hystrix客户端可以使用简单的注释驱动方法装饰器构建

  • 融断机制:具有声明式Java配置的嵌入式Hystrix仪表板

  • 声明性REST客户端:Feign创建了一个使用JAX-RS或Spring MVC注解装饰的接口的动态实现

  • 客户端负载均衡器:Ribbon

  • 外部配置:从Spring Environment 到Archaius的桥梁(使用Spring Boot约定启用Netflix组件的本地配置)

  • 路由器和过滤器:Zuul过滤器的自动注册,以及反向代理创建的简单配置方法

快速开始

Maven:

只要Spring Cloud Netflix和Eureka Core类库在类路径中,任何具有@EnableEurekaClient的Spring Boot应用程序将尝试连接 http://localhost:8761 (eureka.client.serviceUrl.defaultZone的默认值)上的Eureka服务器:

要运行自己的服务器,请添加依赖spring-cloud-starter-eureka-server和@EnableEurekaServer注解。


Spring Cloud Bus


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

简介

Spring Cloud Bus将分布式系统的节点与轻量级消息代理连接起来。 这可以用于广播状态改变(例如配置改变)或其他管理指令。 目前唯一的实现是使用AMQP代理作为传输,但是相同的基本功能集(还有一些取决于传输)在其他传输的路线图上。

快速开始

Maven:

只要Spring Cloud Bus AMQP和RabbitMQ类库在类路径中,任何Spring Boot应用程序将尝试连接 localhost:5672上的RabbitMQ服务器(spring.rabbitmq.addresses的默认值):


Spring Cloud for Cloud Foundry


将您的应用程序与Pivotal Cloudfoundry集成。 提供服务发现实现,并且还可以轻松实现SSO和OAuth2保护的资源,还可以创建Cloudfoundry服务代理。

简介

Spring Cloud for Cloudfoundry可以轻松在Cloud Foundry(平台即服务)中运行Spring Cloud应用程序。 Cloud Foundry有一个“服务”的概念,它是“绑定”到应用程序的中间件,本质上为其提供包含凭据的环境变量(例如,用于服务的位置和用户名)。

功能

spring-cloud-cloudfoundry-web项目为Cloud Foundry中的webapps的一些增强功能提供了基本支持:自动绑定到单点登录服务,并可选择启用粘性路由进行发现。

spring-cloud-cloudfoundry-discovery项目提供了Spring Cloud Commons DiscoveryClient的实现,因此您可以@EnableDiscoveryClient并将提供您的凭据spring.cloud.cloudfoundry.discovery.[email,password],然后可以直接使用DiscoveryClient或通过 一个LoadBalancerClient使用(如果您没有连接到Pivotal Web Services,也是 *.url)。

注意:如果您正在寻找一种绑定到服务的方法,那么这是错误的库。 请查看Spring Cloud连接器。

快速开始

Maven:


Spring Cloud Cloud Foundry

Service 代理


提供构建管理Cloud Foundry管理服务的服务代理的起点。

简介

Spring Cloud Cloud Foundry Service Broker是构建Spring Boot应用程序的框架,用于实现Cloud Foundry Service Broker API并管理Cloud Foundry Marketplace中提供的服务。

Cloud Foundry管理的服务由服务代理管理,服务代理通知其服务提供的服务计划,并提供,销毁,绑定和解除绑定服务实例。 Spring Cloud Cloud Foundry Service Broker提供了一个基于Spring Boot的框架,使您可以在Cloud Foundry上为您自己的托管服务快速创建代理。

功能

  • 目录和服务绑定/解除端点的默认配置

  • 支持异步服务操作(Cloud Foundry Service Broker API 2.7)

  • 支持提供给cf Command Line Interface工具的任意参数

  • 支持Cloud Foundry路由服务

快速开始

Maven:

要启用Spring Cloud Cloud Foundry Service Broker框架的默认配置,您的代理应用程序只需要在其主应用程序类中使用@EnableAutoConfiguration或@SpringBootApplication注解:

有关实现API功能的接口以及提供的默认实现的更多信息,请参阅 项目文档 。 有关开发Cloud Foundry管理服务的更多信息,请参阅 Cloud Foundry文档


Spring Cloud Consul


Hashicorp Consul服务发现和配置管理。

简介

该项目通过自动配置、绑定到Spring Environment和其他Spring编程模型语法来为Spring Boot应用程序提供Consul集成。 通过几个简单的注释,您可以快速启用和配置应用程序中的常见模式,并使用基于Consul的组件构建大型分布式系统。 提供的模式包括服务发现,控制总线和配置。 智能路由(Zuul)和客户端负载平衡(功能区),断路器(Hystrix)通过与Spring Cloud Netflix的集成提供。


Spring Cloud Security


在Zuul代理中支持负载均衡的OAuth2 rest 客户端和认证头转发。

简介

Spring Cloud Security提供了一套用于构建安全的原语级应用程序和最小化服务。 可以从外部(或集中)高度配置的声明式模型适用于通常使用中央契约管理服务的大型合作远程组件系统的实现。 在像Cloud Foundry这样的服务平台上也很容易使用。基于Spring Boot和Spring Security OAuth2,我们可以快速创建实现单点登录,令牌中继和令牌交换等常见模式的系统。

功能

  • 在Zuul代理中将SSO令牌从前端转发到后端服务

  • 资源服务器之间的中继令牌

  • 一个拦截器可以使一个Feign客户端的行为像OAuth2RestTemplate(获取令牌等)

  • 在Zuul代理中配置下游认证

快速开始

Maven:

如果您的应用程序还有Spring Cloud Zuul嵌入式反向代理(使用@EnableZuulProxy),则可以要求它将OAuth2访问令牌转发到其代理的服务器。 因此,上述的SSO应用程序可以简单地增强:

并且(除了记录用户并抓取令牌之外)还将将身份验证令牌下传到 /proxy/* 服务。 如果这些服务是用@EnableResourceServer实现的,那么他们将在正确的头中获取一个有效的token。


Spring Cloud Data Flow


现代的运行时可组合的微服务应用程序的本地云(cloud-native)编排服务。 易于使用的DSL,拖放式GUI和REST API一起简化了基于微服务的数据管道的整体编排。

简介

Spring Cloud Data Flow是一种针对现代的运行时可组合的微服务应用程序的本地云(cloud-native)编排服务。 通过Spring Cloud Data Flow,开发人员可以为数据采集,实时分析和数据导入/导出等常见用例创建和编排数据管道(pipelines)。

Spring Cloud Data Flow是Spring XD的本地云生重新设计,旨在简化Big Data应用程序的开发。 Spring XD的流和批处理模块分别作为基于Spring Boot的流和任务/批处理微服务应用程序进行重构。 这些应用程序现在是自主的部署单元,它们可以“天生地”运行在现代运行时环境,如Cloud Foundry,Apache YARN,Apache Mesos和Kubernetes。

Spring Cloud Data Flow提供了基于微服务的分布式流和任务/批处理数据流水线的一系列模式和最佳实践。

功能

  • 使用DSL,REST-API,仪表板和拖放GUI - Flo开发

  • 独立地进行创建、单元测试、故障排解和管理微服务应用程序

  • 使用开箱即用的流和任务/批处理应用程序快速构建数据管道

  • 将微服务应用程序用作maven或docker工件(artifacts)

  • 缩放数据管道(pipelines)而不中断数据流

  • 在各种现代运行时平台上协调数据中心的应用程序,包括Cloud Foundry,Apache YARN,Apache Mesos和Kubernetes

  • 利用指标(metrics),健康检查远程管理每个微服务应用程序

快速开始

Step 1 - 下载Spring Cloud Data Flow的本地服务器和Shellüber-jar:

Step 2 - 下载并启动Kafka 0.10 [用作消息中间件]

Step 3 - 启动本地服务器

Step 4 - 在运行本地服务器的同一台机器上启动Shell

Step 5 - 从Shell导入提供的应用程序

Step 6 - 从Shell创建'ticktock'流

一旦部署了“ticktock”流,您将会注意到输出与本地服务器控制台中类似的内容[参考Step 3]。 例如,日志应用程序的日志将位于:/var/folders/...../ticktock.log目录。

Step 7 - 验证'ticktock'日志

Step 8 - 查看本地服务器的仪表板功能:







请到「今天看啥」查看全文