初识springcloud

一、springcloud简介

Spring Cloud是Spring旗下的项目之一,将现在非常流行的一些技术整合到一起,实现了诸如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等功能。主要包括:

  • Eureka:注册中心
  • Zuul:服务网关
  • Ribbon:负载均衡
  • Feign:服务调用
  • Hystrix:熔断器

spring架构图:
在这里插入图片描述

二、Eureka注册中心

1.说明

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

2.原理图

在这里插入图片描述

  • Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址
  • 提供者:启动后向Eureka注册自己信息(地址,提供什么服务)
  • 消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新
  • 心跳(续约):提供者定期通过HTTP方式向Eureka刷新自己的状态

三、Ribbon负载均衡

1.说明

Ribbon 是 Netflix 发布的负载均衡器,它有助于控制 Http 和 TCP 客户端的行为。为 Ribbon 配置服务提供者地址列表后, Ribbon 就可以基于某种负载均衡算法,自动地帮助服务消费者去请求。

2.图示

在这里插入图片描述

  • Nginx是属于服务器端的负载均衡,Nginx的客户端发起请求不知道会被负载到哪台服务器上,Nginx是进程之间调用时候做的负载均衡
  • Ribbon是属于客户端的负载均衡,Ribbon发起的请求都是非常明确的,就像调用本地服务一样,Ribbon是进程内部选择调用时候做的负载均衡

三、Hystrix熔断器

1.说明

Hystix 是 Netflix 开源的一个延迟和容错库,用于隔离访问远程服务,防止出现级联失败。在这里插入图片描述
服务器支持的线程和并发数有限,如果在请求时一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。Hystrix解决雪崩问题的手段,主要包括:线程隔离和服务降级。

2.线程隔离和服务降级

Hystrix 为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队,加速失败判定时间。用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理。用户的请求故障时,不会被阻塞,也不会导致系统崩溃,相反可以通过手段友好提示用户。服务降级虽然会导致请求失败,但是不会导致阻塞,而且最多会影响这个依赖服务对应的线程池中的资源,对其它服务没有响应。

四、Feign服务调用

说明

Feign 可以把 Rest 的请求进行隐藏,伪装成类似 SpringMVC 的 Controller 一样。不用再自己拼接url,拼接参数等,一切都可以交给 Feign 去做。Feign 中已经自动集成了 Ribbon 负载均衡,因此不需要自己定义RestTemplate进行负载均衡的配置。Feign 默认也有对 Hystrix 的集成,默认情况下是关闭的。通过修改配置文件:

feign:
  hystrix:
    enabled: true

开启 Hystrix。

五、Spring Cloud Gateway 网关

1.说明

Spring Cloud Gateway 是Spring官网基于 Spring 5.0、 Spring Boot 2.0、Project Reactor 等技术开发的网关服务,是替代Netflix Zuul的一套解决方案。其组件的核心是一系列的过滤器,通过这些过滤器可以将客户端发送的请求转发(路由)到对应的微服务。 Spring Cloud Gateway 是加在整个微服务最前沿的防火墙和代理器,隐藏微服务结点IP端口信息,从而加强安全保护。Spring Cloud Gateway 本身也是一个微服务,需要注册到Eureka服务注册中心。

2.加入 Gateway 后的架构图

在这里插入图片描述

3.核心

  • 路由(route):路由信息的组成:由一个 ID 、一个目的 URL 、一组断言工厂、一组 Filter 组成。如果路由断言为真,说明请求 URL 和配置路由匹配。
  • 断言(Predicate): Spring Cloud Gateway 中的断言函数输入类型是 Spring 5.0 框架中的 ServerWebExchange 。Spring Cloud Gateway 的断言函数允许开发者去定义匹配来自于 HTTP Request 中的任何信息比如请求头和参数。
  • 过滤器(Filter): 一个标准的 Spring WebFilter。 Spring Cloud Gateway 中的 Filter 分为两种类型的 Filter,分别是 Gateway Filte r和 Global Filter 。过滤器 Filter 将会对请求和响应进行修改处理。
    配置文件内容如下:
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      routes:
        #路由id,可以随意写
        - id: bill-service-route
          #代理的服务地址
          # uri: http://127.0.0.1:9091
          uri: lb://bill-service
          #路由断言,可以配置映射路径
          predicates:
            - Path=/api/bill/**
          filters:
            # 表示过滤1个路径,2表示过滤2个路径,依次类推
            - StripPrefix=1
            # 自定义过滤器
            - MyParam=name
      # 默认过滤器,对所有路由都生效
      default-filters:
        - AddResponseHeader=X-Response-Foo, Bar
        - AddResponseHeader=myname, soda

(学习笔记,仅供参考)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白的Soda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值