简介

特点

  • 官方文档:https://spring.io/projects/spring-cloud;
  • 在 Spring Boot 基础之上构建,用于快速构建分布式系统的通用模式的工具集;
  • 集大成者,Spring Cloud 包含了微服务架构的方方面面;
  • 约定优于配置,基于注解,配置文件少;
  • 轻量级组件、开发简便、灵活;
  • 项目结构复杂,每一个组件或者每一个服务都需要创建一个项目;
  • 部署门槛高,项目部署需要配合 Docker 等容器技术进行集群部署;

新特性

一.Spring Cloud Netflix 彻底删除掉了除Eureka外的所有组件。

二.Bootstrap上下文默认不再启动。

  1. Spring Cloud容器是靠Bootstrap Context引导上下文来启动的,对应的类是BootstrapApplicationListener。
  2. 如果需要开启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

  1. 支持在 Spring Cloud CircuitBreakers 中包装 feign 客户端;
  2. Spring Cloud OpenFeign 安全部分的代码,从 Spring Cloud Security 移到了 Spring Cloud OpenFeign;
  3. 增加了 LoadBalancer 统计功能;

八. Spring Cloud Gateway

增加了对LoadBalancer统计信息的支持。

九. Spring Cloud Task

增加了单步批处理作业的文档

十. Spring Cloud Kubernetes

  1. 增加了基于 Kubernetes Java 客户端的响应式客户端发现实现;
  2. 增加了基于 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相关推荐

  1. Spring Cloud 2020.0.5 发布

    来源 | 公众号「Java架构日记」 Spring Cloud 2020.0.5 正式发布,这是错误修正版本.兼容 Spring Boot 2.4.x and 2.5.x, 不支持 2.6.x (请使 ...

  2. Spring Cloud 2020.0.4 发布!

    作者 | 冷冷 来源 | https://mp.weixin.qq.com/s/ugyP_6s8XJxLk_2L9e_8PA Spring Cloud 2020.0.4 正式发布,这是错误修正版本.兼 ...

  3. Spring Cloud 2020 年路线图:二季度Spring Boot 2.3、四季度Spring Cloud Ilford

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 局长 来源 | oschina.net/new ...

  4. Spring Cloud 2020.0.0 正式发布,对开发者来说意味着什么?

    作者 | YourBatman 在线教育领域资深架构师,Spring Framework 开源贡献者 冷冷 云集架构师.开源项目 pig 负责人.Spring Cloud Alibaba Commit ...

  5. Spring Cloud 2020年路线图发布,涵盖Spring Boot 2.3、2.4,Spring Cloud Ilford等重磅内容!

    Spring Cloud 开发团队昨日公布了 Spring Cloud 2020 年的路线图,并对 Spring Cloud Greenwich 和 Hoxton 的生命周期进行了一些讲解. Spri ...

  6. 极客日报第 37 期:苹果官网出现价格 Bug;大众 CEO点评“苹果造车”;Spring Cloud 2020.0 正式发布

    文章目录 一.互联网快讯 二.程序员专属 三.Github 每日精选 四.CSDN 社区优质博文精选 一.互联网快讯 1.阿里云量子模拟平台"太章 2.0"正式开源 阿里巴巴发布阿 ...

  7. spring cloud 2020 改变了版本的命名规则

    前言 一直对spring cloud 的版本命名规则很诟病,之前的spring cloud 版本名是根据伦敦地铁站名称的英文名称并按照字母a-z进行排序.虽然知道了规则感觉还行,但是这种对非英语语言环 ...

  8. Spring cloud 2020 gateway nacos 出现503的情况

    Spring cloud 2020 gateway nacos 出现503的情况 参考https://blog.csdn.net/weixin_39233623/article/details/121 ...

  9. Spring Cloud 2020.0.3 发布!

    2021年5月28日,Spring Cloud发布2020.0.3版本.该版本已经可以在Maven Central中找到. 版本内容 该版本是一个Bug修复和依赖升级版本.其中主要更新的内容如下: S ...

  10. 尚硅谷 spring cloud 2020

    本文博客内容均来自:木鱼水心- 视频教程来自 b 站:尚硅谷SpringCloud第2季 文章目录 服务注册中心 1.1 Eureka服务注册与发现 1.2 项目的搭建 1.3 Eureka集群原理 ...

最新文章

  1. 关于召开全国大学生智能车竞赛--百度智慧交通项目 培训通知(华中站)
  2. MySQL修改datadir目录
  3. matlab仿真计算代码代写,matlab/simulink程序代写
  4. 浪潮服务器测试文档,ESXI6.7注入浪潮服务器raid驱动测试
  5. MFC 之 重绘按键Cbutton
  6. 判断mysql的关键字_mysql中查询常用的关键字
  7. FTP协议的命令与返回码
  8. 9.这就是搜索引擎:核心技术详解 --- 用户查询意图分析
  9. ASP.NET MVC 4 (二)控制器
  10. c语言中islower是什么函数,C语言islower函数介绍、示例和实现
  11. 【模拟信号】基于matlab抑制载波双边带调幅信号产生+解调【含Matlab源码 985期】
  12. 服务器压力测试实现步骤,测试web性能时 做一个压力测试的四大步骤
  13. Cloudera Manager 5升级(官方翻译整理,企业级实战验证)
  14. Python 内置容器 之 字典 ( dict )超详细指南
  15. LED屏幕上轮流显示三色条纹、彩虹、四叶草(数组与内存映射的采用)
  16. 单向一对多和双向一对多
  17. MySql常用知识归纳整理(收藏)
  18. 使用React创建一个web3的前端
  19. URL中的20%、22%、26%、7B%、%7D、28%、29%解析成真实的字符
  20. OnkeyDown事件 和 OnBackPressed方法注意点

热门文章

  1. 海气耦合模态--学习笔记
  2. OA软件厂商的综合素质到底有多重要?
  3. 旅游行业数据可视化怎么做?快试试Smartbi一站式数据分析工具
  4. 上海各行政区域地铁站分布数量
  5. Repeater嵌套总结
  6. 模拟dns优选,处理dns的响应时间
  7. 长时间戴耳机选哪一种、目前最好用的骨传导耳机品推荐
  8. 剔除matlab中NaN
  9. python 笔记 一次失败的例子 《笨办法学Python》习题36 ——1.19
  10. python谷歌翻译 频率限制_Django限制API访问频率常用方法解析