SpringBoot 与 SpringCloud 介绍

SpringBoot

SpringBoot 站点

SpringBoot 特性

  1. 创建独立的 Spring 应用程序
  2. 嵌入的 Tomcat,无需部署 WAR 文件,适用于准生产环境
  3. 简化 Maven 配置
  4. 自动配置 Spring
  5. 提供生产就绪型功能,如指标、健康检查、外部配置
  6. 开箱即用,无需 XML 配置

SpringBoot 核心模块

  1. spring-boot
  2. spring-boot-autoconfigure
  3. spring-boot-starters
  4. spring-boot-cli
  5. spring-boot-actuator
  6. spring-boot-actuator-autoconfigure
  7. spring-boot-test
  8. spring-boot-test-autoconfigure
  9. spring-boot-loader
  10. spring-boot-devtools

SpringCloud

SpringCloud 站点

SpringCloud 是什么

SpringCloud 是一系列框架的有序集合。它利用 SpringBoot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,同时很方便做到一键启动和部署。SpringCloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 SpringBoot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。其中 SpringCloud 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分布式会话,集群状态)。它们适用于任何分布式环境,包括开发人员自己的笔记本电脑,裸机数据中心和 Cloud Foundry 等托管平台。

SpringBoot 与 SpringCloud 的关系

  • SpringBoot 专注于快速、方便的开发单个微服务个体,SpringCloud 则关注全局的服务治理
  • SpringCloud 将 SpringBoot 开发的一个个单体微服务整合并管理起来,为各个微服务之间提供配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等集成的服务
  • SpringBoot 可以离开 SpringCloud 独立使用开发项目,但是 SpringCloud 离不开 SpringBoot,属于依赖的关系

SpringCloud 组件

SpringCloud 提供一整套的微服务解决方案,生态内大概有 21 个组件;大致可分成两类,一类是对现有成熟框架 ”SpringBoot 化” 的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如 Spring Cloud Stream 扮演的就是 Kafka、ActiveMQ 这样的角色。对于想快速实践微服务的开发者来说,第一类组件就已经足够使用,如:

  • Spring Cloud Netflix,是对 Netflix 开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST 客户端、请求路由等
  • Spring Cloud Config,将配置信息中央化保存,配置 Spring Cloud Bus 可以实现动态修改配置文件
  • Spring Cloud Bus,分布式消息队列,是对 Kafka、MQ 的封装
  • Spring Cloud Security,对 Spring Security 的封装,并能配合 Netflix 使用
  • Spring Cloud Zookeeper,对 Zookeeper 的封装,使之能配置其它 Spring Cloud 的子项目使用
  • Spring Cloud Eureka,是 Spring Cloud Netflix 微服务套件中的一部分,它基于 Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能

SpringCloud 常用组件

  • Spring Cloud Config:配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git 以及 Subversion
  • Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署
  • Spring Cloud Netflix:针对多种 Netflix 组件提供的开发工具包,其中包括 Eureka、Hystrix、Zuul、Archaius 等
  • Netflix Eureka:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移
  • Netflix 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、RabbitMQ、Kafka 等发送接收消息
  • Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件

SpringCloud 组件概览图

springcloud-modules

SpringCloud 架构图集

SpringCloud 架构图

springcloud-architecture

SpringCloud Alibaba 技术中台架构图

springcloud-alibaba