单体架构
将所有的功能都集中在一个模块中(WAR包)开发、部署、迭代,牵一发而动全身,局部低效率拖垮整个服务。

SOA
按服务对项目拆分,通过对外提供接口的方式提供服务,缓解了单体的单服务低效率拖垮整个服务的问题,但往往通过数据库进行数据共享,服务之间会基于数据库耦合。

微服务
独立开发、部署,技术栈独立,数据库独立。服务之间通过统一的HTTP接口调用,或采用Kafka、RabbitMQ等消息队列的方式进行通信,耦合性大大降低。

SpringCloud微服务组件
| 组件 | 功能 |
| Spring Cloud Config | 分布式配置中心,负责把配置放到远程服务器上,集中化管理集群配置。 |
| Eureka | 服务注册发现中心,基于 REST 服务的分布式中间件,主要用于服务管理。 |
| Hystrix | 熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点 , 从而对延迟和故障提供更强大的容错能力。 |
| Ribbon | 云端负载均衡器。支持多种负载均衡策略,可配合服务发现和熔断器使用,在客户端实现负载均衡。 |
| Feign | 一个 REST 客户端,基于 Ribbon 和 Hystrix 的声明式服务调用组件。 |
| Zuul | 服务网关,为微服务架构集群提供代理、过滤、路由等功能。 |
| Spring Cloud Bus | 事件、消息总线,用于在集群(例如配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署。 |
| Spring Cloud Stream | 数据流操作开发包,可与 Redis、RabbitMQ、Kafka 等架构进行消息发送与接收。 |
| Spring Cloud Sleuth | 服务追踪框架,可以与 Zipkin、Apache Htrace 和 ELK 等数据分析、服务跟踪系统进行整合,为跟踪服务、解决问题提供了便利。 |
SpringCloud架构
SpringCloud与SpringBoot版本兼容
| SpringCloud | SpringBoot |
| Greenwich | 兼容 Spring Boot 2.1.x |
| Finchley | 兼容 Spring Boot 2.0.x |
| Dalston 和 Edgware | 兼容 Spring Boot 1.5.x |
| Camden | 兼容 Spring Boot 1.4.x |
| Brixton | 兼容 Spring Boot 1.3.x |
| Angel | 兼容 Spring Boot 1.2.x |








