# SpringCloud介绍

## 简介

Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具，它为微服务架构中设计的配置管理，服务治理，断路器，智能路由，微代理，控制总线，全局锁，决策竞选，分布式会话和集群状态管理等操作提供了一个简单的开发方式。

## Spring Cloud子项目

* Spring Cloud Config：配置管理工具包，让你可以把配置放到远程服务器，集中化管理集群配置，目前支持本地存储、Git以及Subversion。并支持客户端配置信息刷新、加密/解密配置内容。
* Spring Cloud Netflix：核心组件，对多个Netflix OSS开源套件进行整合
  * Eureka：服务治理组件，包含服务注册中心，服务注册发现，故障转移，基于REST；
  * Hystrix：熔断器，容错管理工具，旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力；
  * Ribbon：提供云端负载均衡，有多种负载均衡策略可供选择，可配合服务发现和断路器使用；
  * Feign：基于Ribbon和Hystrix的声明式服务调用组件；
  * Zuul：网关组件，提供动态路由，监控，安全，弹性，访问过滤等功能；
  * Archaius：配置管理API，包含一系列配置管理API，提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能；
* Spring Cloud Bus：事件、消息总线，用于传播集群中的状态变化或事件，以触发后续的处理，比如用来动态刷新配置等，可与Spring Cloud Config联合实现热部署。
* Spring Cloud Cluster：提供Leadership选举，如：Zookeeper, Redis, Hazelcast, Consul等常见状态模式的抽象和实现。
* Spring Cloud Cloudfoundry：与Pivotal Cloudfoundry的整合支持，是VMware推出的开源PaaS云平台。
* Spring Cloud Consul：服务发现与配置管理工具，与Docker容器可以无缝集成。
* Spring Cloud Stream：数据流操作开发包，通过Redis、Rabbit或者Kafka实现的消息微服务，可以通过简单的声明式模型来发送和接收消息。
* Spring Cloud AWS：用于简化整合Amazon Web Service的组件。
* Spring Cloud Security：安全工具包，提供在Zuul代理中对OAuth2客户端请求的中继器，为你的应用程序添加安全控制。
* Spring Cloud Sleuth：日志收集工具包，封装了Dapper和log-based追踪以及Zipkin和HTrace操作，为SpringCloud应用实现了一种分布式追踪解决方案。
* Spring Cloud Zookeeper：操作Zookeeper的工具包，用于使用zookeeper方式的服务发现和配置管理。
* Spring Cloud Starters：Spring Boot式的启动项目，为Spring Cloud提供开箱即用的依赖管理。
* Spring Cloud CLI：基于 Spring Boot CLI，可以让你以命令行方式快速建立云组件。
* ......

## Spring Cloud的拓展

1. 服务间的调用如何提高性能，是否支持长连接？Spring Cloud的http请求慢在了哪里，是不支持长连接么，每次请求都要新建连接？
2. Spring Cloud的调用方法有哪几种，特性，优缺点有哪些？
3. Ribbon+RestTemplate：
4. Feign：是一个基于HTTP和TCP客户端的负载均衡器，其实feign也使用了ribbon, 只要使用@FeignClient时，ribbon就会自动使用。
5. 如何实现客户端无感知的服务自动上线和下线？

> 参考：
>
> 《Spring Cloud 微服务实战》
