美文网首页Java
简单说明一下Spring cloud

简单说明一下Spring cloud

作者: 墨语少年 | 来源:发表于2020-03-30 12:16 被阅读0次

    简单说明一下Spring cloud

    Spring Cloud是Spring旗下的项目之一链接: http://projects.spring.io/spring-cloud/.

    Spring cloud最擅长的就是集成,把世界上最好的框架拿过来集成到自己的项目中。

    简单的来说Spring cloud就是一个工具集,包含了许多工具,下面就来介绍一下它所涉及的组件。

    Eureka 注册中心

    作用:主要进行服务管理,定期检查服务,返回服务列表。

    第一步:实例化服务,applicationService

    第二步:将服务注册到Eureka中。

    第三部:Eureka负责记录服务,把服务保存,例如:http://localhost:9091

    第四步:客户消费端从Eureka中拉取服务列表。

    第五步:如何进行拉取,是基于负载均衡,减少了服务端压力。

    第六步:实例化服务定期的向Eureka发送心跳,表示自己存活着,若是没有定期发送心跳,Eureka会把其进行剔除服务。

    如何是实现Eureka集群可用配置

    将user-service服务注册到user-service,一般情况下在yml是一般配置register-with-eureka: false,将false改为true,这样多个user-service就能发现对象,然后进行调用,但重要的一点是,同一台电脑要修改端口,不同的电脑修改端口即可。

    Ribbon 负载均衡

    负载均衡是一种算法,作用是,可以通过算法有效的控制HTTP和TCP客服端的行为。

    若是user-service实现了集群,Ribbon通过算法进行拉取服务,算法例如,一般随机,轮询。

    Hystrix 熔断器

    Hystrix是一个延迟的容错库,用于隔离访问远程服务,防止出现联机失败。

    Hystrix如何解决雪崩效应:

    线程隔离:Hystrix为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队,加速 失败判定时间。

    服务降级:用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超 时,则会进行降级处理。

    服务降级虽然会导致请求失败,但是不会导致阻塞,而且最多会影响这个依赖服务对应的线程池中的资源,对其它服 务没有响应。

    服务降级,一般有两种情况,一种是访问失败次数过多,一种线程池已满。

    熔断器流程

    Closed:关闭状态(断路器关闭),所有请求都正常访问。

    Open:打开状态(断路器打开),所有请求都会被降级。

    Hystrix会对请求情况计数,当一定时间内失败请求百 分比达到阈值,则触发熔断,断路器会完全打开。默认失败比例的阈值是50%,请求次数少不低于20次。

    Half Open:半开状态,不是永久的,断路器打开后会进入休眠时间(默认是5S)。随后断路器会自动进入半开 状态。此时会释放部分请求通过,若这些请求都是健康的,则会关闭断路器,否则继续保持打开,再次进行休 眠计。

    Feign

    feign也叫伪装:feign可以吧Rest请求进行隐藏,伪装成SpringMVC和Controller一样,不用自己再去拼接url和参数一切都交给feign去做就可以了。

    Feign可以配置Feign内置ribbon配置项和Hystrix熔断的Fallback配置。

    负载均衡,服务熔断,请求服务,日志级别,都可以通过配置项feign中开启使用,大大简化了代码的重复性。

    Gateway 网关

    spring Cloud Gateway的核心就是一系列的过滤器,可以将客户端的请求转发到不同的服务器。

    Gateway作为网关其中有一个重要功能,就是实现请求的鉴权。这个动作往往是通过网关提供的过滤器来实现的。

    作用:过滤器和路由。

    路由:路由信息的组成:由一个ID,一个目的URL,一组断言工厂,一组filter组成。如果路由断言为真,说明请求URL和配置路由匹配。

    断言:spring Cloud Gateway中的断言函数输入类型是Spring5.0框架中的serverWebExchange。Spring Cloud Gateway的断言函数允许开发者去定义匹配来自于Http Request中的任何 信息比如请求头和参数。

    **过滤器:**一个标准spring WebFilter。Spring Cloud Gateway中的Filter分为两种类型的Filter,分别 是Gateway Filter和Global Filter。过滤器Filter将会对请求和响应进行修改处理。

    过滤器又分为两种

    **局部过滤器:**通过 spring.cloud.gateway.routes.filters 配置在具体路由下,只作用在当前路由 上;自带的过滤器都可以配置或者自定义按照自带过滤器的方式。如果配置 spring.cloud.gateway.default-filters 上会对所有路由生效也算是全局的过滤器;但是这些过滤器 的实现上都是要实现GatewayFilterFactory接口。

    **全局过滤器:**不需要在配置文件中配置,作用在所有的路由上;实现 GlobalFilter 接口即可。

    跨域:在js请求访问中,如果访问的地址与当前服务器的域名、ip或者端口号不一致则称为跨域请求。若不解决则不 能获取到对应地址的返回结果。

    Config 分布式配置中心

    在分布式系统中,由于服务的数量非常多,配置文件分散在不同的微服务项目中,管理不方便。为了方便配置文件集中管理,需要分布式配置中心组件。

    Config它支持配置文件放在配置服务的本地,也支持放在远程Git仓(HItHub,Git)。

    Bus 服务总线

    作用是:在不重启微服务的情况下更新配置文件。

    Bus是轻量级的消息代理,将分布式的节点连接起来,可以用于广播配置文件的更改或者服务的监控管理。也就是消息总线可以为微服务做监控,也可以实现程序之间的相互通信。

    Spring Cloud Bus可选的消息代理有 RabbitMQ和Kafks。

    差多就这么多组件了,总结的不太太好多见谅哟!!!

    ————————————————

    版权声明:本文为CSDN博主「love_java_life」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/love_java_life/article/details/105175860

    相关文章

      网友评论

        本文标题:简单说明一下Spring cloud

        本文链接:https://www.haomeiwen.com/subject/wlamuhtx.html