单体架构
将所有的功能都集中在一个模块中(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 |