Ribbon配置
ribbon的配置其实非常简单,直接在application.properties中配置即可,如下:
1 | # 设置连接超时时间 |
ribbon的配置其实非常简单,直接在application.properties中配置即可,如下:
1 | # 设置连接超时时间 |
网关的构建我们通过下面三个步骤来实现。
首先我们创建一个普通的Spring Boot工程名为api-gateway,然后添加相关依赖,这里我们主要添加两个依赖spring-cloud-starter-zuul和spring-cloud-starter-eureka,spring-cloud-starter-zuul依赖中则包含了ribbon、hystrix、actuator等,如下:
OK,首先我们通过下面六步来创建一个Spring Cloud Feign工程,先来体验下Spring Cloud Feign带给我们的便利。
首先我们来创建一个普通的Spring Boot工程,取名为feign-consumer。
首先我们来创建一个普通的maven工程,叫做hello-service-api,由于我们要在这一个项目中使用SpringMVC的注解,因此创建成功之后,需要添加spring-boot-starter-web依赖,如下:
1 | <dependency> |
我需在在服务提供者中提供两个接口供服务消费者调用,如下:
1 | @RequestMapping("/getbook6") |
Spring Cloud Hystrix 仪表盘与 Turbine 集群监控
不管是监控单体应用还是Turbine集群监控,我们都需要一个Hystrix Dashboard,当然我们可以在要监控的单体应用上继续添加功能,让它也具备仪表盘的功能,但是这样并不符合我们微服务的思想,所以,Hystrix仪表盘我还是单独创建一个新的工程专门用来做Hystrix Dashboard。OK,在Spring Cloud中创建一个Hystrix Dashboard非常简单,如下:
如果我们使用了自定义Hystrix请求命令的方式来使用Hystrix,那么我们只需要重写getCacheKey方法即可实现请求缓存,如下:
1 | public class BookCommand extends HystrixCommand<Book> { |
Spring Cloud Hystrix 的服务降级与异常处理
前面两篇文章中,fallbackMethod所描述的函数实际上就是一个备胎,用来实现服务的降级处理,在注解中我们可以通过fallbackMethod属性来指定降级处理的方法名称,在自定义Hystrix请求命令时我们可以通过重写getFallback函数来处理服务降级之后的逻辑。使用注解来定义服务降级逻辑时,服务降级函数和@HystrixCommand注解要处于同一个类中,同时,服务降级函数在执行过程中也有可能发生异常,所以也可以给服务降级函数添加‘备胎’,如下:
1 | @HystrixCommand(fallbackMethod = "error1") |
我们除了使用@HystrixCommand注解,也可以自定义类继承自HystrixCommand,如下:
1 | public class BookCommand extends HystrixCommand<Book> { |
这是所有负载均衡策略的父接口,里边的核心方法就是choose方法,用来选择一个服务实例。
AbstractLoadBalancerRule是一个抽象类,里边主要定义了一个ILoadBalancer,就是负载均衡器。这里定义它的目的主要是辅助负责均衡策略选取合适的服务端实例。