SpringCloud入门使用代码篇

什么是SpringCloud

在SpringBoot的基础上构建的微服务框架

使用方式

  1. 引入组件的启动器
  2. 覆盖默认配置
  3. 在引导列上添加相应的注解

Eureka注册中心组件

注册中心,服务的注册于发现

服务端使用操作

  1. 引入服务端启动器:eureka-server
  2. 添加配置
    1. spring.application.name=服务名
    2. eureka.client.service-url.defaultZone=http://localhost:10086/eureka
    3. eureka.server.eviction-interval-timer-in-ms 剔除无效连接的时间间隔
    4. eureka.server.enable-self-preservation 关闭自我保护
  3. @EnableEurekaServer 开启eureka服务端功能

客户端使用操作

  1. 引入启动器:eureka-client
  2. 添加配置
    1. spring-application.name
    2. eureka.client.service-url.defaultZone
    3. eureka.instance.lease-renewal-interval-in-seconds 心跳时间
    4. eureka.instance.lease-expiration-duration-in-seconds 过期时间
    5. eureka.client.register-with-eureka 是否注册给eureka容器(默认true)
    6. eureka.client.fetch-register 是否拉取服务列表(默认true)
    7. eureka.client.registry-fech-interval-seconds 拉取服务的时间间隔
  3. @EnableDiscoveryClient 启用eureka客户端

Ribbon负载均衡组件

eureka、feign以及zuul已集成

使用步骤

  1. 配置负载均衡策略:<服务名>.ribbon.NFLoadBalancerRuleClassName=负载均衡策略的全路径
  2. @LoadBalanced 在RestTemplate的@Bean方法上

Hystrix容错组件

降级

  1. 引入hystrix启动器
  2. 添加配置,超时时间的配置
  3. @EnableCircuitBreaker 启用熔断组件
  4. 可以用@SpringCloudApplication替代
    • @SpringBootApplication
    • @EnableDiscoveryClient
    • @EnableCircuitBreaker

降级代码实现过程

局部

  1. 返回值和参数列表和被熔断的方法一致
  2. 在被熔断的方法上@HystrixCommand(fallbackMethod="熔断方法名")
  3. 返回值和被熔断的方法返回值一致,不能有参数列表

全局

  1. 在类上@DefaultProperties(defaultFallback="全局熔断方法")
  2. 在具体的被熔断方法上@HystrixCommand

熔断

close 关闭状态,所有请求正常访问
open 打开状态,所有请求都无法访问(触发:连续失败的比例大于50%或失败次数不少于20次。维持5s的休眠时间)
half open 半开状态,释放部分请求通过(触发:休眠时间之后)

feign远程调用组件

远程调用组件,内部继承了ribbon和hystrix
使代码更加优雅

使用方式

  1. 引入feign启动器
  2. feign.hystrix.enable-true 开启熔断
  3. @EnableFeignClients 开启feign功能
  4. 定义一个接口 @FeignClient(value="服务名",fallback="熔断实现类.class")
  5. 方法上使用的注解都是springMVC的注解

zuul网关组件

  1. 引入启动器
  2. 添加配置
    • 路由的配置
    • zuul.prefix 路由前缀
    • 四种路由配置方式
      • zuul.routes.<路由名>.path=/service-provider/**
        zuul.routes.<路由名>.url=http://localhost:8081
      • zuul.routes.<路由名>.path=/service-provider/**
        zuul.routes.<路由名>.serviceId=service-provider
      • zuul.routes.<路有名:服务名>=/service-provider/**
        默认服务的入口就是以服务名为前缀,不需要配
  3. @EnableZuulProxy 开启zuul网关组件
  4. 自定义过滤器
    • IZuulFilter 默认的抽象实现类是ZuulFilter
    • filterType(pre post route error)
    • filterOrder 执行顺序,返回值越小,优先值越高
    • shouldFilter 是否执行run方法,true执行
    • run 过滤器的具体逻辑
    • 四种执行顺序
      • pre route post
      • pre/route 异常,error post
      • post 异常,执行 error
      • error 异常,执行error post

你可能感兴趣的:(Spring学习啦啦啦,springcloud,入门,代码)