Spring Cloud 综述
Spring Cloud 是什么
[百度百科]Spring Cloud是⼀系列框架的有序集合。它利⽤Spring Boot的开发便利 性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中⼼、消息总 线、负载均衡、断路器、数据监控等,都可以⽤ Spring Boot的开发⻛格做到⼀键启 动和部署。Spring Cloud并没有重复制造轮⼦,它只是将⽬前各家公司开发的⽐较 成熟、经得起实际考验的服务框架组合起来,通过Spring Boot⻛格进⾏再封装屏蔽 掉了复杂的配置和实现原理,最终给开发者留出了⼀套简单易懂、易部署和易维护 的分布式系统开发⼯具包。
Spring Cloud是一系列框架的有序集合(Spring Cloud是一个规范)
开发服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等
利用Spring Boot的开发便利性简化了微服务架构的开发(自动装配)
Spring Cloud 解决什么问题
Spring Cloud 规范及实现意图要解决的问题其实就是微服务架构实施过程中存在的一些问题,比如 微服务架构中的服务注册发现问题、网络问题(比如熔断场景)、统一认证安全授权问题、负载均衡问 题、链路追踪等问题。
Distributed/versioned configuration (分布式/版本化配置)
Service registration and discovery (服务注册和发现)
Routing (智能路由)
Service-to-service calls (服务调用)
Load balancing (负载均衡)
Circuit Breakers (熔断器)
Global locks (全局锁)
Leadership election and cluster state ( 选举与集群状态管理)
Distributed messaging (分布式消息传递平台)
Spring Cloud 架构
Spring Cloud 核心组件
第一代 Spring Cloud(Netflix, SCN) | 第二代 Spring Cloud(主要就是Spring Cloud Alibaba,SCA) | |
---|---|---|
注册中心 | Netflix Eureka | 阿里巴巴 Nacos |
客户端负 载均衡 | Netflix Ribbon | 阿里巴巴 Dubbo LB、Spring Cloud Loadbalancer |
熔断器 | Netflix Hystrix | 阿里巴巴 Sentinel |
网关 | Netflix Zuul:性能一般,未来将退出 Spring Cloud 生态圈 | 官方 Spring Cloud Gateway |
配置中心 | 官方 Spring Cloud Config | 阿里巴巴 Nacos、携程 Apollo |
服务调用 | Netflix Feign | 阿里巴巴 Dubbo RPC |
消息驱动 | 官方 Spring Cloud Stream | |
链路追踪 | 官方 Spring Cloud Sleuth/Zipkin | |
阿里巴巴 seata 分布式事务方案 |
Spring Cloud 体系结构(组件协同工作机制)
Spring Cloud中的各组件协同工作,才能够支持一个完整的微服务架构。比如
注册中心负责服务的注册与发现,很好将各服务连接起来
API网关负责转发所有外来的请求
断路器负责监控服务之间的调用情况,连续多次失败进行熔断保护。
配置中心提供了统一的配置信息管理服务,可以实时的通知各个服务获取最新的配置信息
Spring Cloud 与 Dubbo 对⽐、
Dubbo是阿⾥巴巴公司开源的⼀个⾼性能优秀的服务框架,基于RPC调⽤,对于⽬ 前使⽤率较⾼的Spring Cloud Netflix来说,它是基于HTTP的,所以效率上没有 Dubbo⾼,但问题在于Dubbo体系的组件不全,不能够提供⼀站式解决⽅案,⽐如 服务注册与发现需要借助于Zookeeper等实现,⽽Spring Cloud Netflix则是真正的 提供了⼀站式服务化解决⽅案,且有Spring⼤家族背景。 前些年,Dubbo使⽤率⾼于SpringCloud,但⽬前Spring Cloud在服务化/微服务解 决⽅案中已经有了⾮常好的发展趋势。
Spring Cloud 与 Spring Boot 的关系
Spring Cloud 只是利⽤了Spring Boot 的特点,让我们能够快速的实现微服务组件 开发,否则不使⽤Spring Boot的话,我们在使⽤Spring Cloud时,每⼀个组件的相 关Jar包都需要我们⾃⼰导⼊配置以及需要开发⼈员考虑兼容性等各种情况。所以 Spring Boot是我们快速把Spring Cloud微服务技术应⽤起来的⼀种⽅式。