使用SpringCloud实现Java分布式开发【part-4】:Feign服务调用的介绍及使用、Feign的负载均衡和熔断器、请求压缩和日期级别的配置


SpringCloud简介

Spring Cloud是Spring旗下的项目之一
Spring Cloud并不是一个组件 而是许多组件的集合
其将当下非常流行的一些技术整合到了一起 实现了多个分布式开发中的重要功能
协调了分布式环境中各个系统 并且为各类服务提供模板性的配置

其主要涉及的组件包括:

Eureka:注册中心Zuul或Spring Cloud Gateway:服务网关Ribbon:负载均衡Feign:服务调用Hystrix或Resilience4j:熔断器

【在本篇中 将介绍Feign服务调用】

Feign服务调用

Feign意即伪装

Feign可以将Rest的请求进行隐藏 然后伪装成类似于SpringMVC的Controller一样的形式
无需自己进行指定服务名称 拼接url 拼接参数等繁琐操作 一切都可以交给Feign去做

一、使用步骤

注:在服务消费端进行操作 因为是服务消费端需要使用Feign进行便捷的服务调用

1、添加Feign的Maven依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2、在启动类上添加/@EnableFeignClients注解以开启Feign服务调用功能

@SpringCloudApplication
// 开启Feign服务调用功能
@EnableFeignClients
public class ConsumerApplication {

public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class,args);;
}
}

3、编写Feign客户端
在接口上添加@FeignClient注解 用于声明当前类为Feign客户端 然后并且指定服务名称即可
需要注意的是 Feign客户端其实是一个接口

// @FeignClient注解声明了当前类为Feign客户端 并且指定服务名称 这样即可自动拼接了
@FeignClient("user-service")
public interface UserClient {

// 自动拼接成http://user-service/user/{id}
@GetMapping("/user/{id}")
User queryById(@PathVariable Long id);
}

4、编写控制器
在控制器中引入写好的Feign客户端 然后直接调用Feign客户端中的方法即可

@RestController
@RequestMapping("/consumerfeign")
public class ConsumerFeignController {

// 引入写好的Feign客户端
@Autowired
private UserClient userClient;

@GetMapping("/{id}")
public User queryById(@PathVariable Long id)
{
// 直接调用Feign客户端中的方法即可
return userClient.queryById(id);
}
}

二、Feign的负载均衡和熔断器

Feign已经内置了Ribbon负载均衡和Hystrix熔断器
其实包括负载均衡 服务熔断 请求压缩 日志级别 这些功能都可通过配置项在Feign中开启以使用

1、Ribbon负载均衡配置:

ribbon:
# 连接超时时长 单位为毫秒
ConnectTimeout: 1000
# 数据通信超时时长 单位为毫秒
ReadTimeout: 2000
# 当前服务器的重试次数
MaxAutoRetries: 0
# 重试多少次服务
MaxAutoRetriesNextServer: 0
# 是否对所有的请求方式都重试
OkToRetryOnAllOperations: false

2、Hystrix熔断器配置:

Feign集成的Hystrix默认情况下是关闭的 需要手动在配置中开启:

feign:
hystrix:
# 开启Feign的熔断功能
enabled: true

然后再配置熔断方法Fallback
指定在Feign客户端中当某个方法请求失败 需要调用哪个回调方法
因此 方法名需要一致 即实现该接口即可

// 作为一个组件 记得要加上@Component注解
@Component
public class UserClientFallback implements UserClient {

@Override
public User queryById(Long id) {
User user=new User();
user.setId(id);
user.setName("用户异常,查询失败。");
return user;
}
}

最后 Feign客户端的注解也需要修改一下:

value属性代表要自动调用的服务名称fallback属性代表服务降级类的class

// @FeignClient注解声明了当前类为Feign客户端 并且指定服务名称 这样即可自动拼接了
@FeignClient(value = "user-service",fallback = UserClientFallback.class)
public interface UserClient {

// 自动拼接成http://user-service/user/{id}
@GetMapping("/user/{id}")
User queryById(@PathVariable Long id);
}

测试成功:
使用SpringCloud实现Java分布式开发【part-4】:Feign服务调用的介绍及使用、Feign的负载均衡和熔断器、请求压缩和日期级别的配置

三、请求压缩

Feign支持对请求和响应进行GZIP压缩以减少通信过程中的性能损耗

通过以下参数即可开启请求与响应的压缩功能:

feign:
compression:
request:
# 开启GZIP请求压缩
enabled: true
# 设置压缩的数据类型
mime-types: text/html,application/xml,application/json
# 设置触发压缩的大小下限
min-request-size: 2048
response:
# 开启GZIP响应压缩
enabled: true

四、日志级别

首先 在配置文件中开启日志记录:

# 开启日志记录
logging:
level:
# 这里的属性名为包名 意为记录该包下的所有日志
net.zjitc: debug

然后编写配置类 在配置类中设置日志级别:
Feign支持4种日志级别:

NONE:不记录任何日志信息(默认)BASIC:仅记录请求的方法 URL以及响应状态码和执行时间HEADERS:在BASIC日志级别的基础上额外记录了请求和响应的头信息FULL:记录所有请求和响应的明细 包括头信息 请求体 元数据

// 配置类
@Configuration
public class FeignConfig {

@Bean
Logger.Level feignLoggerLevel()
{
return Logger.Level.FULL;
}
}

最后 在Feign客户端中进行设置即可:

configuration属性代表Feign配置类的class

// @FeignClient注解声明了当前类为Feign客户端 并且指定服务名称 这样即可自动拼接了
@FeignClient(value = "user-service",fallback = UserClientFallback.class,configuration = FeignConfig.class)
public interface UserClient {

// 自动拼接成http://user-service/user/{id}
@GetMapping("/user/{id}")
User queryById(@PathVariable Long id);
}

测试:
日志记录成功
使用SpringCloud实现Java分布式开发【part-4】:Feign服务调用的介绍及使用、Feign的负载均衡和熔断器、请求压缩和日期级别的配置


原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

使用SpringCloud实现Java分布式开发【part-4】:Feign服务调用的介绍及使用、Feign的负载均衡和熔断器、请求压缩和日期级别的配置

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » 使用SpringCloud实现Java分布式开发【part-4】:Feign服务调用的介绍及使用、Feign的负载均衡和熔断器、请求压缩和日期级别的配置
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏