以下是来自官方的一篇简单介绍:
spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer’s own laptop, bare metal data centres, and managed platforms such as Cloud Foundry.
Spring Cloud为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式 会话,群集状态)。 分布式系统的协调导致了锅炉板模式,并且使用Spring Cloud开发人员可以快速地站起来实现这些模式的服务和应用程序。 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心和受管平台,如Cloud Foundry。
官方文档:http://projects.spring.io/spring-cloud/#quick-start
截止发表这内容时,springcloud官方最新版本是Camden.SR2,springcloud的版本名称很奇怪,它是按照伦敦地铁站的名称由a-z排序进行命名。
主要组件有:
-
分布式版本化配置
-
服务注册与发现
-
路由
-
服务间调用
-
负载均衡
-
断路器
-
全局锁
-
群集状态管理
-
分布式消息
子项目简介
Spring Cloud 是一个工具箱,他把很多现有的优秀项目进行了整合,使他们可以方便的在spring系统中使用
主要的子项目包括:
-
Spring Cloud Config
集中的配置管理,基于 git,这些配置资源的使用并不局限于 Spring 环境
-
Spring Cloud Netflix
Netflix 公司有很多优秀的项目,例如:
服务发现 Eureka、熔断器 Hystrix、动态路由 Zuul、配置管理 Archaius
Spring Cloud 把他们都整合了进来
-
Spring Cloud Bus
事件总线,用于集群中状态变化的传播,例如配置更新事件
-
Spring Cloud Cluster
为 Zookeeper、Redis、Hazelcast、Consul 提供了选主机制及一些常用模式的抽象和实现
-
Spring Cloud Consul
通过 Consul 实现的服务发现和配置管理
-
Spring Cloud Security
提供安全机制,支持 OAuth2 rest 客户端
-
Spring Cloud Sleuth
提供分布式跟踪功能,兼容 Zipkin、HTrace、日志跟踪(如 ELK)
-
Spring Cloud Data Flow
大数据操作工具,用于数据的接收、传输、存储、分析,支持实时和批处理
-
Spring Cloud Stream
一个轻量级的事件驱动微服务框架,可以快速连接外部系统,使用 Apache Kafka 或者 RabbitMQ 便捷的发送、接收消息
-
Spring Cloud Zookeeper
使用zookeeper实现服务发现和配置管理。
Eureka
一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务。由两个组件组成:Eureka服务器和Eureka客户端。 Eureka服务器用作服务注册服务器。Eureka客户端是一个Java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支 持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。
Ribbon
Ribbon,主要提供客户侧的软件负载均衡算法。
Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略:
- 简单轮询负载均衡
- 加权响应时间负载均衡
- 区域感知轮询负载均衡
- 随机负载均衡
Ribbon中还包括以下功能:
- 易于与服务发现组件(比如Netflix的Eureka)集成
- 使用Archaius完成运行时配置
- 使用JMX暴露运维指标,使用Servo发布
- 多种可插拔的序列化选择
- 异步和批处理操作(即将推出)
- 自动SLA框架(即将推出)
- 系统管理/指标控制台(即将推出)
Hystrix
断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费 CPU 周期,而它确定该故障是持久的。断路器模式也使应用程序能够检测故障是否已经解决。如果问题似乎已经得到纠正,应用程序可以尝试调用操作。
断路器增加了稳定性和灵活性,以一个系统,提供稳定性,而系统从故障中恢复,并尽量减少此故障的对性能的影响。它可以帮助快速地拒绝对一个操作,即 很可能失败,而不是等待操作超时(或者不返回)的请求,以保持系统的响应时间。如果断路器提高每次改变状态的时间的事件,该信息可以被用来监测由断路器保 护系统的部件的健康状况,或以提醒管理员当断路器跳闸,以在打开状态。
流程图
Zuul
类似nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性。
Spring Cloud Config
这里主要列举了一些常见的组件,更多的等待发掘。