微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

springCloud简介

1.Spring Cloud 简介 1.1. 简介 Spring Cloud 是 Spring 旗下的项目之一, 官网地址: http://projects.spring.io/spring-cloud/ Spring 最擅长的就是集成,把世界上最好的框架拿过来,集成到自己的项目中。 Spring Cloud 也是一样,它将现在非常流行的一些技术整合到一起,实现了诸如:配置管理,服务发现,智能路 由,负载均衡,熔断器,控制总线,集群状态等等功能。其主要涉及的组件包括: Netflflix Eureka :注册中心 Zuul :服务网关 Ribbon :负载均衡 Feign :服务调用 Hystrix :熔断器 以上只是其中一部分,架构图:

  2.Eureka 注册中心 2.1.Eureka 简介 问题分析 user-service 对外提供服务,需要对外暴露自己的地址。而 consumer (调用者)需要记录服务 提供者的地址。将来地址出现变更,还需要及时更新。这在服务较少的时候并不觉得有什么,但是在现在日益复杂 的互联网环境,一个项目肯定会拆分出十几,甚至数十个微服务。此时如果还人为管理地址,不仅开发困难,将来 测试、发布上线都会非常麻烦,这与 DevOps 的思想是背道而驰的。 网约车 这就好比是网约车出现以前,人们出门叫车只能叫出租车。一些私家车想做出租却没有资格,被称为黑车。而很多 人想要约车,但是无奈出租车太少,不方便。私家车很多却不敢拦,而且满大街的车,谁知道哪个才是愿意载人 的。一个想要,一个愿意给,就是缺少引子,缺乏管理啊。 此时滴滴这样的网约车平台出现了,所有想载客的私家车全部到滴滴注册,记录你的车型(服务类型),身份信息 (联系方式)。这样提供服务的私家车,在滴滴那里都能找到,一目了然。 此时要叫车的人,只需要打开 APP ,输入你的目的地,选择车型(服务类型),滴滴自动安排一个符合需求的车到 你面前,为你服务,完美! Eureka 做什么? Eureka 就好比是滴滴,负责管理、记录服务提供者的信息。服务调用者无需自己寻找服务,而是把自己的需求告诉 Eureka ,然后 Eureka 会把符合你需求的服务告诉你。 同时,服务提供方与 Eureka 之间通过 “ 心跳 ” 机制进行监控,当某个服务提供方出现问题, Eureka 自然会把它从服 务列表中剔除。 这就实现了服务的自动注册、发现、状态监控。 2.2. 原理图 基本架构:

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

2.3.Eureka 详解 接下来我们详细讲解 Eureka 的原理及配置。 2.3.1. 基础架构 Eureka 架构中的三个核心角色: 服务注册中心 Eureka 的服务端应用,提供服务注册和发现功能 提供服务的应用,可以是 Spring Boot 应用,也可以是其它任意技术实现,只要对外提供的是 REST 风格服务即可。 服务消费者 消费应用从注册中心获取服务列表,从而得知每个服务方的信息,知道去哪里调用服务方。 2.4.2. 高可用的 Eureka Server Eureka Server 即服务的注册中心,在刚才的案例中,我们只有一个 EurekaServer ,事实上 EurekaServer 也可以是 一个集群,形成高可用的 Eureka 中心 。 Eureka Server 是一个 web 应用,可以启动多个实例(配置不同端口)保证 Eureka Server 的高可用 服务同步 多个 Eureka Server 之间也会互相注册为服务,当服务提供者注册到 Eureka Server 集群中的某个节点时,该节点会 把服务的信息同步给集群中的每个节点,从而实现数据同步。因此,无论客户端访问到 Eureka Server 集群中的任 意一个节点,都可以获取到完整的服务列表信息。 而作为客户端,需要把信息注册到每个 Eureka 中

    如果有三个 Eureka ,则每一个 EurekaServer 都需要注册到其它几个 Eureka 服务中。 例如:有三个分别为 10086 、 10087 、 10088 ,则: 10086 要注册到 10087 和 10088 上 10087 要注册到 10086 和 10088 上 10088 要注册到 10086 和 10087 上     3. 负载均衡 Ribbon 在刚才的案例中,我们启动了一个 user-service ,然后通过 discoveryClient 来获取服务实例信息,然后获取 ip 和端 口来访问。 但是实际环境中,我们往往会开启很多个 user-service 的集群。此时我们获取的服务列表中就会有多个,到底该访 问哪一个呢? 一般这种情况下我们就需要编写负载均衡算法,在多个实例列表中进行选择。 不过 Eureka 中已经帮我们集成了负载均衡组件: Ribbon ,简单修改代码即可使用。 什么是 Ribbon :  

    4.Hystrix 4.1. 简介 主页: https://github.com/Netflflix/Hystrix/  

Hystix 是 Netflflix 开源的一个延迟和容错库,用于隔离访问远程服务,防止出现级联失败。 4.2. 雪崩问题 微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用 链路:

 

例如: 微服务 I 发生异常,请求阻塞,用户请求就不会得到响应,则 tomcat 的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞:  

  服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成 雪崩效应。 这就好比,一个汽车生产线,生产不同的汽车,需要使用不同的零件,如果某个零件因为种种原因无法使用,那么 就会造成整台车无法装配,陷入等待零件的状态,直到零件到位,才能继续组装。 此时如果有很多个车型都需要这 个零件,那么整个工厂都将陷入等待的状态,导致所有生产都陷入瘫痪。一个零件的波及范围不断扩大 Hystrix 解决雪崩问题的手段,主要包括:     线程隔离     服务降级   5.Feign   5.1. 简介 为什么叫伪装? Feign 可以把 Rest 的请求进行隐藏,伪装成类似 SpringMVC 的 Controller 一样。你不用再自己拼接 url ,拼接参数等 等操作,一切都交给 Feign 去做。 项目主页: https://github.com/OpenFeign/feign 6. Spring Cloud Gateway 网关 6.1. 简介 Spring Cloud Gateway 是 Spring 官网基于 Spring 5.0 、 Spring Boot 2.0 、 Project Reactor 等技术开发的网关 服务。 Spring Cloud Gateway 基于 Filter 链提供网关基本功能:安全、监控/埋点、限流等。 Spring Cloud Gateway 为微服务架构提供简单、有效且统一的 API 路由管理方式。 Spring Cloud Gateway 是替代 Netflflix Zuul 的一套解决方案。 Spring Cloud Gateway 组件的核心是一系列的过滤器,通过这些过滤器可以将客户端发送的请求转发(路由)到对 应的微服务。 Spring Cloud Gateway 是加在整个微服务最前沿的防火墙和代理器,隐藏微服务结点 IP 端口信息, 从而加强安全保护。 Spring Cloud Gateway 本身也是一个微服务,需要注册到 Eureka 服务注册中心。 网关的核心功能是:过滤和路由   6.2 Gateway 加入后的架构

  6.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 Filter 和 Global Filter 。过滤器 Filter 将会对请求和响应进行修改处理 6.4. 快速入门 需求:通过网关系统 lxs-gateway 将包含有 /user 的请求 路由到 http://127.0.0.1:9091/user/ 用户 id          

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐