对SpringCloud重要概念的理解

116 阅读6分钟

一、服务和服务器

服务:像我们自己的Java应用,Tomcat,Mysql,Redis这些东西都可以称之为服务,服务更多的指的是软件。

服务器(计算机):物理机/虚拟机/云服务统一称为服务器。

二、单体、分布式、集群

单体架构:从架构层面考虑,一个应用只部署一个服务,或该应用有多个服务组成时,只部署在一个服务器。

分布式架构:从架构层面考虑,一个应用的多个服务分别部署在不同的服务器,这种形式都可以称之为分布式。

集群:分布式架构中的一种解决方案,主要用于解决应用单点故障问题,以及提升应用的并发能力。

三、SOA架构:主要目的是为了抽取公共服务,减少代码的重复,提升拓展性,服务间通信采用企业服务消息总线的方式进行调用。

四、微服务架构:是针对SOA架构的一种升级,是一种彻底服务化的架构,将一个大型系统的各个不同模块按照需求拆分成一个一个的服务,各自独立运行。

五:SpringCloud:针对微服务场景下可能出现的各种问题,提供的一系列解决方案的框架集合,是由多个不同框架组成的,我们可以将Spring Cloud看做是微服务下的一个完整的解决方案。

四、什么是负载均衡

通俗的讲,负载均衡就是将工作任务进行分摊到多个服务器上进行执行。
根据负载均衡发生位置的不同,一般分为服务端负载均衡和客户端负载均衡。
服务端负载均衡指的是发生在服务提供者一方,比如常见的Nginx负载均衡。
而客户端负载均衡指的是发生在服务请求的一方,也就是在发送请求之前已经选好了由哪个实例处理请求。
我们在微服务调用关系中一般会选择客户端负载均衡,也就是在服务调用的一方来决定服务由哪个提供者执行。

五、Ribbon支持的负载均衡策略

WeightedResponseTimeRule

策略描述:根据响应时间分配一个weight,响应时间越长,weight越小,被选中的可能性越低。
实现说明:一个后天线程定期的从status里面读取评价响应时间,为每个server计算一个weight。Weight的计算也比较简单responsetime减去每个server自己平均的responsetime是server的权

RoundRobinRule

 策略描述:轮询方式轮询选择server
 实现说明:轮询index,选择index对应位置的server

RandomRul

策略描述:随机选择一个server
实现说明:在index上随机,选择index对应位置的server

ZoneAvoidanceRule(默认)

策略描述:复合判断server所在区域的性能和server的可用性选择server
实现说明:使用ZoneAvoidancePredicate和AvailabilityPredicate来判断是否选择某个server,前一个判断判定一个zone的运行性能是否可用,剔除不可用的zone(的所有server),AvailabilityPredicate用于过滤掉连接数过多的Server

六、远程调用Feign

是什么:是一个SpringCloud提供的http客户端组件,用于使用http协议访问远程服务
为什么用它:能够让我们调用远程服务像调用本地服务一样方便

如何使用:
        。导入依赖
        。在启动类贴上 @EnableFeignClients注解
        。提供一个接口类,在类上贴@FeignClient("远程服务id")注解
            ·提供的方法上贴 @RequestMapping("请求路径")用于表示远程接口的访问路径
            ·参数列表需要贴上相应的注解
                ·路径参数:@PathVariable
                .表单参数(普通类型):@RequestParam
                ·自定义对象:@RequestBody

七、服务熔断降级 Sentinel

什么是服务雪崩:

在分布式系统中,由于网络原因或自身的原因,服务一般无法保证100%可用。
如果一个服务出现了问题,调用这个服务就会出现线程阻塞的情况,此时若有
大量的请求涌入,就会出现多线程阻塞等待,进而导致服务瘫痪。
由于服务与服务之间的依赖性,故障会传播,会对整个服务系统系统
造成灾难性的严重后果,这就是服务故障的“雪崩效应”。

服务器的雪崩效应就是由于某个微小的服务挂了,导致整一大片的服务都不可用。

常见的容错方案:

隔离机制  超时机制  限流机制  熔断/降级

Sentinel是什么?

Sentinel(分布式系统的流量防卫兵)是阿里开源的一个专门应用于容错的综合解决方案,
提供了面向流量控制/熔断降级/系统维度的容错方案控制。

Sentinel中的规则

。重点掌握规则
    流控规则
    熔断规则
。拓展
    热点规则
    授权规则
    系统规则

@SentinelResource注解的使用

·注解的作用:标识一个方法为资源
·可以指定阻塞/异常时降级的方法

八、什么时网关/作用

·网关作为整个应用的唯一入口,若有请求都必须先经过网关,再
请求到对应的微服务

·网关作为微服务的统一入口,可以将针对所有微服务的通用操作封装
在网关中,如认证/监控/限流/服务负载均衡/黑白名单

九、过滤器Filter

过滤器就是在请求的传递过程中,对请求和响应做一些手脚。

在GateWay中,Filter的生命周期只有两个:"pre"和"post"
·PRE:这种过滤器在请求被路由之前调用。我们可以用这种过滤器实现身份验证、
记录调试信息等。
·POST:这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加
标准的HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等。

在Gateway中,Filter的作用范围两种:
    · GatewayFilter:应用到单个路由或者一个分组的路由上。
    · GlobalFilter: 应用到所有的路由上。
    

十、全局路由过滤器

全局过滤器作用所有路由,无需配置。通过全局过滤器可以实现对权限的
统一校验,安全性验证等功能。