Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。 Spring Cloud 是基于 Spring Boot 实现的
几个常用的组件:
服务治理:Netflix 的 Eureka
Spring Cloud Netflix 中的服务治理组件,包含服务注册中心、服务注册与发现机制的实现。
配置中心:Spring Cloud 的 Config
Spring Cloud 的配置管理工具,支持使用 Git 存储配置内容,实现应用配置的外部化存储,并支持在客户端对配置进行刷新、加密、解密等操作。
阿里巴巴 Nacos
可以作为微服务架构的注册中心和配置中心,可以简单理解为可以代替Netflix解决方案中的Eureka组件和Spring Cloud Config组件。
接口网关: Spring Cloud Gateway
一个基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关框架,它使用 Filter 链的方式提供了网关的基本功能,例如安全、监控/指标和限流等
服务跟踪:Spring Cloud 的 Sleuth
Spring Cloud 分布式链路跟踪组件,能够完美的整合 Twitter 的 Zipkin。
负载均衡: Spring Cloud Ribbon
断路器: Spring Cloud Hystrix
Spring Cloud Netflix 的容错管理组件,为服务中出现的延迟和故障提供强大的容错能力。
服务消费者声明式服务调用组件: Spring Cloud Netflix Feign
基于 Ribbon 和 Hystrix 的声明式服务调用组件。 Feign的一个关键机制就是使用了动态代理,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用 Feign 注解和 JAX-RS 注解,Feign 默认集成了 Ribbon,Nacos 也很好的兼容了 Feign,默认实现了负载均衡的效果
消息总线: Spring Cloud Bus
Spring Cloud 的事件和消息总线,主要用于在集群中传播事件或状态变化,以触发后续的处理,例如动态刷新配置。
消息中间件: Spring Cloud Stream
它集成了 Apache Kafka 和 RabbitMQ 等消息中间件,并通过定义绑定器作为中间层,完美地实现了应用程序与消息中间件之间的隔离。通过向应用程序暴露统一的 Channel 通道,使得应用程序不需要再考虑各种不同的消息中间件实现,就能轻松地发送和接收消息。
批量任务:Spring Cloud Task
主要解决短命微服务的任务管理,任务调度的工作,比如说某些定时任务晚上就跑一次,或者某项数据分析临时就跑几次。