SpringCloud是什么?

Posted java-1230

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud是什么?相关的知识,希望对你有一定的参考价值。

一、概念定义 

      Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。 

      Spring Cloud对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和云端平台以及和Spring Boot开发框架的集成。 

      Spring Cloud为微服务架构开发涉及配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性token,全局一致性锁,leader选举,分布式session,集群状态

      管理等操作提供了一种简单的开发方式。

      Spring Cloud 为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。

      Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等

      Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。

      换句话说:Spring Cloud 提供了构建分布式系统所需的“全家桶”。

   Spring Cloud 的特性 —> Spring Cloud 专注于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖。

  •  分布式/版本化配置
  •  服务注册和发现
  •  路由
  •  service-to-service
  •  负载均衡
  •  断路器
  •  分布式消息传递

二、Spring Cloud的項目的位置

Sping Cloud 是 Spring的一个顶级项目,Spring 的顶级项目列表如下

  •  Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你使用maven dependency引入spring jar包时它就在工作了。
  •  Spring Boot:旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能,可以和spring cloud联合部署。
  •  Spring Framework:即通常所说的spring 框架,是一个开源的Java/Java EE全功能栈应用程序框架,其它spring项目如spring boot也依赖于此框架。
  •  Spring Cloud:微服务工具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包。
  •  Spring XD:是一种运行时环境(服务器软件,非开发框架),组合spring技术,如spring batch、spring boot、spring data,采集大数据并处理。
  •  Spring Data:是一个数据访问及操作的工具包,封装了很多种数据及数据库的访问相关技术,包括:jdbc、Redis、MongoDB、Neo4j等。
  •  Spring Batch:批处理框架,或说是批量任务执行管理器,功能包括任务调度、日志记录/跟踪等。
  •  Spring Security:是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。
  •  Spring Integration:面向企业应用集成(EAI/ESB)的编程框架,支持的通信方式包括HTTP、FTP、TCP/UDP、JMS、RabbitMQ、Email等。
  •  Spring Social:一组工具包,一组连接社交服务API,如Twitter、Facebook、LinkedIn、GitHub等,有几十个。
  •  Spring AMQP:消息队列操作的工具包,主要是封装了RabbitMQ的操作。
  •  Spring HATEOAS:是一个用于支持实现超文本驱动的 REST Web 服务的开发库。
  •  Spring Mobile:是Spring MVC的扩展,用来简化手机上的Web应用开发。
  •  Spring for android:是Spring框架的一个扩展,其主要目的在乎简化Android本地应用的开发,提供RestTemplate来访问Rest服务。
  •  Spring Web Flow:目标是成为管理Web应用页面流程的最佳方案,将页面跳转流程单独管理,并可配置。
  •  Spring LDAP:是一个用于操作LDAP的Java工具包,基于Spring的JdbcTemplate模式,简化LDAP访问。
  •  Spring Session:session管理的开发工具包,让你可以把session保存到redis等,进行集群化session管理。
  •  Spring Web Services:是基于Spring的Web服务框架,提供SOAP服务开发,允许通过多种方式创建Web服务。
  •  Spring Shell:提供交互式的Shell可让你使用简单的基于Spring的编程模型来开发命令,比如Spring Roo命令。
  •  Spring Roo:是一种Spring开发的辅助工具,使用命令行操作来生成自动化项目,操作非常类似于Rails。
  •  Spring Scala:为Scala语言编程提供的spring框架的封装(新的编程语言,Java平台的Scala于2003年底/2004年初发布)。
  •  Spring BlazeDS Integration:一个开发RIA工具包,可以集成Adobe Flex、BlazeDS、Spring以及Java技术创建RIA。
  •  Spring Loaded:用于实现java程序和web应用的热部署的开源工具。
  •  Spring REST Shell:可以调用Rest服务的命令行工具,敲命令行操作Rest服务。

三、Spring Cloud的子项目

技术分享图片

  • Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,支持应用配置的外部化存储,支持客户端配置信息刷新、加解密配置内容等
  • Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
  • Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。
  • Netflix Eureka:一个基于rest服务的服务治理组件,包括服务注册中心、服务注册与服务发现机制的实现,实现了云端负载均衡和中间层服务器的故障转移。
  • Netflix Hystrix:容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供更强大的容错能力。
  • Netflix Ribbon:客户端负载均衡的服务调用组件。
  • Netflix Feign:基于Ribbon和Hystrix的声明式服务调用组件。
  • Netflix Zuul:微服务网关,提供动态路由,访问过滤等服务。
  • Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
  • Spring Cloud for Cloud Foundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。
  • Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。
  • Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。
  • Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。
  • Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。
  • Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。
  • Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。
  • Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。

Spring Cloud 优缺点

其主要优点有:
    1. 集大成者,Spring Cloud 包含了微服务架构的方方面面。
    2. 约定优于配置,基于注解,没有配置文件。
    3. 轻量级组件,Spring Cloud 整合的组件大多比较轻量级,且都是各自领域的佼佼者。
    4. 开发简便,Spring Cloud 对各个组件进行了大量的封装,从而简化了开发。
    5. 开发灵活,Spring Cloud 的组件都是解耦的,开发人员可以灵活按需选择组件。

它的缺点有:
    1.项目结构复杂,每一个组件或者每一个服务都需要创建一个项目。
    2.部署门槛高,项目部署需要配合 Docker 等容器技术进行集群部署,而要想深入了解 Docker,学习成本高。


Spring Cloud 和 Dubbo 对比

    Dubbo 只是实现了服务器治理,如需要集成其它模块,则需要单独引入,且增加了学习成本和集成成本。

    Spring Cloud 则实现了微服务架构的方方面面,服务治理只是其中的一个方面。如下图比较:

技术分享图片

 
















以上是关于SpringCloud是什么?的主要内容,如果未能解决你的问题,请参考以下文章

用没用过SpringCloud,就看你会不会这35个面试题!

微服务SpringCloud之服务注册与发现

从零开始搭建公司SpringCloud架构技术栈(史上最细),这套架构绝了!

##走过路过不容错过之##JavaEE 框架篇四 SpringCloud

# SpringCloud 服务治理实现(Consul)

SpringCloud基本微服务构建(Eureka+GateWay)