spring cloud 2020
简介
特点
- 官方文档:https://spring.io/projects/spring-cloud;
- 在 Spring Boot 基础之上构建,用于快速构建分布式系统的通用模式的工具集;
- 集大成者,Spring Cloud 包含了微服务架构的方方面面;
- 约定优于配置,基于注解,配置文件少;
- 轻量级组件、开发简便、灵活;
- 项目结构复杂,每一个组件或者每一个服务都需要创建一个项目;
- 部署门槛高,项目部署需要配合 Docker 等容器技术进行集群部署;
新特性
一.Spring Cloud Netflix 彻底删除掉了除Eureka外的所有组件。
二.Bootstrap上下文默认不再启动。
- Spring Cloud容器是靠Bootstrap Context引导上下文来启动的,对应的类是BootstrapApplicationListener。
- 如果需要开启Bootstrap上下文,有两种办法可以实现:设置值
spring.cloud.bootstrap.enabled=true
或者spring.config.use-legacy-processing=true
即可。注意:这些个属性值必须确保其能放进环境里才能生效。比如靠谱的方式是:系统属性、环境变量、命令行等引入一个Jar:org.springframework.cloud:spring-cloud-starter-bootstrap
。
三. 全新的配置方式
得益于Spring Boot 2.4.x支持全新的配置文件书写方式,自此可以使用spring.config.import
导入其它组建的配置。如:
spring.config.import=configserver:xxx
spring.config.import=zookeeper:
spring.config.import=consul:
spring.config.import=vault:
这么做更具模块化,更符合云原生环境的要求
四. Spring Cloud Config
之前若要禁用Spring Cloud Config Client端的健康指示用的是health.config.enabled=false
,现改为management.health.config.enabled=false
,保持了和Spring Boot控制端点风格一致。
五。 移除了Spring Cloud Security
Spring Cloud Security 这个项目删除了,其主要代码已经移到了 Spring Cloud Commons下。
六.Spring Cloud LoadBalancer
支持服务端统计
七. Spring Cloud Openfeign
- 支持在 Spring Cloud CircuitBreakers 中包装 feign 客户端;
- Spring Cloud OpenFeign 安全部分的代码,从 Spring Cloud Security 移到了 Spring Cloud OpenFeign;
- 增加了 LoadBalancer 统计功能;
八. Spring Cloud Gateway
增加了对LoadBalancer统计信息的支持。
九. Spring Cloud Task
增加了单步批处理作业的文档
十. Spring Cloud Kubernetes
- 增加了基于 Kubernetes Java 客户端的响应式客户端发现实现;
- 增加了基于 Kubernetes Java 客户端的 Spring Cloud Loadbalancer 实现;
组件
- 注册中心:Netflix Eureka;
- 负载均衡:Netflix Ribbon(2020 版本前)、Spring Cloud Loadbalancer(2020 版本后);
- 熔断器:Netflix Hystrix(2020 版本前)、Resilience4j(2020 版本后);
- 声明式服务调用组件:Feign(最初属 Netflix 公司,后来移交给 OpenFeign 组织);
- 网关:Netflix Zuul(2020 版本前)、Spring Cloud Gateway(2020 版本后);
- 配置中心:Spring Cloud Config;
- 事件、消息总线:Spring Cloud Bus;
- 安全组件:Spring Cloud Security;
子项目 | 作用 | 解决了什么问题 |
Netflix Eureka | 服务注册与发现 | 硬编码服务提供者地址的方式有不少问题。要想解决这些问题,服务消费者需要一个强大的服 务发现机制,服务消费者使用这种机制获取服务提供者的网络信息。不仅如此,即使服务提供者的网络地址发生变化,服务消费者也无须修改配置文件。 |
Netflix Ribbon,Spring Cloud Loadbalancer(2020 版本后) | 客户端侧负载均衡 | Ribbon 的作用是负载均衡,会帮你在每次请求时选择一台服务器,均匀的把请求分发到各个服务器上。 |
Netflix Feign | REST调用 | Feign Client 会在底层根据你的注解,跟你指定的服务建立连接、构造请求、发起请求、获取响应、解析响应,等等。 |
Netflix Hystrix | 容错处理 | 服务链上,因为某个微服务的异常,而导致雪崩效应,整条服务链宕机的问题;Hystrix回去捕获这个异常,利用Hystrix接口处理这类异常。 |
Netflix Zuul | 微服务网关(使用Spring Cloud Gateway代替,官方不会集成 Zuul 2.x) | 负责网络路由,可以做统一的降级、限流、认证授权、安全,等等。 |
Spring Cloud Config | 分布式配置 | |
Turbine | 聚合Hystrix监控数据 | |
Sleuth | 微服务跟踪 |
总结
第一步:服务注册
第二步:服务发现
第三步:负载均衡
第四步:服务调用
第五步:隔离、熔断与降级
第六步:网关路由
总结详细讲解:各个服务启动时,Eureka Client 都会将服务注册到 Eureka Server,并且 Eureka Client 还可以反过来从 Eureka Server 拉取注册表,从而知道其他服务在哪里。服务间发起请求的时候,基于 Spring Cloud Loadbalancer 做负载均衡,从一个服务的多台机器中选择一台。基于 Feign 的动态代理机制,根据注解和选择的机器,拼接请求 URL 地址,发起请求。发起请求是通过 Hystrix 的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。如果前端、移动端要调用后端系统,统一从 Zuul 网关进入,由 Spring Cloud Gateway 网关转发请求给对应的服务。
问题收集
- 启动分布式微服务报错:Live reload start error, Address already in use;
- 每个微服务都配置有热部署依赖,热部署默认端口重复启动被占用,用以下配置修改每个微服务热部署端口;
- spring.devtools.livereload.port=35730
- Idea 启动微服务,控制台无报错,微服务启动不成功,注册不成功;
- 解决思路
- 尝试去掉最近添加的配置,重启问题依旧;
- 尝试重启注册中心,再重启该微服务,问题依旧;
- 尝试启动其他正常微服务,对比日志,问题依旧;
- 尝试使用 Java 命令启动该微服务,正常启动;
- 尝试使用 Eclipse 启动该微服务,正常启动;
- 搜索关键字“Idea 启动 Spring Boot 项目停滞”得到答案,Idea 打了特殊断点,但是 Idea 没有自动定位到断点的位置;
- 解决思路
spring cloud 2020相关推荐
- Spring Cloud 2020.0.5 发布
来源 | 公众号「Java架构日记」 Spring Cloud 2020.0.5 正式发布,这是错误修正版本.兼容 Spring Boot 2.4.x and 2.5.x, 不支持 2.6.x (请使 ...
- Spring Cloud 2020.0.4 发布!
作者 | 冷冷 来源 | https://mp.weixin.qq.com/s/ugyP_6s8XJxLk_2L9e_8PA Spring Cloud 2020.0.4 正式发布,这是错误修正版本.兼 ...
- Spring Cloud 2020 年路线图:二季度Spring Boot 2.3、四季度Spring Cloud Ilford
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 局长 来源 | oschina.net/new ...
- Spring Cloud 2020.0.0 正式发布,对开发者来说意味着什么?
作者 | YourBatman 在线教育领域资深架构师,Spring Framework 开源贡献者 冷冷 云集架构师.开源项目 pig 负责人.Spring Cloud Alibaba Commit ...
- Spring Cloud 2020年路线图发布,涵盖Spring Boot 2.3、2.4,Spring Cloud Ilford等重磅内容!
Spring Cloud 开发团队昨日公布了 Spring Cloud 2020 年的路线图,并对 Spring Cloud Greenwich 和 Hoxton 的生命周期进行了一些讲解. Spri ...
- 极客日报第 37 期:苹果官网出现价格 Bug;大众 CEO点评“苹果造车”;Spring Cloud 2020.0 正式发布
文章目录 一.互联网快讯 二.程序员专属 三.Github 每日精选 四.CSDN 社区优质博文精选 一.互联网快讯 1.阿里云量子模拟平台"太章 2.0"正式开源 阿里巴巴发布阿 ...
- spring cloud 2020 改变了版本的命名规则
前言 一直对spring cloud 的版本命名规则很诟病,之前的spring cloud 版本名是根据伦敦地铁站名称的英文名称并按照字母a-z进行排序.虽然知道了规则感觉还行,但是这种对非英语语言环 ...
- Spring cloud 2020 gateway nacos 出现503的情况
Spring cloud 2020 gateway nacos 出现503的情况 参考https://blog.csdn.net/weixin_39233623/article/details/121 ...
- Spring Cloud 2020.0.3 发布!
2021年5月28日,Spring Cloud发布2020.0.3版本.该版本已经可以在Maven Central中找到. 版本内容 该版本是一个Bug修复和依赖升级版本.其中主要更新的内容如下: S ...
- 尚硅谷 spring cloud 2020
本文博客内容均来自:木鱼水心- 视频教程来自 b 站:尚硅谷SpringCloud第2季 文章目录 服务注册中心 1.1 Eureka服务注册与发现 1.2 项目的搭建 1.3 Eureka集群原理 ...
最新文章
- 关于召开全国大学生智能车竞赛--百度智慧交通项目 培训通知(华中站)
- MySQL修改datadir目录
- matlab仿真计算代码代写,matlab/simulink程序代写
- 浪潮服务器测试文档,ESXI6.7注入浪潮服务器raid驱动测试
- MFC 之 重绘按键Cbutton
- 判断mysql的关键字_mysql中查询常用的关键字
- FTP协议的命令与返回码
- 9.这就是搜索引擎:核心技术详解 --- 用户查询意图分析
- ASP.NET MVC 4 (二)控制器
- c语言中islower是什么函数,C语言islower函数介绍、示例和实现
- 【模拟信号】基于matlab抑制载波双边带调幅信号产生+解调【含Matlab源码 985期】
- 服务器压力测试实现步骤,测试web性能时 做一个压力测试的四大步骤
- Cloudera Manager 5升级(官方翻译整理,企业级实战验证)
- Python 内置容器 之 字典 ( dict )超详细指南
- LED屏幕上轮流显示三色条纹、彩虹、四叶草(数组与内存映射的采用)
- 单向一对多和双向一对多
- MySql常用知识归纳整理(收藏)
- 使用React创建一个web3的前端
- URL中的20%、22%、26%、7B%、%7D、28%、29%解析成真实的字符
- OnkeyDown事件 和 OnBackPressed方法注意点