springcloud(一)-初识

摘要:
spring cloud集成的组件大多是轻量级的,如Eureka、Zuul等。spring cloud为微服务架构提供完整的支持,如配置管理、服务发现、断路器、微服务网关等。spring cloud的组件是解耦的,开发者可以根据需要灵活选择技术类型。Spring cloud工具集我们在上面提到了Spring cloud是一个工具集,所以它下面肯定有几个弟弟。SpringClouddataflow是基于原生云的SpringXD的重新设计。该项目旨在简化大数据应用程序的开发。

springCloud简介

  尽管springCloud带有“cloud”字样,但它并不是云计算解决方案,而是在SpringBoot基础上构建的,用于快速构建分布式系统的通用的工具集。从技术架构上降低了对大型系统构建的要求,使我们以非常低的成本(技术或者硬件)搭建一套高效、分布式、容错的平台,但Spring Cloud也不是没有缺点,小型独立的项目不适合使用,另外对分布式事务的支持暂时也没有。

springcloud特点

  上面我们说了,springCloud是基于springboot开发的,那么springboot拥有的特点,springcloud也都有:

  1. 约定优于配置。
  2. 适用于各种环境。开发,部署在PC server或各种云环境(例如阿里云,AWS等)均可。
  3. 隐藏了组件的复杂性,并提供声明式,无XML的配置方式。
  4. 开箱即用,快速启动。
  5. 轻量级的组件。springcloud整合的组件大多比较轻量,例如Eureka,zuul,等等。都是各自领域轻量级的实现。
  6. 组件丰富,功能齐全。spring cloud为微服务架构提供了非常完整的支持,例如配置管理,服务发现,断路器,微服务网关等。
  7. 选型中立,丰富。例如:spring cloud支持使用Eureka,Zookeeper或Consul实现服务发现。
  8. 灵活。spring cloud的组成部分是解耦的,开发人员可按需灵活挑选技术选型。

springcloud工具集

上面我们提到,springcloud是一个工具集,那么它下面肯定有若干个小弟。我们先打个照面。

主要成员

Spring Cloud Netflix

这可是个大boss,地位仅次于老大,老大各项服务依赖与它,与各种Netflix OSS组件集成,组成微服务的核心,它的小弟主要有Eureka, Hystrix, Zuul, Archaius... 太多了

Netflix Eureka

服务中心,云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。这个可是springcloud最牛鼻的小弟,服务中心,任何小弟需要其它小弟支持什么都需要从这里来拿,同样的你有什么独门武功的都赶紧过报道,方便以后其它小弟来调用;它的好处是你不需要直接找各种什么小弟支持,只需要到服务中心来领取,也不需要知道提供支持的其它小弟在哪里,还是几个小弟来支持的,反正拿来用就行,服务中心来保证稳定性和质量。

Netflix Hystrix

熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。比如突然某个小弟生病了,但是你还需要它的支持,然后调用之后它半天没有响应,你却不知道,一直在等等这个响应;有可能别的小弟也正在调用你的武功绝技,那么当请求多之后,就会发生严重的阻塞影响老大的整体计划。这个时候Hystrix就派上用场了,当Hystrix发现某个小弟不在状态不稳定立马马上让它下线,让其它小弟来顶上来,或者给你说不用等了这个小弟今天肯定不行,该干嘛赶紧干嘛去别在这排队了。

Netflix Zuul

Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。当其它门派来找大哥办事的时候一定要先经过zuul,看下有没有带刀子什么的给拦截回去,或者是需要找那个小弟的直接给带过去。

Netflix Archaius

配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。可以实现动态获取配置,
原理是每隔60s(默认,可配置)从配置源读取一次内容,这样修改了配置文件后不需要重启服务就可以使修改后的内容生效,前提使用archaius的API来读取。

Spring Cloud Config

俗称的配置中心,配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。就是以后大家武器、枪火什么的东西都集中放到一起,别随便自己带,方便以后统一管理、升级装备。

Spring Cloud Bus

事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。相当于水浒传中日行八百里的神行太保戴宗,确保各个小弟之间消息保持畅通。

Spring Cloud for Cloud Foundry

Cloud Foundry是VMware推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题

其实就是与CloudFoundry进行集成的一套解决方案,抱了Cloud Foundry的大腿。

Spring Cloud Cluster

Spring Cloud Cluster将取代Spring Integration。提供在分布式系统中的集群所需要的基础功能支持,如:选举、集群的状态一致性、全局锁、tokens等常见状态模式的抽象和实现。

如果把不同的帮派组织成统一的整体,Spring Cloud Cluster已经帮你提供了很多方便组织成统一的工具。

Spring Cloud Consul

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,可以让你以命令行方式快速建立云组件。

springCloud版本

通常情况下,spring框架的版本号的命名形式是“主版本号.次版本号.增量版本号.里程碑版本号”,对不对。例如Spring Framework稳定版本4.3.5.RELEASE,里程碑版本5.0.0.M4等。其中,主版本号表示项目的重大重构;次版本号表示新特性的添加和变化;增量版本号一般表示BUG修复;里程碑版本号表示某版本号的里程碑。

然而,spring cloud并未使用这种方式管理版本。下面来详细探讨一下spring cloud的版本。

spring Cloud是一个综合项目,它包含很多子项目。就是上面列举出来的,这些子项目自己维护着自己的版本号,和其他规则一样。那么spring cloud为了区别于这些子项目,我就不能这样定义了,毕竟我是大哥呀!

通常主版本号都是 1,2,3,4...顺序下去。spring cloud的主版本号有Angel,Brixton,Camden,Dalston,Edgware,Finchley等。这些都是伦敦地铁站的名称,注意首字母你会发现,它们按照字母顺序发行。那么同一个版本需要做些小修小改呢?后面怎么表示?用SRX的形式命名。比如:

  首先发行:Edgware RELEASE.

  做了一次小修小改之后,再发行:Edgware SR1

  再做一次修补,发行:Edgware SR2

就是这样。

spring cloud/spring boot版本兼容性

  • Angel版本基于Spring boot 1.2.x构建,在一些场景下,与Spring Boot 1.3.x及以上版本不兼容。
  • Brixton版本基于Spring boot1.3.x构建,也可使用1.4.x进行测试,与1.2.x不兼容。
  • Camden版本基于Spring boot1.4.x构建,也可使用1.5.x进行测试。
  • Dalston版本基于Spring boot1.5.x构建,不兼容Spring boot2.0.x。
  • Edgware版本基于Spring boot1.5.x构建,不兼容Spring boot2.0.x。
  • Finchley版本基于Spring boot2.0.x构建,不兼容Spring boot 1.x 。

免责声明:文章转载自《springcloud(一)-初识》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇存储空间的最大地址这样算ES7学习笔记(十二)高亮 和 搜索建议下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

21.Shiro在springboot与vue前后端分离项目里的session管理

1.前言 当决定前端与后端代码分开部署时,发现shiro自带的session不起作用了。 然后通过对请求head的分析,然后在网上查找一部分解决方案。 最终就是,登录成功之后,前端接收到后端传回来的sessionId,存入cookie当中。 之后,前端向后端发送请求时,请求Head中都会带上这个sessionid。 后端代码通过对这个sessionid的解...

在Tomcat服务器中启动SpringBoot项目原理(简化版)

总的来说,tomcat方式启动WAR包项目, tomcat会查询context上下文中实现ServletContainerInitializer接口的类,然后调用类的onStartup(Set<Class<?>> c, ServletContext ctx)方法 Spring的SpringServletContainerInitia...

Spring源码阅读笔记01:源码阅读环境准备

1. 写在前面 对于做Java开发的同学来说,Spring就像是一条绕不过去的路,但是大多数也只是停留在对Spring的简单使用层面上,对于其背后的原理所知不多也不愿深究,关于这个问题,我在平时的生活及工作中也在不断思考。 为什么要阅读Spring的源码? 不是为了读源码而读源码,Spring有很好的设计思想,值得学习; Spring是当前使用最广泛的一...

阿里云服务器远程登录服务器的账号密码在这里看!【亲测有效】

最近购买了一台阿里云服务器,装的centos,阿里云远程登录服务器的时候,账号不知道在哪里看!最后找到了解决办法: 首先远程登录默认的用户是:administrator(windows服务器),root(linux服务器) 密码怎么看? 密码是没有默认的密码的,需要我们先去重置实例登录的密码:  在这里重置实例登录密码后,重启服务器,然后在后台用: l...

API网关实践-网易云轻舟微服务

微服务最佳实践中,我们需要通过统一的 API 网关进行服务能力的共享,API 网关为用户提供发布、管理、保护和监控 API的能力,帮助用户在自己的多个系统之间,或者内部系统与合作伙伴以及第三方的系统之间实现跨系统、跨协议的服务能力互通。 API网关应用场景 API网关有三种典型的应用场景: 内部业务集成:规范系统间API接口,快速完成企业内部系统的解耦及前...

Git 分支管理最佳实践

it 是目前最流行的源代码管理工具。大量的软件项目由 GitHub、Bitbucket 和 GitLab 这样的云服务平台或是私有的 Git 仓库来管理。在使用 Git 时通常会遇到的一个问题是采用何种分支管理实践,即如何管理仓库中作用不同的各类分支。和软件开发中的其他实践一样,Git 分支管理并没有普遍适用的最佳做法,而只有对每个团队和项目而言最适合的做...