
Spring Cloud概述
Spring Cloud是一个基于Spring Boot实现的构建微服务应用系统的工具集,为基于JVM的微服务应用系统提供配置管理、服务注册与发现、客户端负载均衡、熔断器、微服务API网关、微服务跟踪、消息总线、创建消息驱动微服务、微服务监控等功能。
常用组件
Spring Cloud Netflix
SpringCloud与各种Netflix OSS组件集成,组成微服务应用系统的核心功能。主要包括:
Eureka:服务注册中心,用于微服务功能的管理与注册,对微服务应用提供的功能进行统一管理,其他微服务需要功能支撑时直接从服务注册中心获取。
Hystrix:熔断器,容错管理工具,通过熔断机制防止服务雪崩效应。一个微服务应用存在多个可供直接调用的服务功能,这些服务功能若在调用时出现故障会导致连锁效应,让整个微服务应用变得不可用,我们称之为服务雪崩效应。
Zuul:微服务网关,可以和Eureka、Ribbon、Hystrix等组件配合使用,主要完成动态路由、监控、身份认证、安全、负载分配、弹性等功能。
Archaius:配置管理库。可用于从许多不同来源收集配置属性的框架,提供对配置信息快速访问功能。允许配置属性在运行时动态更改,无需重新启动应用就可获得更改后的变化。
Ribbon
基于客户端的负载均衡组件,提供对大量的HTTP和TCP客户端的访问控制。
Feign
声明式的REST客户端,让REST调用更加简洁。Feign提供了http请求模板,通过编写简单接口和插入注解,就定义好了http的请求参数、格式、地址等信息。可以与Eureka、Ribbon组合使用实现负载均衡。
Config
为分布式系统外部化配置提供服务器端和客户端支持,包含Config Server和Config Client两部分。
Bus
消息总线,将服务节点与轻量级消息中间件代理链接。可用于广播状态更改和其他管理指令。确保服务间消息畅通。
Sleuth
日志工具收集,为Spring Cloud提供分布式链路跟踪解决方案。
Stream
创建消息驱动微服务应用的框架。一个业务流程会涉及到多个服务,服务之间通过事件触发,Stream用于保证事件事件后的服务间正常调用流程的执行。
CloudFoundry
VMWare推出的开源PaaS云平台,支持多种语言、框架、运行时环境、云平台及应用服务。Spring Cloud提供的与CloudFoundry云平台集成方案。
Cluster
提供在分布式应用中的基础技术支持。如选举、集群状态一致性等常见状态模式的抽象和实现。
Consul
服务发现与配置工具,与Docker无缝集成。
与Dubbo比较
组件比较
| 组件功能 | Dubbo | Spring Cloud |
| 服务注册中心 | Zookeeper | Spring Cloud Netflix Eureka |
| 服务调用方式 | RPC | REST API |
| 服务监控 | Dubbo-monitor | Spring Boot Admin |
| 熔断器 | 不完善 | Spring Cloud Netflix Hystrix |
| 服务网关 | 无 | Spring Cloud Netflix Zuul |
| 分布式配置 | 无 | Spring Cloud Config |
| 服务跟踪 | 无 | Spring Cloud Sleuth |
| 消息总线 | 无 | Spring Cloud Bus |
| 数据流 | 无 | Spring Cloud Stream |
| 批量任务 | 无 | Spring Cloud Task |
关注点比较
Dubbo的关注点在于服务治理(服务调用、服务分发、服务监控和服务熔断),Spring Cloud为微服务应用构建提供一体化解决方案(服务治理是微服务应用关注的一个组成部分)。
技术选型
| 选型角度 | Dubbo | Spring Cloud |
| 侧重服务治理 | √ | × |
| 技术性能 | √ | × |
| 难易程度 | √ | × |
| 单体重构微服务 | × | √ |
| 单体应用改造 | √ | × |
| 云应用 | × | √ |
参考文献
https://springcloud.cc/spring-cloud-dalston.html
https://www.cnblogs.com/ityouknow/p/6791221.html
https://mp.weixin.qq.com/s/aYlHAXNbwiXq7DPFOYTK6A?




