spring cloud 2020

 简介

特点

  • 官方文档: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 FeignREST调用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 没有自动定位到断点的位置;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值