SpringCloud简介
简介
Spring Cloud
是一个基于Spring Boot
实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
微服务架构
微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署、独立维护、独立扩展,服务与服务间通过诸如RESTful API的方式互相调用。可以参考Martin Fower
的《MicroServices》
架构
技术组成
- 服务治理:这是
Spring Cloud
的核心。目前Spring Cloud
主要通过整合Netflix
的相关产品来实现这方面的功能(Spring Cloud Netflix
),包括用于服务注册和发现的Eureka
,调用断路器Hystrix
,调用端负载均衡Ribbon
,Rest
客户端Feign
,智能服务路由Zuul
,用于监控数据收集和展示的Spectator、Servo、Atlas
,用于配置读取的Archaius
和提供Controller
层Reactive
封装的RxJava
。
对于服务的注册和发现,除了
Eureka,Spring Cloud
也整合了Consul
和Zookeeper
作为备选,但是因为这两个方案在CAP理论上都遵循CP而不是AP,所以官方并没有推荐使用。
分布式链路监控:
Spring Cloud Sleuth
提供了全自动、可配置的数据埋点,以收集微服务调用链路上的性能数据,并发送给Zipkin
进行存储、统计和展示。消息组件:
Spring Cloud Stream
对于分布式消息的各种需求进行了抽象,包括发布订阅、分组消费、消息分片等功能,实现了微服务之间的异步通信。Spring Cloud Stream
也集成了第三方的RabbitMQ
和Apache Kafka
作为消息队列的实现。而Spring Cloud Bus
基于Spring Cloud Stream
,主要提供了服务间的事件通信(比如刷新配置)。配置中心:基于
Spring Cloud Netflix
和Spring Cloud Bus,Spring
又提供了Spring Cloud Config
,实现了配置集中管理、动态刷新的配置中心概念。配置通过Git
或者简单文件来存储,支持加解密。安全控制:
Spring Cloud Security
基于OAUTH2
这个开放网络的安全标准,提供了微服务环境下的单点登录、资源授权、令牌管理等功能。命令行工具:
Spring Cloud Cli
提供了以命令行和脚本的方式来管理微服务及Spring Cloud
组件的方式。集群工具:
Spring Cloud Cluster
提供了集群选主、分布式锁、一次性令牌等分布式集群需要的技术组件。