SpringCloud概述
SpringCloud综合概述
1、Spring Cloud 简介
1.1官网简介
【原文】Building distributed systems doesn't need to be complex and error-prone(易错). SpringCloud offers a simple and accessible(易接受的) programming model to the most common distributed system patterns(模式), helping developers build resilient(有弹性的), reliable(可靠的),and coordinated(协调的) applications. Spring Cloud is built on top of Spring Boot, making it easy for developers to get started and become productive quickly.
【翻译】构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。
1.2百度百科
Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。Spring Cloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者提供了一套简单易懂、易部署和易维护的分布式系统开发工具包。
总结:
1、Spring Cloud是⼀系列框架的有序集合(Spring Cloud是⼀个规范)
2、组件包括服务发现注册、配置中⼼、消息总线、负载均衡、断路器、数据监控等
3、利⽤Spring Boot的开发便利性简化了微服务架构的开发(⾃动装配)
注意:
这里,我们需要注意,Spring Cloud其实是⼀套规范,是⼀套⽤于构建微服务架构的规范,⽽不是⼀个可以拿来即用的框架。在这个规范之下第三方的Netflix公司开发了⼀些组件、Spring官⽅开发了⼀些框架/组件,包括第三⽅的阿⾥巴巴开发了⼀套框架/组件集合Spring Cloud Alibaba,这些才是Spring Cloud规范的实现。
因此我们经常称Netflix开发的组件比如Eureka称之为第一代SpringCloud 简称SCN,由Alibaba开发的SpringCloud组件比如Nacos称为第二代SpringCloud简称SCA。
1.3SpringCloud版本说明
Spring Cloud 的版本号并不是我们通常见的数字版本号,而是一些很奇怪的单词。这些单词均为英国伦敦地铁站的站名。同时根据字母表的顺序来对应版本时间顺序,比如:最早的 Release 版本 Angel(天使),第二个 Release 版本 Brixton(英国地名),然后是 Camden、Dalston、Edgware,目前使用较多的是 Finchley(英国地名)版本,而最新版本为 Hoxton(英国地名),而我们这里要使用的是 Greenwich(格林威治)。
- SNAPSHOP:快照版,可以使用,但其仍处理连续不断的开发改进中,不建议使用。
- M:里程碑版。其也会标注上 PRE,preview,预览版,内测版,不建议使用。
- RC:Release Candidate,发行候选版,主要是用于修复 BUG,一般该版本中不会再添加大的功能修改了。正式发行前的版本。
- SR:Service Release,服务发行版,正式发行版。一般还会被标注上 GA,General Available
SpringCloud与SpringBoot对应的版本
某一版本的 Spring Cloud 要求必须要运行在某一特定 Spring Boot 版本下。它们的对应关
系在 Spring Cloud 官网可以看到版本对应说明。
[图片上传失败...(image-6e8e41-1615007133148)]
1.4Spring Cloud与Dubbo技术
Spring Cloud 与 Dubbo 均为微服务框架,开发团队在进行技术选型时,总会将它们进行对比,考虑应该选择哪一个。可以从以下几方面考虑:
- 架构完整度 Dubbo 仅提供了服务注册与服务治理两个模块。攒机器
- 社区活跃度
- 通讯协议 Dubbo 通讯使用的是 RPC,Spring Cloud 是 HTTP REST,Spring Cloud gRPC,Spring Cloud Dubbo
- 技术改造与微服务开发
一般开发新的服务使用SpringCloud,对老服务进行改造使用Dubbo 成本比较低。
1.5SpringCloud核心组件
| | 第⼀代 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 | |
| 分布式事务解决 | | Alibaba seata 分布式事务⽅案 |
1.6SpringCloud核心组件之间协同工作
imageSpring Cloud中的各组件协同⼯作,才能够⽀持⼀个完整的微服务架构。⽐如
- 注册中⼼负责服务的注册与发现,很好将各服务连接起来
- API⽹关负责转发所有外来的请求
- 断路器负责监控服务之间的调⽤情况,连续多次失败进⾏熔断保护。
- 配置中⼼提供了统⼀的配置信息管理服务,可以实时的通知各个服务获取最新的
- 配置信息