简单说明一下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
网友评论