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 Cloud Examples Spring Cloud 使用的各种示例,以最简单、最实用为标准 [Spring Cloud 中文索引](https://github.com/ityouknow/awesome-spring-cloud)  |   [Spring Boot学习示例代码](https://github.com/ityouknow/spring-boot-examples)  |   [参与贡献](https://github.com/ityouknow/spring-cloud-examples/issues) [English](README_EN.md)  |   **[github地址](https://github.com/ityouknow/spring-cloud-examples)**  |   **[码云地址](https://gitee.com/ityouknow/spring-cloud-examples)** Spring Cloud 使用的各种示例,以最简单、最实用为标准 **[Spring Boot 2.0 最全使用教程](https://github.com/ityouknow/spring-boot-leaning)** - [spring-cloud-eureka](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-eureka):eureka server单机、双机、集群示例 - [eureka-producer-consumer](https://github.com/ityouknow/spring-cloud-examples/tree/master/eureka-producer-consumer):利用eureka实现服务提供与调用示例 - [spring-cloud-hystrix](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-hystrix):Hystrix熔断的使用示例 - [hystrix-dashboard-turbine](https://github.com/ityouknow/spring-cloud-examples/tree/master/hystrix-dashboard-turbine):熔断监控Hystrix Dashboard和Turbine的示例 - [spring-cloud-config-git](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-config-git):配置中心git版本示例 - [spring-cloud-config-svn-refresh](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-config-svn-refresh):配置中心svn版本示例,客户端refresh版本示例 - [spring-cloud-config-eureka](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-config-eureka):配置中心服务化和高可用代码示例 - [spring-cloud-config-eureka-bus](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-config-eureka-bus):配置中心和消息总线示例(配置中心终结版) - [gateway-service-zuul](https://github.com/ityouknow/spring-cloud-examples/tree/master/gateway-service-zuul):Spring Cloud Zuul使用初级 网关 均衡负载 - [spring-cloud-zuul](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-zuul):Spring Cloud Zuul使用高级 Filter 鉴权 熔断 重试 - [spring-cloud-sleuth-zipkin](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-sleuth-zipkin): 利用Sleuth、Zipkin对Spring Cloud应用进行服务追踪分析 - [spring-boot-admin-eureka](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-boot-admin-eureka): 使用Spring Boot Admin 对Spring Cloud集群进行监控示例 - [spring-cloud-consul](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-consul): Spring Cloud 使用 Consul 作为服务中心示例 - [spring-cloud-gateway](https://github.com/ityouknow/spring-cloud-examples/tree/master/spring-cloud-gateway): Spring Cloud 使用 gateway 的相关示例 学习系列: - [springcloud(一):大话Spring Cloud](http://www.ityouknow.com/springcloud/2017/05/01/simple-springcloud.html) - [springcloud(二):注册中心Eureka](http://www.ityouknow.com/springcloud/2017/05/10/springcloud-eureka.html) - [springcloud(三):服务提供与调用](http://www.ityouknow.com/springcloud/2017/05/12/eureka-provider-constomer.html) - [springcloud(四):熔断器Hystrix](http://www.ityouknow.com/springcloud/2017/05/16/springcloud-hystrix.html) - [springcloud(五):熔断监控Hystrix Dashboard和Turbine](http://www.ityouknow.com/springcloud/2017/05/18/hystrix-dashboard-turbine.html) - [springcloud(六):配置中心git示例](http://www.ityouknow.com/springcloud/2017/05/22/springcloud-config-git.html) - [springcloud(七):配置中心svn示例和refresh](http://www.ityouknow.com/springcloud/2017/05/23/springcloud-config-svn-refresh.html) - [springcloud(八):配置中心服务化和高可用](http://www.ityouknow.com/springcloud/2017/05/25/springcloud-config-eureka.html) - [springcloud(九):配置中心和消息总线(配置中心终结版)](http://www.ityouknow.com/springcloud/2017/05/26/springcloud-config-eureka-bus.html) - [springcloud(十):服务网关zuul](http://www.ityouknow.com/springcloud/2017/06/01/gateway-service-zuul.html) - [springcloud(十一):服务网关Zuul高级](http://www.ityouknow.com/springcloud/2018/01/20/spring-cloud-zuul.html) - [springcloud(十二):使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪](http://www.ityouknow.com/springcloud/2018/02/02/spring-cloud-sleuth-zipkin.html) - [springcloud(十三):Spring Cloud Consul 使用详解](http://www.ityouknow.com/springcloud/2018/07/20/spring-cloud-consul.html) - [Spring Cloud (十四):Spring Cloud 开源软件都有哪些?](http://www.ityouknow.com/springcloud/2018/08/06/spring-cloud-open-source.html) - [springcloud(十五):服务网关 Spring Cloud GateWay 初级](http://www.ityouknow.com/springcloud/2018/12/12/spring-cloud-gateway-start.html) - [springcloud(十六):服务网关 Spring Cloud GateWay 服务化和过滤器](http://www.ityouknow.com/springcloud/2019/01/19/spring-cloud-gateway-service.html) - [springcloud(十七):服务网关 Spring Cloud GateWay 熔断、限流、重试](http://www.ityouknow.com/springcloud/2019/01/26/spring-cloud-gateway-limit.html) 综合: - **[Spring Cloud在国内中小型公司能用起来吗?](http://www.ityouknow.com/springcloud/2017/09/11/can-use-springcloud.html)** - **[中小型互联网公司微服务实践-经验和教训](http://www.ityouknow.com/springcloud/2017/10/19/micro-service-practice.html)** - **[从架构演进的角度聊聊Spring Cloud都做了些什么?](http://www.ityouknow.com/springcloud/2017/11/02/framework-and-springcloud.html)**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值