当下互联网最热的架构模式可能就是微服务架构了吧,关于微服务的概念和介绍能够参照大神 Martin Flower 的文章 Microservices ,国内翻译版本 http://www.cnblogs.com/liuning8023/p/4493156.html 。而 Spring Cloud 则是伴随着微服务概念诞生的飞速发展的开源框架。html
Spring Cloud 是一个依赖于 Spring Boot 快速构建分布式系统的通用模型的云应用开发工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线),它是由一些列框架组成的集合框架。web
Spring Cloud专一于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖。spring
Spring Cloud 是由众多子项目组成的集合框架,主要项目包括:数据库
配置中心,为分布式系统中的外部配置提供服务器和客户端支持。服务端用于链接远程配置仓库和供客户端获取配置信息;客户端则是微服务中的各个应用。它实现了客户端和服务端上Spring Environment
和 PropertySource
的抽象映射。Spring Cloud Config 默认采用 Git 来存储服务端的配置信息,另外也提供了本地存储和 Subversion 的方式。后端
与 Netflix OSS集成,提供的模式包括服务发现(Eureka),断路器(Hystrix),智能路由(Zuul)和客户端负载平衡(Ribbon)。缓存
服务发现:Eureka服务器
一个基于 REST 的服务中心,实现微服务的注册与发现,包括 server 和 client 两部分。架构
断路器:Hystrixapp
经过断路器能够控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。负载均衡
智能路由:Zuul
为微服务架构提供了前门保护的做用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体可以具有更高的可复用性和可测试性。
客户端负载平衡:Ribbon
Ribbon是一个客户端负载均衡器,它能够很好地控制HTTP和TCP客户端的行为。
Spring Cloud Bus 将分布式系统的节点与轻量级消息代理连接。这能够用于广播状态更改(例如配置更改)或其余管理指令。
轻量级事件驱动的微服务框架,可快速构建可链接到外部系统的应用程序。使用Apache Kafka或RabbitMQ在Spring Boot应用程序之间发送和接收消息的简单声明式模型。
Spring Cloud任务应用程序启动器是Spring Boot应用程序,多是任何进程,包括不会永远运行的Spring Batch做业,而且它们在有限时间的数据处理以后结束/中止。
将您的应用程序与Pivotal Cloudfoundry集成。提供服务发现实现,还能够轻松实现经过SSO和OAuth2保护资源,还能够建立Cloudfoundry服务代理。
提供在分布式系统中的集群所须要的基础功能支持。
Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件。
在Zuul代理中为负载平衡的OAuth2休眠客户端和认证头中继提供支持。
适用于Spring Cloud应用程序的分布式跟踪,与Zipkin,HTrace和基于日志(例如ELK)跟踪兼容。
针对现代运行时的可组合微服务应用程序的云本地编排服务。易于使用的DSL,拖放式GUI和REST-API一块儿简化了基于微服务的数据管道的总体编排。
Zookeeper的服务发现和配置管理。
轻松集成托管的Amazon的Web Services服务。它经过使用spring的idioms和APIs便捷集成AWS服务,例如缓存或消息API。开发人员能够围绕托管服务,没必要关心基础架构来构建应用。
使PaaS应用程序在各类平台上轻松链接到后端服务,如数据库和消息代理(之前称为“Spring Cloud”的项目)。
Spring Boot式的启动项目,为Spring Cloud提供开箱即用的依赖管理。
基于 Spring Boot CLI,可让你以命令行方式快速创建云组件。