Feign微服务负载均衡和容错率

Feign微服务负载均衡和容错率

功能说明:

集成了Hystrix和Ribbon,并提供了声明式消费者客户端

功能:为微服务架构提供了Provider之间的负载均衡和系统容错率

如何使用:

创建一个单独的Feign项目,加入依赖:OpenFeign,Eureka Discovery Client,Hystrix

yml配置:

spring:
  application:
    name: feign
server:
  port: 3001
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

主程序注解:

@EnableFeignClients
@SpringCloudApplication
public class Sp09FeignApplication {
	public static void main(String[] args) {
		SpringApplication.run(Sp09FeignApplication.class, args);
	}
}

声明式客户端接口:

@FeignClient(name = "item-service")//这里写的是服务名称
public interface ItemFeignClient {
	//调用后台商品服务,需要指定商品服务的路径
	//这里是把方法中的参数去填充路径中的占位符
	//这里的注解只起到标识作用,处理注解的不是SpringMVC,而是Feign,实现的也是不同的功能
	//相当于访问:item-service/orderId
	@GetMapping("/{orderId}")
	public JsonResult<List<Item>> getItems(@PathVariable String orderId);
}

负载均衡和重试

Feign默认已经启用了负载均衡和重试

也可以在yml中配置

#对所有服务通用
ribbon:
  MaxAutoRetry: 1

#可以先加服务名,再加配置,只对针对服务有效用
#Feign不需要在工厂对象里加,可以直接在yml中加超时时间
item-service:
  ribbon:
    ReadTimeout:1500

降级和熔断

Feign默认不启用降级和熔断,需要添加配置启用hystrix(不推荐)

yml:

feign:
  hystrix:
    enabled: true

默认1秒会降级返回,如果没有降级方法,会显示白板页

Feign的降级方法和Hystrix不太一样

需要在声明式客户端接口的注解上,指定一个fallback方法,注意这里没有引号

@FeignClient(name = "item-service", fallback = ItemFeignClientFB.class)
public interface ItemFeignClient {
	//调用后台商品服务,需要指定商品服务的路径
	//这里是把方法中的参数去填充路径中的占位符
	//这里的注解只起到标识作用,处理注解的不是SpringMVC,而是Feign,实现的也是不同的功能
	//相当于访问:item-service/orderId
	@GetMapping("/{orderId}")
	public JsonResult<List<Item>> getItems(@PathVariable String orderId);
	
	@PostMapping("/decreaseNumber")
	public JsonResult decreaseNumber(@RequestBody List<Item> items);
}

然后创建ItemFeignClientFB,继承ItemFeignClient,实现抽象方法即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值