天天看点

SpringCloud

1,spring cloud 是什么?

  springcloud是一系列框架的有序集合,它基于springboot的开发将一些成熟的框架做的一键部署,省去了复杂的配置和实现.springcloud的组件有发现注册中心,配置中心,智能路由,熔断器,跨域调用,消息总成,负载均衡等.

2,springcloud的优缺点?

  优点:1,降低耦合度,模块容易维护

     2,可以并行开发,提高开发效率

     3,可以使用不同的开发语言,不同的数据库.

     4,配置简单,基本可以使用注解就可以通过组件调用服务通信.

   缺点:1,部署比较麻烦,给运维工程师带来一定的麻烦

      2,维护比较麻烦,以为每个模块可以有自己的数据库

     3,系统测试比较麻烦.

     4,性能监控比较麻烦.

3. springboot和springcloud的区别?

  springboot是用于快速简单开发单个个体的微服务,springcloud是依赖于springboot 来集成管理治理各个微服务的全局协调的.

4,springcloud由什么组成?

  1,nacos 注册发现中心

  2,feign 声明式的web客户服务端. 像调用本地方法一样调用远程

  3,断路器 防止一个服务导宕机致全体服务跟着雪崩

  5,springcloudribbon 客户端负载均衡,有轮询, 

  springgetways 网关

  5,springcloud config 分布式同一配置管理

5,spring cloud 和dubbo区别?

  1,dubbo的注册中心是zookeeper springcloud是eureka,也可以使用zookeeper.

  2,dubbo的调用时rpc,cloud的是rest api

  3,dubbo没有网关等服务.springcloud有断路器和git完美整个的配置中心的同一管理.支持版本控制

6,服务注册和发现是什么意思?spring cloud 如何实现?

  随着服务越来越多,相互调用有错综复杂,如何某些服务地址更改,修改代码维护成本高.于是所有服务在springcloudeureka注册和发现,调用时通脱eureka来完成.

7,什么是eureka的自我保护模式?

默认情况下,当eureka在一定时间内检测不到某个微服务心跳时,eurekaservice会启动自我保护,这时候eurekaservice不会删除注册表中的数据,当网络恢复正常后,会自动退回自我保护模式.

8,eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?

  zookeeper是cp强制性行,eureka是ap高可用.

  当zk中主服务器挂了,进行选举时,注册服务不可用.而eureka集群,只要还有一个服务器就可以正常使用

  

9,eureka的使用步骤

  1,添加依赖spring-cloud-starter-netflix-eureka-server.

  2,配置application.yml文件

  3.在引导类添加注解@enableeurekaserver               这个好像是客户端的@enablediscoveryclient

1,ribbon是做什么的?

  当服务提供者是一个集群是,使用使用discoveryclient获取服务访问的post和host时候,不太好实现赋值均衡的调用.ribbon提供一套完整的配置项,如超时,重试等.简单来说就是,在配置中列出所有的服务,ribbon基于某种规则(如简单轮询,随机连接等)帮你实现连接

2,负载平衡的意义什么?

  负载平衡可以改善计算机网络,磁盘启动器,中央处理器等多种计算机资源工作的负载分布,旨在优化资源使用.也就是说干活多的让休息,干活少的加工作这种.

3,nginx与ribbon的区别?

  nginx是反向代理,客户端请求先发送到nginx,nginx在将请求进行转发

  ribbon是客户端负载均衡,从注册中心读取到访问目标后,在客户端进行轮询策略对服务进行轮询访问,全程在客户端操作.

4,@loadbalanced注解的作用?

  开启客户端的负载均衡.

]

5,ribbon负载均衡策略

        随机: randomrule

        轮询: roundrobinrule

        最小并发: bestavailablerule

        过滤: availabilityfilteringrule

        响应时间: weightedresponsetimerule

        轮询重试: retryrule

        性能可用性: zoneavoidancerule

1,使用步骤?

  (1)pom.xml

  <dependency>

  <groupid>org.springframework.cloud</groupid>

  <artifactid>spring-cloud-starter-openfeign</artifactid>

  </dependency>

  (2)引导类上添加启动注解

  @enablefeignclients

  (3)application.yml/application.properties

  (4)编写服务提供方对应的接口,参考-->接口文档

  @feignclient("servername")

  public interface xxxxx{

       @xxxxmapping("/uri")

       public xxx methodname(....);

  }

  (5)要进行远程调用的类中

  @autowired

  private xxxxx xxxx;

  返回值 result = xxxx.method(参数)

  feign的底层就是ribbon和resttemplate的一个封装.

2,什么是feign?

  feign一个声明web服务客户端,它让我们可以想使用本地方法一样调用远程方法

1,隔离

​    1.1,线程池隔离:将线程池再细分,每个服务都有部分访问线程

​    1.2,信号量隔离:规定访问的次数

2,降级 :相当于在client和server方,默认备用方案.

    2.1,服务端

        2.1.1,引入依赖  [hystix]

        2.1.2,定义降级方法    出现降级的情况:(出现异常,服务调用超时)        

            2.1.2,1:编写降级方法//方法返回值,参数和原方法一样

        2.1.3,在controller类使用@hystrixcommand(fallbackmethod="指定降级后调用的方法",还可以设置hystrix超时时间)注解配置降级方法

        2.1.4,在启动类上开启hystrix功能:@enablecircuitbreaker||或者@springcloudapplication

    2.2,客户端

        2.2.1:在配置类开启feign对hytrix的支持 [feign.hystrix.enabled=true]

        2.2.2:定义feign调用接口实现类.复写方法,及降级方法.使用component,将该类的bean加入springioc容器

        2.2.3: 在@feignclient注解中使用fallback属性设置降级处理类

3,熔断 :hystrix熔断机制,用于监控微服务调用情况,当失败的情况达到预定的阈值(5秒失败20次), 会打开断路器,拒绝所有请求,直到服务恢复正常为止。

        打开-->关闭--半开

4,限流 :限定时间访问次数

1,什么是断路器?

  当一个服务器调用另一个服务器时,由于网络原因或自身原因,调用失败,调用者就会处于等在状态,当更多的服务调用当前服务,导致的连锁反应,就会造成雪崩现象.  

2,断路器有那三种状态?

  1,打开状态,一定时间内,达到一定次数都无法调用,并监控没有恢复的迹象,断路器就会打开,下次访问就不会访问该服务

  2.半打开状态,短时间内服务有恢复迹象,断路器就会将一部分数据交给该服务.正常调用时,断路器关闭

  3,关闭状态,当服务处于正常状态,可以访问,

3,hystrix有四种防雪崩方式?

  服务降级

  服务熔断  

  服务隔离:隔离服务之间的相互影响

  服务监控:服务调用时,会以每秒的调用次数,成功次数,记录下来.

4,服务降级底层是如何实现的?

  hystrix实现服务降级的功能是通过重写hystrixcommand中的getfallback()方法,当hystrix的

run方法或construct执行发生错误时转而执行getfallback()方法。

1,网关的作用是什么?

  网关是所有请求的入口,统一管理微服务请求,负责路由转发,权限控制,负载均衡,安全控制白名单黑名单等.

2,既然nginx可以实现网关?为什么还需要使用zuul框架?

  zuul是使用java编写的,可以对springcloud提供更加灵活的服务.

继续阅读