客户端负载均衡Feign之四:Feign配置
Ribbon配置
在Feign中配置Ribbon非常简单,直接在application.properties中配置即可,如:
# 设置连接超时时间
ribbon.ConnectTimeout=500
# 设置读取超时时间
ribbon.ReadTimeout=5000
# 对所有操作请求都进行重试
ribbon.OkToRetryOnAllOperations=true
# 切换实例的重试次数
ribbon.MaxAutoRetriesNextServer=2
# 对当前实例的重试次数
ribbon.MaxAutoRetries=1
同样也可以指定服务配置,直接在application.properties中采用.ribbon.key=value的格式进行配置,如下:
# 设置针对user-service服务的连接超时时间
user-service.ribbon.ConnectTimeout=600
# 设置针对user-service服务的读取超时时间
user-service.ribbon.ReadTimeout=6000
# 设置针对user-service服务所有操作请求都进行重试
user-service.ribbon.OkToRetryOnAllOperations=true
# 设置针对user-service服务切换实例的重试次数
user-service.ribbon.MaxAutoRetriesNextServer=2
# 设置针对user-service服务的当前实例的重试次数
user-service.ribbon.MaxAutoRetries=1
在SpringCloudFeign中是默认打开重试机制,从上面的配置信息也可以看出,我们可以设置重试的次数。对于重试机制的测试,可以让服务提供方的方法延迟随机毫秒数来测试。
Hystrix配置
对于Hystrix的配置同样可以在application.properties中配置,全局配置直接使用默认前缀hystrix.command.default
,如
# 设置熔断超时时间
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
# 关闭Hystrix功能(不要和上面的配置一起使用)
feign.hystrix.enabled=false
# 关闭熔断功能
hystrix.command.default.execution.timeout.enabled=false
也可以直接对指定的接口进行配置,采用hystrix.command.default.<commandKey>
作为前缀,比如如/findAllUser
:
# 设置熔断超时时间
hystrix.command.findAllUser.execution.isolation.thread.timeoutInMilliseconds=10000
# 关闭熔断功能
hystrix.command.findAllUser.execution.timeout.enabled=false
对于重复的接口名会共用这一条Hystrix配置;
禁用Hystrix
上面的配置信息中,可以通过配置文件全局禁用Hystrix也可以指定接口禁用。我们也可以注解属性的方式禁用Hystrix;
- 构建一个关闭Hystrix的配置类
@Configuration
public class DisableHystrixConfiguration { @Bean
@Scope("prototype")
public Feign.Builder feignBuilder(){
return Feign.builder();
}
}
- 在
@FeignClient
注解中,通过configuration
参数引入上面实现的配置
@FeignClient(value = "USER-SERVICE",configuration = DisableHystrixConfiguration.class)
public interface UserRafactorService extends UserService {
}
服务降级配置
在Hystrix中我们可以直接通过@HystrixCommand注解的fallback参数进行配置降级处理方法,然而Feign对其进行封装,并提供了一种简单的定义方式:
1. 在之前的feign-consumer服务中创建一个UserServiceFallback类,该类实现UserService接口。这里对于哪个类接口的降级就实现哪个接口,
@Component
public class UserServiceFallback implements UserService {
@Override
public List<User> findAll() {
return null;
} @Override
public User finUserById(Long id) {
return new User(-1L,"error",0);
} @Override
public User findUserHeader(String name, Long id, Integer age) {
return new User(-1L,"error",0);
} @Override
public User insertUser(User user) {
return new User(-1L,"error",0);
}
}
- 然后再@FeignClient注解中指定服务降级处理类即可:
@FeignClient(value = "USER-SERVICE",fallback = UserServiceFallback.class)
- 在配置文件中开启Hystrix:
feign:
hystrix:
enabled: true
然后在USER-SERVICE服务中将某个接口设置延迟测试:
请求压缩
Spring Cloud Feign支持对请求和响应进行GZIP压缩,以提高通信效率,配置方式如下:
# 配置请求GZIP压缩
feign.compression.request.enabled=true
# 配置响应GZIP压缩
feign.compression.response.enabled=true
# 配置压缩支持的MIME TYPE
feign.compression.request.mime-types=text/xml,application/xml,application/json
# 配置压缩数据大小的下限
feign.compression.request.min-request-size=2048
日志配置
SpringCloudFeign为每一个FeignClient都提供了一个feign.Logger实例。可以根据logging.level.<FeignClient>
参数配置格式来开启Feign客户端的DEBUG日志,其中<FeignClient>
为Feign客户端定义接口的完整路径。如:
logging:
level:
com.wqh.feign.service.UserService: debug
然后再主类中直接加入Looger.Level的Bean
@Bean
public Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}
这里也可以通过配置,然后在具体的Feign客户端来指定配置类实现日志。
日志级别有下面4类:
- NONE:不记录任何信息;
- BASIC:仅记录请求方法、URL以及响应状态码和执行时间;
- HEADERS:除了记录BASIC级别的信息外,还记录请求和响应的头信息;
- FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据等。
客户端负载均衡Feign之四:Feign配置的更多相关文章
- Spring Cloud负载均衡:使用Feign作客户端负载均衡
有了一篇服务端负载均衡后,再来一篇客户端负载均衡,客户端负载均衡很简单,无需在zuul中做多余配置(本示例不引入zuul),只需要在客户端进行Feign引入和配置即可. 准备工作很简单,实现客户端负载 ...
- 客户端负载均衡Feign之二:Feign 功能介绍
一.Ribboon配置 在Spring cloud Feign中客户端负载均衡是通过Spring cloud Ribbon实现的,所以我们可以直接通过配置Ribbon客户端的方式来自定义各个服务客户端 ...
- 客户端负载均衡Feign之一:申明式服务调用Feign入门示例
Spring Cloud提供了Ribbon和Feign作为客户端的负载均衡. 前面使用了Ribbon做客户端负载均衡,使用Hystrix做容错保护,这两者被作为基础工具类框架被广泛地应用在各个微服务的 ...
- SpringCloud微服务实战二:Spring Cloud Ribbon 负载均衡 + Spring Cloud Feign 声明式调用
1.Spring Cloud Ribbon的作用 Ribbon是Netflix开发的一个负载均衡组件,它在服务体系中起着重要作用,Pivotal将其整合成为Spring Cloud Ribbon,与其 ...
- SpringBoot(三) - Ribbon客户端负载均衡,Zuul网关,Config配置中心
1.Ribbon客户端负载均衡 1.1 依赖 1.2 配置信息 # feign默认加载了ribbon负载均衡,默认负载均衡机制是:轮询 # 负载均衡机制是添加在消费端(客户端)的,如果改为随机,指定服 ...
- springcloud 之Ribbon客户端负载均衡配置使用
pom.xml添加配置说明:这里服务注册与发现用的是Eureka,所以消费者端需要引入eureka,使用EurekaClient来调用服务 <dependency> <groupId ...
- Spring Cloud官方文档中文版-客户端负载均衡:Ribbon
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#_spring_cloud_netflix 文中例子我做了一些测试在:h ...
- spring cloud 使用ribbon简单处理客户端负载均衡
假如我们的multiple服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群. 很简单,我们只需要复制Hello world服务,同时将原来的端口8762修改 ...
- 第四章 客户端负载均衡:Spring Cloud Ribbon
spring cloud ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具,它基于Netflix Ribbon 实现.通过Spring Cloud 的封装,可以轻松的将面向服务的R ...
- 【SpringCloud微服务实战学习系列】客户端负载均衡Spring Cloud Ribbon
Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现.通过Spring Cloud的封装,可以让我们轻松地将面向服务的RES模板 ...
随机推荐
- hdu 1556 A - Color the ball 数状数组做法
#include<bits/stdc++.h> using namespace std; ; int n; int c[maxn]; int lowbit(int x) { return ...
- 《DSP using MATLAB》Problem 5.1
恰逢清明,这几天是清明时节雪纷纷,断崖式降温:又回到了老家,儿时上蹿下跳的核桃树,远去的故乡,远去的时代…… 用到的公式: 这里只放前两个小题的计算过程,都比较简单,细心就行.代码如下: %% --- ...
- LG3809 【模板】后缀排序
题意 题目背景 这是一道模板题. 题目描述 读入一个长度为 $ n $ 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的 ...
- SpringCloud学习
1.SpringCloud的参考博客1 首先主要遇到的问题就是1.写好项目然后放到tomcat或者其他的容器中,然后稍微一点修改就要整个项目重新发布,非常麻烦,这就是微服务出现的契机了 基础知识 PS ...
- static关键字的使用(有个深刻领悟)
没有实例化对象的时候进行可以调用static 属性 static方法 (用类名去调用) 非static定义的方法可以调用static的属性或方法. static定义的方法不能调用非static的方法 ...
- 如何取消noarch.rpm包
有一次部署zabbix服务器,不小心rpm -ivh zabbix的el7版本的rpm了,但是我的系统是centos6.5的,所以就尴尬了 rpm -ivh http://repo.zabbix.co ...
- mysql优化查询
使用索引查询 MariaDB [test]> explain select * from te where id=22; #在没有增加索引情况下,rows为7,即查询行数 +------+--- ...
- spring 自己定义标签 学习二
在上篇中写的仅仅支持写属性,不支持标签property的写法,可是假设有时候我们还想做成支持 property的使用方法,则能够在xsd中添加spring 自带的xsd引用 改动xsd文件例如以下 ...
- 设置 sideload Outlook Add-ins
上期,我们讲到了用前端技术去建立一个outlook add-ins 我们今天来讲解一下怎样测试一个sideload outlook add-ins. 1. 我们需要登录Outlook在Office 3 ...
- mysql全备和增量备份以及恢复过程(percona工具)
实验环境 系统环境,内核版本和xtrabackup工具版本 [root@linux-node1 mysql]# cat /etc/redhat-release CentOS Linux release ...