Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操做提供了一种简单的开发方式。spring
微服务是能够独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,springcloud就是这些微服务的大管家,采用了微服务这种架构以后,项目的数量会很是多,springcloud作为大管家须要管理好这些微服务,天然须要不少小弟来帮忙。数据库
主要的小弟有:Spring Cloud Config、Spring Cloud Netflix(Eureka、Hystrix、Zuul、Archaius...)、Spring Cloud Bus、Spring Cloud for Cloud Foundry、Spring Cloud Cluster、Spring Cloud Consul、Spring Cloud Security、Spring Cloud Sleuth、Spring Cloud Data Flow、Spring Cloud Stream、Spring Cloud Task、Spring Cloud Zookeeper、Spring Cloud Connectors、Spring Cloud Starters、Spring Cloud CLI,每一个小弟身怀独门绝技武功高强下面来作一一介绍, springcloud 框架实例:www.1b23.com。编程
这但是个大boss,地位仅次于老大,老大各项服务依赖与它,与各类Netflix OSS组件集成,组成微服务的核心,它的小弟主要有Eureka, Hystrix, Zuul, Archaius... 太多了后端
Netflix Eureka安全
服务中心,云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。这个但是springcloud最牛鼻的小弟,服务中心,任何小弟须要其它小弟支持什么都须要从这里来拿,一样的你有什么独门武功的都赶忙过报道,方便之后其它小弟来调用;它的好处是你不须要直接找各类什么小弟支持,只须要到服务中心来领取,也不须要知道提供支持的其它小弟在哪里,仍是几个小弟来支持的,反正拿来用就行,服务中心来保证稳定性和质量。服务器
Netflix Hystrix架构
熔断器,容错管理工具,旨在经过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。好比忽然某个小弟生病了,可是你还须要它的支持,而后调用以后它半天没有响应,你殊不知道,一直在等等这个响应;有可能别的小弟也正在调用你的武功绝技,那么当请求多以后,就会发生严重的阻塞影响老大的总体计划。这个时候Hystrix就派上用场了,当Hystrix发现某个小弟不在状态不稳定立马立刻让它下线,让其它小弟来顶上来,或者给你说不用等了这个小弟今天确定不行,该干吗赶忙干吗去别在这排队了。app
Netflix Zuul框架
Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 至关因而设备和 Netflix 流应用的 Web 网站后端全部请求的前门。当其它门派来找大哥办事的时候必定要先通过zuul,看下有没有带刀子什么的给拦截回去,或者是须要找那个小弟的直接给带过去。分布式
Netflix Archaius
配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操做、轮询框架、回调机制等功能。能够实现动态获取配置,
原理是每隔60s(默认,可配置)从配置源读取一次内容,这样修改了配置文件后不须要重启服务就可使修改后的内容生效,前提使用archaius的API来读取。
俗称的配置中心,配置管理工具包,让你能够把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。就是之后你们武器、枪火什么的东西都集中放到一块儿,别随便本身带,方便之后统一管理、升级装备。
事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。至关于水浒传中日行八百里的神行太保戴宗,确保各个小弟之间消息保持畅通。
Cloud Foundry是VMware推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员可以在几秒钟内进行应用程序的部署和扩展,无需担忧任何基础架构的问题
其实就是与CloudFoundry进行集成的一套解决方案,抱了Cloud Foundry的大腿。
Spring Cloud Cluster将取代Spring Integration。提供在分布式系统中的集群所须要的基础功能支持,如:选举、集群的状态一致性、全局锁、tokens等常见状态模式的抽象和实现。
若是把不一样的帮派组织成统一的总体,Spring Cloud Cluster已经帮你提供了不少方便组织成统一的工具。
Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并容许 HTTP 和 DNS 协议调用 API 存储键值对.
Spring Cloud Consul 封装了Consul操做,consul是一个服务发现与配置工具,与Docker容器能够无缝集成。
Spring Cloud Security
基于spring security的安全工具包,为你的应用程序添加安全控制。这个小弟很牛鼻专门负责整个帮派的安全问题,设置不一样的门派访问特定的资源,不能把秘籍葵花宝典泄漏了。
Spring Cloud Sleuth
日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操做,为SpringCloud应用实现了一种分布式追踪解决方案。
Spring Cloud Data Flow
Data flow 是一个用于开发和执行大范围数据处理其模式包括ETL,批量运算和持续运算的统一编程模型和托管服务。
对于在现代运行环境中可组合的微服务程序来讲,Spring Cloud data flow是一个原生云可编配的服务。使用Spring Cloud data flow,开发者能够为像数据抽取,实时分析,和数据导入/导出这种常见用例建立和编配数据通道 (data pipelines)。
Spring Cloud data flow 是基于原生云对 spring XD的从新设计,该项目目标是简化大数据应用的开发。Spring XD 的流处理和批处理模块的重构分别是基于 spring boot的stream 和 task/batch 的微服务程序。这些程序如今都是自动部署单元并且他们原生的支持像 Cloud Foundry、Apache YARN、Apache Mesos和Kubernetes 等现代运行环境。
Spring Cloud data flow 为基于微服务的分布式流处理和批处理数据通道提供了一系列模型和最佳实践。
Spring Cloud Stream
Spring Cloud Stream是建立消息驱动微服务应用的框架。Spring Cloud Stream是基于spring boot建立,用来创建单独的/工业级spring应用,使用spring integration提供与消息代理之间的链接。数据流操做开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。
一个业务会牵扯到多个任务,任务之间是经过事件触发的,这就是Spring Cloud stream要干的事了
Spring Cloud Task
Spring Cloud Task 主要解决短命微服务的任务管理,任务调度的工做,好比说某些定时任务晚上就跑一次,或者某项数据分析临时就跑几回。
Spring Cloud Zookeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
操做Zookeeper的工具包,用于使用zookeeper方式的服务发现和配置管理,抱了Zookeeper的大腿。
Spring Cloud Connectors
Spring Cloud Connectors 简化了链接到服务的过程和从云平台获取操做的过程,有很强的扩展性,能够利用Spring Cloud Connectors来构建你本身的云平台。
便于云端应用程序在各类PaaS平台链接到后端,如:数据库和消息代理服务。
Spring Cloud Starters
Spring Boot式的启动项目,为Spring Cloud提供开箱即用的依赖管理。
Spring Cloud CLI
基于 Spring Boot CLI,可让你以命令行方式快速创建云组件。
Spring boot 是 Spring 的一套快速配置脚手架,能够基于spring boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring boot专一于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架;spring boot使用了默认大于配置的理念,不少集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring boot来实现,能够不基于Spring boot吗?不能够。
Spring boot能够离开Spring Cloud独立使用开发项目,可是Spring Cloud离不开Spring boot,属于依赖的关系。
spring -> spring booot > spring cloud 这样的关系。
微服务的框架那么多好比:dubbo、Kubernetes,为何就要使用Spring Cloud的呢?
产出于spring你们族,spring在企业级开发框架中无人能敌,来头很大,能够保证后续的更新、完善。好比dubbo如今就差很少死了
有spring Boot 这个独立干将能够省不少事,大大小小的活spring boot都搞的挺不错。
做为一个微服务治理的你们伙,考虑的很全面,几乎服务治理的方方面面都考虑到了,方便开发开箱即用。
Spring Cloud 活跃度很高,教程很丰富,遇到问题很容易找到解决方案
轻轻松松几行代码就完成了熔断、均衡负责、服务中心的各类平台功能
Spring Cloud 也有一个缺点,只能使用Java开发,不适合小型独立的项目。