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