Spring Cloud 是什么
[百度百科]Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Spring Cloud是一系列框架的有序集合(Spring Cloud是一个规范)。开发服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。利用Spring Boot的开发便利性简化了微服务架构的开发(自动装配)
这里,我们需要注意,Spring Cloud其实是一套规范,是一套用于构建微服务架构的规范,而不是一个可以拿来即用的框架(所谓规范就是应该有哪些功能组件,然后组件之间怎么配合,共同完成什么事情)。在这个规范之下第三方的Netflix公司开发了一些组件、Spring官方开发了一些框架/组件,包括第三方的阿里巴巴开发了一套框架/组件集合Spring Cloud Alibaba,这些才是Spring Cloud规范的实现。
Netflix搞了一套 ,简称SCN。
Spring Cloud 吸收了Netflix公司的产品基础之上自己也搞了几个组件阿里巴巴在之前的基础上搞出了一堆微服务组件,Spring Cloud Alibaba(SCA)。
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微服务技术栈。
SpringCloud主要核心组件如下:
| SpringCloud Netflix(一代) | SpringCloud 官方 | SpringCloud Zookeeper | SpringCloud Consul | SpringCloud Kubernetes | SpringCloud Alibaba(二代) |
分布式配置 | Archaius | SpringCloud Config | Zookeeper | Consul | ConfigMap | Nacos |
服务注册/发现 | Eureka |
-------- | Zookeeper | Consul | Api Server | Nacos |
服务熔断 | Hystris | -------- | -------- | -------- | -------- | Sentinel |
服务调用 | Feign | OpenFeign ResTemplate |
-------- |
-------- |
-------- |
Dubbo RPC |
服务路由(网关) |
Zull | SpringCloud GetWay |
-------- |
-------- |
-------- |
Dubbo PROXY |
分布式消息 |
-------- | SCS RabbitMQ |
-------- |
-------- |
-------- | SCS RabbitMQ |
负载均衡 | Ribbon | -------- | -------- | -------- | -------- | Dubbo LB |
分布式事务 |
-------- |
-------- |
-------- |
-------- |
-------- |
Seata |
注: Spring Cloud 生态圈中的组件,按照发展可以分为第一代 Spring Cloud组件和第二代 SpringCloud组件。 一代现在还有企业再用,将来二代必然会是大趋势。
本篇是基础概念,接下来会出Springboot,SpringCloud系列文章